====== Postfix ======
====== 概要 ======
====== インストール ======
====== 設定 ======
===== メールの中継 =====
スパムチェックなどの関係で、DHCP割り当てのホストからのSMTP発信は、受信側ではじかれてしまう場合がある。
このため、プロバイダなどが提供するSMTPサーバなどにリレーを要求する必要がある。
main.cf に次の設定を行う。
relayhost = [smtp.xxxx.xxx]
SMTPポート(25)以外を使う場合は、ポート番号も指定する。
但し、465 (SSL/TLS)に関しては、Postfixは単体でその機能をサポートできないので、stunnel などと組み合わせて利用することになり、やや煩雑となる。
((ここでは割愛する。))
submission ポート(587)を使う場合は次のようになる。
relayhost = [smtp.xxxx.xxx]:587
リレー先が認証を求めない場合はこれで完了となる。
==== 認証を求められる場合 ====
2015年10月を以て、旧C3-Netのサービスが終了となるため、SMTPのリレーを smtp.c3-net.ne.jpから J:COMのものに置き換える必要が発生した。
C3-Netでは、自身の管理下のIPからのSMTPリレー要求は、認証なしで受け入れてくれていたが、J:COMの方は認証を求められるため、これに対応した設定が必要となる。
main.cf には上記の設定に加えて、次の設定も行う。
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/smtp_auth
smtp_sasl_security_options = noanonymous
リレー先のSMTPサーバがPLAIN以外の認証をサポートしている場合には、smtp_sasl_security_option は特に指定しなくてもいい。
最後に、smtp_sasl_password_mapsで指定したファイルに、SMTPサーバ、IDおよびパスワードを設定する。
[smtp.xxxx.xxx] user_id:password
パスワードは平文で記入するので、このファイルの管理には十分留意すること。
最後に、マップを更新して、postfix をリロードする。
# postmap hash:/etc/postfix/smtp_auth
# /etc/init.d/postfix reload
postfix/postfix-script: refreshing the Postfix mail system
#
==== SPF認証への対応 ====
送信先でのSPF認証に対応するために、DNSに適切なSPFレコードを登録する必要がある。
一般的な、1IPアドレスで運用されているドメインであれば、単純にMXレコードが出ているホスト(IP)で認証されればいいので、次のようになるだろう。
v=spf1 mx ~all
但し、個々のようにリレーを行っている場合は、送信先はリレーしているサーバのIPを以て認証に来るため、上記ではFailになってしまう。
その場合は、リレー先のSPFレコードを取り込めばよい。
v=spf1 mx include:xxx.xxx.xxx ~all
但し、xxx.xxx.xxxで得られるSPFレコードに既に10件のエントリーがある場合は上の設定は機能しないので注意が必要。
===== submission port の設置 =====
===== ウィルスチェック =====
===== SASL Auth =====
===== SPF認証 =====
SPF認証は、外部のPerlまたはPythonのpolicy-spfモジュールと連携して行う。
==== pypolicy-spfの導入 ====
pypolicy-spfモジュールはeasy_installにてアクセス可能なものの、パッケージングに問題があり、easy_installで導入することが出来ない。
このため直接アーカイブを取得して導入する必要がある。
導入に先立ち、pydnsおよびpyspfのモジュールをeasy_installにて導入しておく。
# easy_install pydns
...
# easy_install pyspf
...
#
pypolicy-spfモジュールは[[https://launchpad.net/pypolicyd-spf|ここ]]から最新版を取得してビルドする。2016/6/30現在1.3.2が最新版。
# tar -zxf pypolicyd-spf-1.3.2.tar.gz
# cd pypolicyd-spf-1.3.2
# python setup.py install
...
# cp policyd-spf.conf.commented /etc/postfix/policyd-spf.conf
そのまま運用してもいいが、以下の変更を加えておいた。
Mail_From_reject = False
SPF認証に失敗してもメールはリジェクトされない。((デフォルトのFailだとリジェクトされる。))
認証の結果が Received-SPF: というヘッダでメールに付加されるので、procmailなり、sieveなりで対処すればいいだろう。
Received-SPF: Pass (sender SPF authorized) identity=mailfrom client-ip=...)
のように出ていればSPF認証に成功したということ。
==== postfix の設定。 ====
master.cfに次の行を追加する。
#
# SPF Policy Deamon
#
policy-spf unix - n n - - spawn
user=nobody argv=/usr/bin/python /usr/bin/policyd-spf /etc/postfix/policyd-spf.conf
ついで、main.cfに次の設定を追加する。
policy-spf_time_limit = 3600s
最後に main.cf内の、smtpd_recipient_restrictions に check_policy_service unix:private/policy-spf をreject_unauth_destinationの後に追加する。
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination,check_policy_service unix:private/policy-spf,pcre:/etc/postfix/access_regexp,permit_auth_destination,reject
[[メールサーバ]]