ユーザ用ツール

Postfix

概要

インストール

設定

メールの中継

スパムチェックなどの関係で、DHCP割り当てのホストからのSMTP発信は、受信側ではじかれてしまう場合がある。 このため、プロバイダなどが提供するSMTPサーバなどにリレーを要求する必要がある。

main.cf に次の設定を行う。

relayhost = [smtp.xxxx.xxx]

SMTPポート(25)以外を使う場合は、ポート番号も指定する。 但し、465 (SSL/TLS)に関しては、Postfixは単体でその機能をサポートできないので、stunnel などと組み合わせて利用することになり、やや煩雑となる。 1)

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モジュールはここから最新版を取得してビルドする。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認証に失敗してもメールはリジェクトされない。2) 認証の結果が 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

メールサーバ

1)
ここでは割愛する。
2)
デフォルトのFailだとリジェクトされる。

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also, you acknowledge that you have read and understand our Privacy Policy. If you do not agree, please leave the website.

More information