Postfixの設定
メールの基本
インターネット・プロトコル詳説(5):SMTP(Simple Mail Transfer Protocol)~前編 - @IT
SMTP自体はメールの送信要求をサーバへ伝えるだけの役割をもつ。サーバでは、受け取ったメールに対して以下の処理を行う。
- 送信先のドメインが自分の担当ドメインの場合、ローカルのメールボックスに配送する。
- そうでない場合、送信先のドメインに対してSMTPで同じメールを送り直す。
一般に、Gmailなどでメールを送る場合は下の流れが発生しており、1回gmail.comを経由することで、送信者が本当にgmail.comのアカウントをもっており、かつ正規ユーザであることが証明できる。
注意すべき点
SMTP自体は認証機構をもっていないので、POP before SMTPやSMTP-AUTHなどの方法でサーバが責任をもって認証する必要がある。ここをちゃんとしていないと、スパムが勝手にSMTPへメールを送りつけて転送させ、踏み台として使われることがある。こうなるとドメインがブラックリストに登録され、送信サーバとして使えなくなる可能性がある。
メールの送信要求とサーバ間のリレーがまったく同じプロトコルで行われるというのがどうにも古臭く、現代的なシステムに慣れていると直感に反する。
Postfixの設定
以上を踏まえて、Postfixを設定する。ポリシーは以下の通り。
- osak.jpとmail.osak.jpに来たメールはメールボックスに入れる。
- それ以外のドメインが送信先の場合は転送せず、問答無用で弾く。
- osak.jpドメインを使って外部にメールを送ることは、たとえ自分でもできない。
$ sudo postconf -e 'myorigin = $mydomain' # Postfixが送信するメールが、受け取り先でどのドメインから来たように見えるか
$ sudo postconf -e 'mydestination = osak.jp mail.osak.jp' # このドメインに対して送信されたメールはこのマシンで処理する(これ以上転送しない)
$ sudo postconf -e 'smtpd_client_restrictions = reject_unknown_client' # ドメインを引けないIPから接続してきたら弾く
$ sudo postconf -e 'smtpd_recipient_restrictions = reject_unauth_destination' # RCPT TOが外部サーバの時は弾く
参考
- インターネット・プロトコル詳説(5):SMTP(Simple Mail Transfer Protocol)~前編 - @IT
- Postfix Standard Configuration Examples
- Postfix SMTP relay and access control
以下はPostfixドキュメントの日本語訳だが、底本が古い(現在Postfixの最新版は2.11だが、翻訳元が2.2のドキュメントになっている)。
ここにはかつてコメントが表示されていました