迷惑メール対策 OP25B(Outbound Port25 Blocking)についてお勉強

メールログを解析する簡易 Perl スクリプト」 のエントリを書いたそもそもの経緯について話すとメール未達について調べて欲しいと依頼があったのは他でもない Yahoo! メールを使っているユーザについてでした。僕自身も Yahoo! メールのアカウントをもっているのですが検証目的で現状の受信状況を確認してみたら本来スパムと扱って欲しくないメールも何故だか迷惑メールフォルダに入ってしまう場合がありました。

最近はどのプロバイダも同様に迷惑メール対策に積極的に取り組んでいます。たとえば Yahoo! メールを例にとりますと、Yahoo!メール - 迷惑メール対策 - Yahoo!メールの取り組み でポイントが2つあります。

  • OP25B(Outbound Port25 Blocking)に対応
  • なりすまし・フィッシング対策の最新技術「DomainKeys」について

このエントリでは今更ながら感はありつつも、まず - OP25B(Outbound Port25 Blocking)に対応 - がどのようなものなのかを勉強(説明)をしていきます。というか恥ずかしながらつい最近まで自分自身知りませんでした。

- スポンサーリンク -

OP25B(Outbound Port25 Blocking)についてのまとめ

OP25Bについての説明は 「突然メールが送れなくなる!?」迷惑メール対策のOP25Bとは - BroadBand Watch」 がわかりやすいです。

OP25Bとは「Outbound Port25 Blocking」の略称で、メールの送信に使われる25番ポートをブロックし、特定の条件下においてメールの送信を不可能とする仕組み。主に迷惑メール対策として導入されている。

通常、一般的なユーザーがメールを送信する場合にはプロバイダーのSMTPサーバーを利用するが、迷惑メール配信事業者の場合は独自のSMTPサーバーを用意してメール配信を行なうケースが多い。OP25Bにより、プロバイダーのSMTPを利用しないメール送信のパケットをブロックすることで、迷惑メールの送信を防ぐというわけだ。

このため、自分が加入しているプロバイダーの回線とSMTPサーバーを使っているユーザーにはOP25Bの影響はない。また、送信に使う25番ポートのみをブロックするため、110番ポートを使うメール受信では問題なく利用できる。
〜中略〜
SMTPサーバー側でも、OP25Bの実施が進むにつれ、送信ポートの587番対応が広がりはじめている。現在、OP25Bに関わるようなプロバイダーはもちろん、大手レンタルサーバー業者はほぼ軒並み対応しており、あまり問題はないだろう。

もっと視覚的に見たいという方は google のイメージ検索でわかりやすい図がたくさんでてきます。

OP25B の対応状況についてですが、ISP一覧 - OP25B連絡会 で一覧表にまとめられています。各プロバイダがどのような条件で契約している場合に OP25B が発動するかのリンク付きで一覧表になっているので大変になります。


さて OP25B の対処方法としては 25 ポートで送信できない場合は 587 ポートでも送信可能な設定にすれば良いというわけです。たとえば qmail を例に挙げるとするならば 587 ポートを使う smtpd 起動スクリプトを書いてやって起動すれば良いわけです。

つまり /var/qmail/rc を /var/qmail/rc_OP25B って名前でコピーして smtp って部分を 587 へ変更。

#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" qmail-start ./Maildir/ splogger qmail &
/usr/local/bin/tcpserver -RH -l0 -u ユーザid -g グループid -x /etc/tcp.smtp.cdb 0 587 /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 &

次にサービスとして立ち上げるスクリプトとして /etc/init.d/qmail_OP25B なんてのを /etc/init.d/qmail を元にして作成してやって chkconfig でサービス追加すればバッチリ。

#!/bin/sh
PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin
[ -f /var/qmail/rc_OP25B ] || exit 0
case "$1" in
  start)
    # Start daemons.
    echo "Starting qmail."

    # qmail
    csh -cf "/var/qmail/rc_OP25B &"
    
    echo
    touch /var/lock/subsys/qmail_OP25B
    ;;
  stop)
    # Stop daemons.
     echo "Shutting down qmail."
    kill $(/sbin/pidof tcpserver)
    kill $(/sbin/pidof qmail-send)
    echo
    rm -f /var/lock/subsys/qmail_OP25B
    ;;
  restart)
    $0 stop
    $0 start
    ;;
  *)
    echo "Usage: S99qmail {start|stop|restart}"
    exit 1
esac

exit 0

サービス追加したら /etc/init.d/qmail_OP25B start して 587ポートの smtpd を起動する。
確認方法は telnet で実験してみればOKです。黒文字が入力文字。青色がサーバレスポンス文字です。

telnet localhost 587
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 127.0.0.1 ESMTP
HELO 送りたいメールアドレスのドメイン名
250 ドメイン名
MAIL FROM: 送りたいメールアドレス
250 ok
RCPT TO: 送りたいメールアドレス
250 ok
DATA
354 go ahea
TO: 送りたいメールアドレス
From: 送り主のメールアドレス
Subjet: test

Hello world.
.
250 ok 1204611114 qp 27421
QUIT
221 ドメイン名
Connection closed by foreign host.

無事に送信できました。その他メールサーバと OP25B インストール関連についてはここら辺をみると参考になると思います。


とここまで書いて疑問がある訳なんだけども、そもそもポートが 25 → 587 に変わっただけで結局はスパム行為防げないんじゃないかという疑問です。専用サーバとか自宅サーバ立てて 587 ポート対応のメールサーバ立てれば同じじゃないか?あれ?やっぱり理解が間違ってるのかな??各プロバイダが立てている 587 ポートのメールサーバを使えってことなのかな?

う〜ん・・・知識としてアヤシイ部分もありそうです・・・。その場合はご指摘頂ければ幸いです。

- スポンサーリンク -