Sendmail でのサブミッション・ポート利用

ポート25 番が使えない!?

 昨今の SPAM(スパム)メール、いわゆる迷惑メール対策として、大手商用プロバイダでも色々な対策を取るようになってきました。ですが、なかなか抜本的な効果が上がらずにいます。これまではプロバイダが提供している SMTP サーバを用いるという方法が主でした。ですが、ダイヤルアップ接続後にローカルのメールサーバから大量の SPAM メールを発信するという悪質な手法も見られるようになってきました。

 そのような対策としてプロバイダ側が採用した方法が、『 SMTP ポート(TCP 25番) を制限する 』という手法です。制限のかけられているプロバイダでは、通常メールを送信するためのポート 25 番を禁止にし、専用ポート 587 番を利用するように告知がなされています。このポート 587 がサブミッション・ポート、と呼ばれています。

 ポート 25 番を禁止することで、プロバイダ側にとっては安易に SPAM メールをプロバイダ内のネットワークより送信されることを防ぐ事が出来ます。一方、ユーザにとってはメールソフトの設定を変えなくてはいけず面倒ではあるのですが。。。

 また、ホスティングに見られる専用サーバ・サービスやレンタルサーバにおいても、不正中継の防止やプログラムによる不正なメール送信を防止するため、サブミッション・ポート利用が今後は進んでいくと思います。

 現状、よくあるケースとして、プロバイダさんの側で SMTP ポートを制限されてしまい、外部のメールサーバ(会社なり別のホスティングしているサーバだったり)からのメール送信ができなくなってしまう問題が発生しています。

 そこで、サーバ側では、どのようにメール送信を許可させるか、サブミッション・ポート 587 を使って外部ネットワークのメールサーバからメールを送る方法を以下に整理しました。

Sendmail でのサブミッション・ポート利用(TCP 587)

 このページではサブミッション・ポートを使えるようにするための設定です。    基本的に sendmail.mc の編集→ sendmail.cf の再構築だけで済みます。

sendmail.mc の編集

 まず、/etc/mail/sendmail.mc を開きます

 Fedora Core 4 の sendmail.mc には 120 行目付近に dnl でコメントされた次の行があります。

dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl

 このコメントされている dnl を削除します。

DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl

 また、もう1点注意が必要です。

 112 行目付近にある以下の項目がコメントされていない(先頭に dnl が無い)事を確認しておく必要があります。そうしないと SMTP ポートとして 25 番が開かなくなり、外部サーバから送られてくるメールも受信できなくなってしまいます。

 行中の Addr= の部分は、自分のグローバル IP を記述しておきます。

DAEMON_OPTIONS(`Port=smtp,Addr=210.239.46.254, Name=MTA')dnl

あるいは Addr= の記述を消してしまっても構いません。

DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl

 あとは、sendmail.mc から sendmail.cf の再構築→sendmail の再起動によりポート 587 の利用ができるようになります。

# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
# /sbin/service sendmail restart
sendmail を停止中:                                         [  OK  ]
sm-client を停止中:                                        [  OK  ]
sendmail を起動中:                                         [  OK  ]
sm-client を起動中:                                        [  OK  ]

動作確認

 動作確認は telnet コマンドで簡単に行えます。

# telnet localhost 587
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
Escape character is '^]'.
220 sion.pocketstudio.jp ESMTP Sendmail 8.13.4/8.13.4; Fri, 1 Jul 2005 18:13:24 +0900

 このようにポート 587 が正常に応答してくれれば問題ありません。【 QUIT 】 と入力して通信を終了させます。

 もし

Connection refused

 と表示されたら sendmail.mc の記述が間違っているかもしれません。もう一度、記述を確認してみる必要があります。

その他の設定

 もし iptables や ipchains、もしくはファイアウォール・ルータによって制限をかけている場合、TCP 587 ポートの公開が必要になりますのでご注意下さい。

 最終的には、iptables や ipchains の設定を使い、サーバ内から外に向かって(outbound)の SMTP パケットを遮断するように設定しておけば、設定は完了です。ファイアウォールやルータがあれば、outbound の TCP 25(SMTP)を遮断するだけで比較的簡単に設定できます。

 iptables の説明については別項で上げる予定です。。。ちょっとまってね。。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: Fri, 01 Jul 2005 18:12:56 JST (6814d)