OutBound Port 25 の仕組み −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− 通常、メールを送信する際は下記の3パターンの方法が考えられる。パターン01、およびパターン02 は通常の利用方法として認知されているが、パターン03 は主にSPAM を目的として利用される。 ● パターン01:ISP のMTA を送信メールサーバーとして利用した場合 +--------+ +---------+ +---------+ | 自身PC | −−− | ISP MTA | − NET − | 相手MTA | +--------+ +---------+ +---------+ 経路: −Port25→ −Port25→ ● パターン02:レンタルサーバーのMTA を送信メールサーバーとして利用した場合 +--------+ +---------+ +-------------------+ +---------+ | 自身PC | −−− | ISP MTA | − NET − | RENTAL SERVER MTA | −−− | 相手MTA | +--------+ +---------+ +-------------------+ +---------+ 経路: −Port25−−−−−−−−−→ ● パターン03:自身PC のMTA を送信メールサーバーとして利用した場合 +--------+ +---------+ +-------------------+ +---------+ | 自身PC | −−− | ISP MTA | − NET − | RENTAL SERVER MTA | −−− | 相手MTA | +--------+ +---------+ +-------------------+ +---------+ 経路: − Port25 −−−−−−−−−−−−−−−−−−−−−−−→ パターン03 のような違法送信を防ぐため、ISP 事業者は「− NET −」の箇所に ISP MTA 以外(接続元が固定IP 以外) のPort 25 から送信されるメールを規制した。つまり、自身PC に割り当てられるような、動的IP の Port 25 からのメール送信はできなくなる。この対策をOutbound Port 25 対策と呼ぶ。 # Submission Port 587 の考え方 #---------------------------------------------------------------------------------------------- Outbound Port 25 によりパターン03 のメール送信を規制できるが、パターン02 のメール送信も規制されてしまう。これを防ぐため、レンタルサーバーのMTA では、代替ポート(Submission Port 587) を用意し、自身PC からはPort 587 経由でメール送信を行ってもらう。 ● レンタルサーバーのMTA を送信メールサーバーとして利用した場合(Submission Port 587 対応後) +--------+ +---------+ +-------------------+ +---------+ | 自身PC | −−− | ISP MTA | − NET − | RENTAL SERVER MTA | −−− | 相手MTA | +--------+ +---------+ +-------------------+ +---------+ 対応前経路: −Port25 −−−−−−−−−→ NG 対応後経路: −Port587−−−−−−−−−→ OK −Port25→ また、従来、メールを受付ける「投稿用ポート」とメールを配送する「配送用ポート」はすべてPort 25 で行っていたが、Submission Port 587 の考え方として、「投稿用ポート(出口):587」、「配送用ポート(入り口):25」を分けて運用することにしている。 さらに、従来、メール送信時の認証方法として、POP Before SMTP が利用されていたが、NAT 環境でメール送信したアカウントが特定しづらい、RFC に沿っていないなどの理由で、今後は投稿時にSMTP 認証することが奨励されている。 # qmail によるSubmission Port 587 実装における注意点 #---------------------------------------------------------------------------------------------- qmail によるSubmission Port 587 実装は2通りの方法がある。 ● 1つのqmail-smtpd で投稿用ポート、配送用ポートを運用する際のポイント ・qmail のソースツリーは1つ、tcpserver の定義は投稿用、配送用を用意する ・配送用ポートにアクセスされた場合はrcpthosts ファイルの定義によりメール配送可否を決定する ・投稿用ポートにアクセスされた場合はSMTP 認証を行う ・SMTP 認証を通過した場合はrcpthosts ファイルの定義に関わらずメール配送する ※ 注意 ) qmail でSMTP 認証を行う場合、SMTP 認証のパッチをオリジナルソースに当てる必要があるが、ディフォルトの状態ではSMTP 認証が失敗しても自ドメイン宛のメールは配送できてしまう。つまり、SMTP 認証失敗時に限ってrcpthosts ファイルを無視できない。 この状態を回避するため、専用のパッチ(http://www.aripollak.com/wiki/Main/QmailMSP) が提供されているので当てる必要がある。 ※ 注意 ) SMTP AUTH による認証はvpopmail 付属のvchkpw で行うが、587 ポートを待ち受けるtcpserver サービスはqmaild ユーザーで動作するため、vchkpw プログラムはroot:root 権限とし、stickey bit を立てる必要があります。 ● 専用のqmail-smtpd で投稿用ポート、配送用ポートを運用する際のポイント ・qmail のソースツリー、tcpserver の定義は投稿用、配送用をそれぞれ用意する ・配送用ポートにアクセスされた場合はrcpthosts ファイルの定義によりメール配送可否を決定する ・投稿用ポートにアクセスされた場合はSMTP 認証を行い、通過した場合は配送用ポートにメール転送する ・投稿用ポート宛のすべてのメールを配送用ポートに転送するためsmtpdroute を記載する ・投稿用qmail のrcpthosts はローカル配送しないよう、空白とする ・PC から配送用ポートへの接続を禁止するには、配送用ポートでPOP Before SMTP をしないよう調整する ※ 注意 ) OutBound Port 25 対応が完全になされた場合は個人PCからMTA のPort25 を用いてのメール送信は不要となる。この場合は配送用ポートで一時的に利用可能としているPOP Before SMTP の利用を禁止すべきである。