====== 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 [[メールサーバ]]