Postfix での Port 25 Blocking 対策

Outbound Port 25 Blocking により、外部にSMTP が通せない環境でメールサーバを運用する場合、次のいずれかの対応方法をとる必要があります。
1.プロバイダのメールサーバに転送する
2. サブミッションポート(Submission Port)が使える外部のメールサーバに転送する
 
1 の場合で認証が不要な場合は、main.cf に以下を加えることで簡単に対応することができます。
main.cf:

relayhost = smtp.nifty.com

smtp.nifty.com は自分のプロバイダの SMTP サーバに置き換えてください。
 
1 で認証が必要な場合、あるいは、2 の場合は普通認証を必要としますが、この場合は Cyrus SASL 対応の Postfix を使うことで、認証付きのリレーが可能になります。
main.cf:

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/saslpass
relayhost = [smtp.nifty.com]:587
smtp_use_tls = yes # optional

relayhost は自分が使う SMTP サーバ、ポート番号に置き換えてください(587 はサブミッションポートを使う場合)
 
次に、smtp_sasl_password_maps で指定したファイルを作成します。
saslpass:

# 書式:”relayhostに指定した値”<space>”認証ユーザ名”:”認証パスワード”
[smtp.nifty.com]:587 user:pass

作成後、postmap で saslpass.db を生成します。

$ cd /etc/postfix/
$ postmap saslpass

 
このままでも動作しますが、ここでセキュリティを考慮するのであれば、元としたプレインテキストのパスワードファイル saslpass は削除しておくべきでしょう。

$ rm saslpass

 
あとは Postfix を再起動し、好きなメーラを使って動作確認を行えば完了です。ここでは CUI の mail コマンドの例を示します。

$ mail -s test foo@example.com
hello, world
.

(foo@exmple.com は自分が確認できる任意のメールアドレス)
 
参考:
Re: プロパイダのsmtpホストが smtp authを要求してる場合(Postfix-jp ML:1685)
  ぷらら環境での Postfix 設定。
25番ポートブロック対策について(Fedoraで自宅サーバー構築BBS)
  @nifty 環境での Postfix 設定。
Postfix で、Gmail にメールをリレーする(私の二次記憶)
  Postfix + Gmail
postconf(5)(Postfix 日本語マニュアル)