~ エンドレスエイト ~ 泥酔しながらFreeBSD環境をVultrからConoHaに移行 ~ ワイルドカードで読み込めないSigningTable ~
5 min read
こんにちは、前回の続きです。タイトルは泥酔ですがもう泥酔してません。
gmailに届かねえ!
いやー困りました。
tail -f /var/log/maillog
見ながら格闘です・・・。
opendkim[1853]: can't load key from /var/db/dkim/eyes4you.org.private: Permission denied
あれ・・・権限不足のようです。
失念してましたがdmarc/dkim
のFreeBSDのデフォルトユーザはmailnull
です。
root@localhost:/usr/local/etc # grep -r mailnull
./rc.d/opendmarc:opendmarc_runas=${opendmarc_runas-"mailnull:mailnull"}
./rc.d/milter-opendkim:: ${milteropendkim_uid:="mailnull"}
./rc.d/milter-opendkim:: ${milteropendkim_gid:="mailnull"}
./rc.d/milter-manager:: ${miltermanager_uid="mailnull"}
つまりはこのopendkimが秘密鍵を読み取れないといけません。
もはやmail.eyes4you.org
とeyes4you.org
で前回も間違って作成してたりするので一新することにします。
ちなみに前回の設定も間違っててConoHaに登録してたレコードもミスってます。
# opendkim-genkey -d eyes4you.org -s mail -D /var/db/dkim/
# cat /var/db/dkim/mail.txt # ここの中身をTXTレコードに追加
mail._domainkey IN TXT ( "v=DKIM1; k=rsa; "
"p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDFdu/VfVVHqUN84IZh739JVf8NW6HAmMBT3+NBcTmkwOGLQ4ye59wvN83CudtnHPKR9vdtL9kJusaWk6wm0HXtZ64dVkjZxg61vrwPWw25Pe1eAkrs8EkdqnCLfeHtsU2g7dBD+gjbJgOKdAhIocPQYQYio0kyMn8M/MlGP60eQQIDAQAB" ) ; ----- DKIM key mail for eyes4you.org
その後に権限付与します。
chown mailnull:mailnull /var/db/dkim/mail.private
chmod 600 /var/db/dkim/mail.private
シンプルです。
今回はワイルドカードのみにしました。
root@localhost:/usr/local/etc/mail # cat SigningTable
*@eyes4you.org mail._domainkey.eyes4you.org
root@localhost:/usr/local/etc/mail # cat KeyTable
mail._domainkey.eyes4you.org eyes4you.org:mail:/var/db/dkim/mail.private
root@localhost:/usr/local/etc/mail #
これでリスタート
service milter-opendkim restart
service postfix restart
tail -f /var/log/maillog
これで、メール送信するが何度やってもgmailの迷惑メールにまた行く・・・。
ログ見ていると
Sep 14 10:59:04 localhost opendkim[974]: B855A20079: no signing table match for 'hoge@eyes4you.org'
となるのです。なんかこれで引っかかったから明示的にhoge@eyes4you.org
をKeyTable
に書いた記憶ある・・・。
でもワイルドカード指定したいのです。
何個かサイトを歩きたどり着きました。
昔も見たなここ・・・。
centos6.3のopendkimで「no signing table match」と出る | CHOICE
SigningTable /etc/opendkim/SigningTable としているなら、 testserver.com default._domainkey.testserver.com というように設定する。あるいは、 SigningTable refile:/etc/opendkim/SigningTable としているなら、 *@testserver.com default._domainkey.testserver.com のように設定しなさいということらしい。
ということなので
root@localhost:/usr/local/etc/mail # cat opendkim.conf
##
## opendkim.conf -- configuration file for OpenDKIM filter
##
## Copyright (c) 2010-2015, The Trusted Domain Project. All rights reserved.
##
Canonicalization simple/simple
Domain eyes4you.org
LogWhy yes
Mode sv
ReportAddress "DKIM Error Postmaster" <postmaster@eyes4you.org>
Selector default
SendReports yes
Socket inet:8891@localhost
SubDomains yes
Syslog Yes
SyslogSuccess yes
UMask 002
InternalHosts /usr/local/etc/mail/TrustedHosts
SigningTable refile:/usr/local/etc/mail/SigningTable # ←ココ
KeyTable /usr/local/etc/mail/KeyTable
ログを見る
root@localhost:/usr/local/etc/mail # tail -f /var/log/maillog
~~~
Sep 14 12:14:52 localhost opendkim[3772]: 21A8E20293: DKIM-Signature field added (s=mail, d=eyes4you.org)
~~~
来ました〜〜〜〜!!!!やったぜ!
SPFレコード、怒られるんやが・・・
どうやらIPv6も有効であるとちゃんとSPFレコードにもIPv6有効にしないと行けなかったようでした。
前はパフォーマンス懸念的に完全に切っていたけどもう気にしていないので登録します。
v=spf1 ip4:ココにIPv4 ip6:ココにIPv6 -all
ちなみに最近知りましたがローカルホストでのIPv6はブラウザでアクセスするときに http://[ココ:に:IPv6:を]:80 みたいに[ ]
でくくると開けるみたいです。
もはや隠す意味もないですがこんな感じです。
VPNで一部WireGuard外にする
OpenAIなどはVPN通信で怒られるのでVPN通信で行わないようにします。
cd /usr/local/
mkdir sh
cd sh
vim route.sh
で以下を入力
#!/usr/local/bin/bash
# リストのドメインを定義
DOMAINS=("chat.openai.com" )
# デフォルトゲートウェイ
GATEWAY="今回の場合はifconfigのvtnet0のinet"
# 各ドメインのIPアドレスを取得し、ルーティングを追加
for DOMAIN in "${DOMAINS[@]}"; do
# ドメインのIPアドレスを取得
IP_ADDRESSES=$(dig +short $DOMAIN | grep [0-9])
# 各IPに対してルーティングを追加
for IP in $IP_ADDRESSES; do
route add $IP $GATEWAY
done
done
ただ今回はIPv6も必要なので注意です。
Nginx
Nginxのログローテート
VultrのFreeBSD使ってて気づいたんですがデフォのログローテート無くて溢れてました。
FreeBSDでは/etc/newsyslog.conf
で設定できるので以下を追加します。
/var/log/nginx/access.log root:wheel 640 7 * @T00 Z
/var/log/nginx/error.log root:wheel 640 7 * @T00 Z
あとはconf
ファイルを移動させます。ConoHa側がVultrをブロックしているのめんどくさいですが、今のマシンを経由して転送します。
thepassenger:[haturatu]:~/migrate-freebsd$ scp darkstar@vultr-freebsd:/home/darkstar/nginx.tar.gz .
nginx.tar.gz 100% 14KB 167.8KB/s 00:00
thepassenger:[haturatu]:~/migrate-freebsd$ scp nginx.tar.gz root@conoha-freebsd:/root/
nginx.tar.gz 100% 14KB 129.1KB/s 00:00
デフォの/usr/local/etc/nginx
を削除してmv
で完了。
バックエンド先はWireGuardのInternal IPに向いているのでクライアント側でWireGuardサーバをConoHaに向けるだけでOKです。
ただ、今回NSをConoHaにする予定なのでマジで面倒です。10個以上ドメイン持っている苦しさが出てきます・・・
素晴らしいことにConoHaはDNSレコード変更用のAPIが公開されているので今回の対応終わったらまとめてDNS変更できるようなの作っておきたいです。
ゾーンファイルインポート|ConoHaドキュメントサイト
あとは、ひたすらに静的ホストしているものや、メールディレクトリ自体をなんとか自分のホストマシン経由でConoHa側に送り・・・・終わり!
最後にfail2ban
ですが、全てWireGuardとのクライアント側疎通確認できてからにします。それではまた。