【Postfix】【さくらVPS】送ったメールが迷惑メール(スパムメール)扱いされないために

送ったメールがスパムメールとして扱われる

【Postfix】【Django1.4】さくらvpsでPostfixを使ってメール送信用サーバを実装した時のメモでメールを送れるようになった. しかしながら,Gmail,Yahoo! Mail, Hotmailに送るとすべてのサービスで迷惑メールと判断されてしまい,迷惑メールフォルダに入れられてしまう.誰も迷惑メールフォルダなんてみることはない.

だから何としても送ったメールがスパム判定されないようにする必要があった.

※ ちなみにこのページによる”スパムメール扱い対策”前のPostfixの設定は上で紹介した記事ののまま

スパムメールとして扱われないようにするために

Gmailスパムメールと扱わなくなるまでに設定しては確認,設定しては確認していった. 設定していった順番は以下の通り.

  1. DNS逆引きレコード変更
  2. SPFの設定
  3. DKIMの設定

DNS逆引きレコード変更

さくらインターネット VPSコントロールパネルよりホスト名がメール送信時のFromと同じドメイン名になっていることを確認

DNSの確認は以下.ドメイン名が表示されればおk.されなかったらただ待つ.

nslookup serverIP

SPFの設定

Sender Policy Framework
送信したFromアドレスのドメイン名とサーバのドメイン名が一致しているかを調べ,一致していたら認証する.これによってアドレス詐称(なりすましなど)をしていない事を受信側が調べ,知ることができる.DNSサーバのゾーンファイルをちょこっと編集するだけで簡単に設定できる.

  • さくらVPSでのSPFレコードの追記の仕方

VPSコントロールパネルのネームサーバ登録から”ドメインリスト”→”ゾーン編集”で設定する.

エントリ名:
@
種別:
TXT
値:
v=spf1 a:ドメイン名 ~all
DNSチェック:
する
TILの指定:
チェックしない

※変更したらデータ送信を忘れずに

DKIMの設定

Domainkeys Identified Mail
送信側で署名し,受信側で署名を照合する.

  • DKIMの主な流れ
送信側: 署名する公開鍵をDNSサーバで公開
送信側: メール送信時にメールにDKIM-Signatureヘッダを追加
受信側: DKIM-Signatureから公開鍵の取得先を取得,公開鍵をゲットして照合

今回はOpenDKIMを使う

インストールと鍵(site_com_selector.txt, site_com_selector.private)の作成
-sは適当なセレクタ名,-dはドメイン名

sudo yum install opendkim
sudo opendkim-genkey -D /etc/opendkim/keys/ -s site_com_selector -d site.com

site_com_selector.txtの内容をゾーンファルに.さくらVPSの場合は,

エントリ名:
site_com_selector
種別:
TXT
値:
v=DKIM1;k=rsa; p=M......B
DNSチェック:
する
TILの指定:
チェックしない

DKIMレコードをチェックする時は以下のように.
ここが詳しい→Checking your DKIM DNS record

nslookup -q=txt site_com_selector._domainkey.site.com
や
dig site_com_selector._domainkey.site.com txt

※ 浸透には一日程度かかることもあるらしいが…

  • /etc/opendkim.confの設定
# 送信と受信
Mode sv

# コメントアウト
# KeyFile /etc/opendkim/keys/default.private

# アンコメント
KeyTable refile:/etc/opendkim/KeyTable

# アンコメント
SigningTable refile:/etc/opendkim/SigningTable

# アンコメント
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts

# アンコメント
InternalHosts refile:/etc/opendkim/TrustedHosts 
  • /etc/opendkim/KeyTableの設定
site_com_selector._domainkey.site.com site.com:site_com_selector:/etc/opendkim/keys/site_com_selector.private
  • /etc/opendkim/SigningTableの設定
*@site.com site_com_selector._domainkey.site.com

OpenDKIMの設定は終了.
次にPostfixの設定

最下部に追加

smtpd_milters = inet:127.0.0.1:8891

Postfixの設定も終了.

sudo service opendkim restart
sudo service postfix restart

/var/log/maillogで問題がなさそうであればおk.あったら設定を見直す

実際に送信してみる

ログを垂れ流しながら送信.

sudo tailf /var/log/maillog

送信した時にOpenDKIMのメッセージ,

DKIM-Signature header added (s=site_com_selector, d=site.com)

が流れれば送信時の対処は問題ない.

おわり

一度迷惑メールと判断されるとそれが解除されるのに時間がかかる (特にGmail)