[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[postfix-jp: 1213] PostfixによるMSAの構築



PostfixによるMSAの構築
----------------------

ここでは、Postfixを使ったMSAに必要な最低限の設定を解説します。すでにport
25でSMTP-Authが利用可能であることを前提にしています。使用するOSはFreeBSD、
Postfixは2.2以降です。コマンドは環境に応じて読み替えます。

MSAについては次のページを参照します。
RFC 2476 - Message Submission
http://www.faqs.org/rfcs/rfc2476.html

SMTP-Authについては次のページを参照します。
http://www.postfix.org/SASL_README.html

Postfix 2.2以降ではSMTP over TLSもサポートされています。パスワードの保護
や、サーバ/クライアント認証など、セキュリティ要件しだいでは、SASLによる
SMTP-Authの代替案として考慮します。TLSについては次のページを参照します。
http://www.postfix.org/TLS_README.html

submission対応前のmain.cfは次のようになっているものとします。必要に応じ
て読み替えてください。

mynetworks = 127.0.0.0/8
smtpd_sasl_auth_enable = yes
smtp_sasl_security_options = noplaintext, noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions =
        permit_mynetworks,
        permit_sasl_authenticated,
        reject_unauth_destination,
        permit

アクセス制限の指定方法では、smtpd_recipient_restrictionsにまとめるスタイ
ルを採用しています。必要に応じて読み替えます。

submissionに必要な設定をします。

/etc/servicesにsubmissionがあることを確認します。予約されたport番号は587
です。FreeBSDでは次のようになっています。

> grep submission /etc/services
submission      587/tcp
submission      587/udp

テスト環境として、デフォルトのsmtpdのアクセス制限が適用されないようにMSA
を設定します。条件は、認証されたユーザ以外からのメッセージはすべて拒否で
す。トラブルシューティングを簡単にするためにいくつかのアクセス制限が明示
的に空になっていることに注意してください。master.cfに次のように指定しま
す。詳しくはmaster(5)を参照します。

submission      inet    n       -       n       -       -       smtpd
  -o smtpd_sasl_auth_enable=yes
  -o smtp_sasl_security_options = noplaintext, noanonymous
  -o broken_sasl_auth_clients = yes
  -o smtpd_client_restrictions=
  -o smtpd_helo_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
  -o smtpd_data_restrictions=

master.cfでは、行頭の空白が意味を持ちます。

Postfixを再起動します。OSの起動スクリプトの仕組みを利用するか、次のコマ
ンドを実行します。

# postfix reload

TCP port 587でsmtpdがlistenしていることを確認します。FreeBSDでは次のコマ
ンドを実行します。

> netstat -antL | grep 587
tcp4  0/0/100        *.587

実際にtelnetで接続してみます。

> telnet localhost 587
Trying 127.0.0.1...
Connected to localhost.example.org.
Escape character is '^]'.
220 localhost.example.org ESMTP Postfix (2.3-20050504) Ready. NO UBE NO
UCE C=JP
quit
221 Bye
Connection closed by foreign host.

MUAなどでport 587からSMTP-Authを使って認証したユーザからのメッセージが中
継されることを確認します。それと同時に、認証されていない場合にメッセージ
が*中継されない*ことを確認します。

port 25では、受け取るべき宛先以外のメッセージを拒否するようにmain.cfを書
き換えます。

smtpd_recipient_restrictions =
        permit_mynetworks,
        reject_unauth_destination,
        permit

MUAなどでport 25から認証の如何に関わらず第三者宛のメッセージが*中継され
ない*ことを確認します。

必要に応じて、これまでsmtpdで指定していたアクセス制限(もし必要であれば)
を、master.cfのsubmissionのオプションに追加してください。

トラブルシューティング
----------------------

うまくいかない場合は、次のことを確認してください。

* 移行前の設定で、SMTP-Authがあらかじめ期待した動作をすること
* port 587がF/Wなどでブロックされていないこと
* /var/log/maillogなどsyslogのログ
* debug_peer_levelとdebug_peer_listによるdebugログ

考慮すべき点
------------

パスワードによる認証をする場合は、パスワードが平文で流れることがセキュリ
ティリスクになることがあります。CRAM-MD5などで対策することもできますが、
SMTPセッション全体を暗号化するSMTP over TLSが強く推奨されます。使用する
認証方法は、ユーザに対する影響、セキュリティポリシー、プライバシーポリシー
などを十分考慮し、決定します。

RFC2476にはMSAに求められる要件が示されていますが、ここではすべてを取り上
げません。その代わりに、関連しそうな設定のいくつかを列挙します。詳しくは
postconf(5)を参照します。

strict_rfc821_envelopes
smtpd_reject_unlisted_sender
smtpd_sasl_authenticated_header
reject_non_fqdn_sender
reject_non_fqdn_recipient
reject_sender_login_mismatch

MSAに必要とされる要件でPostfixに実装されていない機能については、policy
severで実装することを検討します。詳しくは次のページを参照します。
http://www.postfix.org/SMTPD_POLICY_README.html

-- 
Tomoyuki Sakurai - Tomi -
mailto:ml-postfix-jp@xxxxxxxxxxxxxxx

_______________________________________________
Postfix-jp-list mailing list
Postfix-jp-list@xxxxxxxxxxxxxxxxxxxx
http://lists.sourceforge.jp/mailman/listinfo/postfix-jp-list


[検索ページ] [Postfix-JP ML Home]