CodeLab技術ブログ

プログラミング技術まとめ

[postfix]CentOSでメール送信サーバーの構築 — gmail yahoo 宛てでも届くように

初期設定ではメールが迷惑メール扱いになってしまうことがあります。
迷惑メール判別の仕組みはいくつかありますが、yahoo等で採用しているSPF認証とDKIMを設定してみます。
これを設定しておけば迷惑メール扱いなりにくくなるはずです。

なお、自ドメインをhoge.jpとしてますのでIPアドレスとともに適宜置き換えてください。

0.前準備
サーバー名がlocalhostなどとなっていると迷惑メール扱いされる場合があるようです
/etc/sysconfig/network ファイルのHOSTNAMEを変更しましょう
HOSTNAME=hoge.jp

/etc/hosts に下記のようにIPとドメイン名を登録
192.168.1.100 hoge.jp

これでサーバーをリスタートすると書き変わるはずです。
hostname コマンドで現在のサーバー名が確認できます。

次に逆引きの設定を確認します
nslookup (サーバーのIP)
ちゃんとIPからドメインが引ければよいですが、引けないようなら設定が必要です。
自前のDNSでない場合はサーバー管理会社に問い合わせてみてください。
例えば、さくらVPSの場合はVPSコントロールパネルにその設定があります。
http://support.sakura.ad.jp/manual/vps/domain/rdns_record.html

postfixの確認
/etc/postfix/main.conf
myhostname = hoge.jp
mydomain = hoge.jp
myorigin = $mydomain
※webサーバーなどで問い合わせフォームなど送信のみに使いたい場合。自ドメイン宛てのメールがローカルに行ってしまうのを防止したい場合は mydestination をコメントアウトします。

1.SPF認証
SPF認証はDNS経由でメール送信サーバーの認証をするための仕組みのようです
まず、事前にDNSのTEXT設定を行います。192.168.0.1は自分のサーバーのIPに変更してください
hoge.jp. 600 IN TXT “v=spf1 ip4:192.168.0.1 ~all”

ちなみに、複数のメールサーバーを使っている場合は、すべて記述しなければなりません。
例えば、google appsを使ってgmailサーバ経由で送っている場合は以下のように設定できます。
hoge.jp. 600 IN TXT “v=spf1 ip4:192.168.0.1 include:aspmx.googlemail.com ~all”

python を使うので、入っていない場合は以下でインストール
yum install python

スポンサードリンク

・pydnsのインストール
cd /usr/local/src
wget http://pypi.python.org/packages/source/p/pydns/pydns-2.3.6.tar.gz
tar xzvf pydns-2.3.6.tar.gz
cd pydns-2.3.6
python setup.py install

・pyspfのインストール
cd /usr/local/src
wget http://pypi.python.org/packages/source/p/pyspf/pyspf-2.0.7.tar.gz
tar xzvf pyspf-2.0.7.tar.gz
cd pyspf-2.0.7
python setup.py instal

・pypolicyd-spfのインストール
以下からインストール
https://launchpad.net/pypolicyd-spf
cd ダウンロード先フォルダ
tar -xzf pypolicyd-spf-1.1.tar.gz
cd pypolicyd-spf-1.1
python setup.py install
cp policyd-spf.conf /etc/postfix/

/etc/postfix/master.cf 追記
policy-spf unix – n n – 0 spawn
user=nobody argv=/usr/bin/python /usr/bin/policyd-spf /etc/postfix-policyd-spf-python/policyd-spf.conf

/etc/postfix/main.cf
policy-spf_time_limit = 3600s
smtpd_recipient_restrictions =
permit_mynetworks,
check_policy_service unix:private/policy-spf

2.OpenDKIMのインストール
yum install opendkim
mkdir /etc/opendkim/keys/hoge.jp
opendkim-genkey -D /etc/opendkim/keys/hoge.jp/ -d hoge.jp -s default
chown -R opendkim:opendkim /etc/opendkim/keys

DNSに登録するデータを確認
下記でDNSに登録するための情報が取得できる。TXTレコードにこれを追加しよう
cat /etc/opendkim/keys/hoge.jp/default.txt

/etc/opendkim.conf の記述を変更
Mode sv
KeyTable refile:/etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts
KeyFile /etc/opendkim/keys/hoge.jp/default.private

/etc/opendkim/KeyTable に下記追加
default._domainkey.hoge.jp hoge.jp:default:/etc/opendkim/keys/hoge.jp/default.private

/etc/opendkim/SigningTable に下記追加
*@hoge.jp default._domainkey.hoge.jp

サービスをスタート
etc/rc.d/init.d/opendkim start
又は
service opendkim start

自動起動ON
chkconfig opendkim on

/etc/postfix/main.cf 最終行に追加
# DKIM
smtpd_milters = inet:127.0.0.1:8891

POSTFIXリスタート
service postfix restart

これでばっちり!なはずw

yahoo mail宛てにメールを送り、ヘッダーを確認してみましょう。
Received-SPF: pass(サーバーアドレス…
dkim=pass (ok);
となっていればOKだと思います。エラーがあると迷惑メールにフィルタリングされますが、ちゃんと届くようになりました。
テストの際は、あまり短いメールとかいい加減な内容だと迷惑メール扱いされることがあるので、適当な文章を入れておいた方がいいでしょう。

スポンサードリンク

コメントは受け付けていません。