Postfix Cloudflare 利用時におけるサブドメインのDKIM SPFの設定方法
今まできちんと向き合って来なかったメール設定について、今更ながらきちんと設定してみます。迷惑メールに入るのはまっぴらです。
エラー文言で検索しても出てくるのが英語サイトばかりだったということも有りこちらを書いています。エラー文言経由でたどり着いた人は下の方に進んでください。
基本的な流れはこちらを踏襲
DKIM署名用の秘密鍵と公開鍵の作成
opendkim-genkey -D /etc/opendkim/keys/apar.jp -d apar.jp -s 20141105
ここの形式はこんな感じです。
opendkim-genkey -D 保存フォルダ -d ドメイン -s セレクタ名
セレクタ名は何でも良いので日付でももちろんOKだが、複数ドメインのキーを作る場合で
/etc/opendkim/keys/
以下に全てのキーを作ってしまう場合に日付だけだとファイル名が被ってしまうので注意。
(もちろんフォルダを掘れば良いのだが、設定ファイル書く時面倒な気がする)
上記の理由から下記のコマンドでファイルを作る。
(以下、a.lne.stというサブドメインで設定する場合を例にする)
opendkim-genkey -D /etc/opendkim/keys/ -d a.lne.st -s 20151117a
結果として /etc/opendkim/keys/以下に
- 20151117a.private
- 20151117a.txt
の2つのファイルが出来上がる。
ファイルができたら鍵ファイルの所有者をopendkimにしないとメール送信時にエラーが出るので注意。
chown opendkim:opendkim /etc/opendkim/keys/20151117a.*
CloudFlareへのレコードの登録
サブドメインの場合にハマったのはName属性の書き方でした。サブドメイン入れてなかった。
登録方法
- TYPEをTXT
- Nameを20151117a._domainkey.a
- Valueを p=ここに20151117a.txtの中にあるp=の部分を書く
これでOK。
もう一つレコードが必要
- TYPEをTXT
- Nameをa
- Valueをv=spf1 ptr:lne.st ip4:xxx.xxx.xxx.xxx(サーバのIP) ~all として保存する。
KeyTableの書き方
/etc/opendkim/KeyTable
にこの一行を追加する。
20151117a._domainkey.lne.st a.lne.st:20151117a:/etc/opendkim/keys/20151117a.private
SigningTableの書き方
/etc/opendkim/SigningTable
*@a.lne.st 20151117a._domainkey.lne.st
hostsでハマる
サーバのhosts設定が適当だった為、メールのソースを見るとこんなエラーが出ていた。
Received-SPF: neutral (google.com: xxx.xxx.xxx.xxx is neither permitted nor denied by best guess record for domain of [email protected]) client-ip=xxx.xxx.xxx.xxx;
localhost.localdomainってなっている。そりゃ、このドメインからじゃ認証されませんよね…
/etc/hosts
127.0.0.1 localhost localhost.lne.st localhost4 localhost4.localdomain4
xxx.xxx.xxx.xxx(サーバのIP) a.lne.st
- localhost4の記載は必要なのでしょうか…どなたか教えて下さい…
書き換えてからリロード
service network reload
再度送信してみてメールソースを見てみるとこうなっているはず
Received-SPF: pass (google.com: domain of [email protected] designates xxx.xxx.xxx.xxx as permitted sender) client-ip=xxx.xxx.xxx.xxx;
dkim=temperror (no key for signature) [email protected]
こんなの出る場合。
DNSの設定がダメなパターンです。Cloudflareでやっていたのですが先ほど設定したNameを
20151117a._domainkey
と、サブドメイン抜きで設定してしまっていました。こうすると、a.lne.stというサブドメインに設定されたDKIMの設定を読み出すことが出来ません。
きちんとName設定をしましょう。設定を終えてメールを送信し、メールのソースを見るとdkimがパスしているのが見て取れると思います。
dkim=pass [email protected]
以上の設定でメールの設定は完璧だと思います。
こちらにサーバからメールを送信してみると、何が悪いのか教えてくれるのでオススメです。
が…DNS(僕の場合で言うとCloudflare)の設定については、おかしいよとは言ってくれますが、何がおかしいのかについては自分で調べないといけないので注意ですね。
無事に迷惑メールに入らなくなりました!
備考
Nginx リバースプロキシで設置したWordpressのフォームからメールを送信した時の挙動です。
Author And Source
この問題について(Postfix Cloudflare 利用時におけるサブドメインのDKIM SPFの設定方法), 我々は、より多くの情報をここで見つけました https://qiita.com/geeorgey/items/450b498d2b98b6b868a8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .