25番ポートブロック

自宅サーバーで、メールサーバーをたてている場合、加入しているプロバイダーによって25番ポートブロックによる制限がかかっている場合があります。Postfixの設定

DVDからサイト構築まで

カテゴリー

おすすめサイト

RSS

25番ポートブロック

2007/08/13 01:03

今までADSL(8Mbpsプラン。実質3Mbps)で続けてきたのですが、ようやく(?)光ファイバーにしました。
先ほど速度を測ってみたら、34Mbpsでした。

25番ポートブロックとは

25番ポートブロックとは、私のようにサーバーをたてている場合、他の外部のメールサーバーの25番ポートにアクセス出来なくする制限です。
たとえば、自鯖でメールサーバーを立ち上げている場合、スパムメールを大量に発送したり、またサーバーが乗っ取られたりして、別のメールサーバーの25番へアクセスしようとするような接続を拒否する制限です。
これは何もサーバーを立ち上げている人だけでなく、ウィルスに感染した場合も同じです。
ウィルスやワームの中には、メールサーバーのような振る舞いをするようなものもあるため、知らないうちにスパムメールをばらまく可能性もあります。

自鯖のメールサーバーに25番ポートブロック

ADSLの時に加入していたプロバイダーも、25番ポートブロック制限はありました。
ただし、用意されたメールサーバーを経由させるだけであとはすんなり。
設定も簡単でした。

プロバイダーのメールサーバーを経由させるためのPostfixの設定

/etc/posffix/main.cf

# プロバイダーから指定されたメールサーバー(mail.example.ne.jp)を記述
relayhost = [mail.example.ne.jp]

認証が必要な場合

ところが、新しいプロバイダーは、この設定でもメールを送信出来ません。
色々調べてみると、指定されたメールサーバーを経由させる前にSMTP認証が必要のようです。

SMTP認証が必要な場合のmain.cf

SMPT認証が必要な制限を加えているプロバイダーは多いようです。
以下は、Postfixの設定です。

#biglobe 25版ポートブロック用relayhost = [mail.example.ne.jp]:25
smtp_sasl_type = cyrus
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous

「smtp_sasl_type」から「smtp_sasl_security_options」の4行が加わりました。
なお、mail.example.ne.jpは、プロバイダーの方で指定されるため適当に変更してください。

これだけではうまく動作しません。
認証用のIDとパスワードファイルが必要です。
/etc/postfix/sasl_passwd
がパスワードファイルを指定する設定です。
この「 sasl_passwd 」の内容は、以下のような感じになります。

[mail.example.ne.jp]:25 aaaaa@bbb.example.ne.jp:password
[mail.example.ne.jp]:25

は、先ほどのプロバイダーから指定されたメールサーバーのドメインと、接続用のポート番号です。
プロバイダーによっては25番ポートではなく、587番ポートを指定するように指示するところもあるようです。

aaaaa@bbb.example.ne.jp

ここは、たいていプロバイダーから与えられたメールアドレスが入ります。

password

ここは、プロバイダーから与えられたメールアドレス用のパスワードになります。

Vine Linuxだとメールを送信出来ない!?

ところが、このような設定にしてもうまく送信出来ません。
メールアドレスやパスワードを色々変えてみても、いっこうに自鯖から外部に向かってメールが送信出来ません。
ファイアーウォール等も調べてみましたが、どうやら指定されたメールサーバーの25番ポートにはアクセス出来ているものの、認証が拒否されてしまうようです。
ログを見てみると、以下のようなエラーが残っていました。

localhost postfix/smtp[26901]: 026CF53835F: to=, relay=none, delay=776, status=deferred
 (connect to mail.example.ne.jp[123.123.123.123]: server dropped connection without sending
 the initial SMTP greeting)

どうも認証がうまくいってないようです。

パケットを調べてみた

色々設定を変えてもうまくいかないので、Vine LinuxにEtherealをインストールしてパケットを調べてみることにしました。
なお、Vine LinuxにEtherealをインストールするのは簡単。

# apt-get install Ethereal 

すると、どうもEHLOコマンドを送信したあと、QUITコマンドで終了している様子。
■色は、自鯖のPostfixが送信している。

220 mail.example.ne.jp SMTP-Gateway Version 2.05 at Sun, 12 Aug 2007 22:17:23 +0900 (JST)
EHLO local
250-mail.example.ne.jp Hello local [222.222.222.222], pleased to meet you
250-AUTH CRAM-MD5 LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE 104857600
250-DSN
250-DELIVERBY
250 HELP
QUIT
221 2.0.0 mail.example.ne.jp closing connection

そもそも、Vine Linux4.0のPostfixがAUTH認証に対応していないのでは??

AUTH認証対応にさせる

結局のところ、デフォルトのVine Linux4.0のPostfixではこの認証に対応していないようなので、以下の方法で対応してあげる必要があります。

# rpm -qa|grep sasl
cyrus-sasl-2.1.18-0vl6
↑ cyrus-sasl-plain , cyrus-sasl-devel , cyrus-sasl-md5 が足りない
[root@localhost postfix]# apt-get install cyrus-sasl-plain 
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了    
以下のパッケージが新たにインストールされます:
  cyrus-sasl-plain
アップグレード: 0 個, 新規インストール: 1 個, 削除: 0 個, 保留: 0 個
22.1kB のアーカイブを取得する必要があります。
展開後に 41.1kB のディスク容量が追加消費されます。
取得:1 http://updates.vinelinux.org 4.1/i386/main cyrus-sasl-plain 2.1.18-0vl6 [22.1kB]
22.1kB を 0s 秒で取得しました (98.6kB/s)
変更を適用しています...
準備中...                   #################################### [100%]
   1:cyrus-sasl-plain       #################################### [100%]
完了
[root@localhost postfix]# apt-get install cyrus-sasl-devel 
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了    
以下のパッケージが新たにインストールされます:
  cyrus-sasl-devel
アップグレード: 0 個, 新規インストール: 1 個, 削除: 0 個, 保留: 0 個
550kB のアーカイブを取得する必要があります。
展開後に 1572kB のディスク容量が追加消費されます。
取得:1 http://updates.vinelinux.org 4.1/i386/main cyrus-sasl-devel 2.1.18-0vl6 [550kB]
550kB を 0s 秒で取得しました (1421kB/s)
変更を適用しています...
準備中...                   #################################### [100%]
   1:cyrus-sasl-devel       #################################### [100%]
完了
[root@localhost postfix]# apt-get install cyrus-sasl-md5 
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了    
以下のパッケージが新たにインストールされます:
  cyrus-sasl-md5
アップグレード: 0 個, 新規インストール: 1 個, 削除: 0 個, 保留: 0 個
49.9kB のアーカイブを取得する必要があります。
展開後に 93.1kB のディスク容量が追加消費されます。
取得:1 http://updates.vinelinux.org 4.1/i386/main cyrus-sasl-md5 2.1.18-0vl6 [49.9kB]
49.9kB を 0s 秒で取得しました (119kB/s)
変更を適用しています...
準備中...                   #################################### [100%]
   1:cyrus-sasl-md5         #################################### [100%]
完了
[root@localhost postfix]# 

つまり「cyrus-sasl-plain」「cyrus-sasl-devel」「 cyrus-sasl-md5」がインストールされてなかったためのようです。
うまくインストール出来たら、saslauthdを起動させます。

# saslauthd start 
saslauthdを起動中:                                         [  OK  ]

次回、Linuxを再起動させたときに自動的に起動させるようにします。

# ランレベル3と5にシンボリックリンクを作成
# ln -s /etc/rc.d/init.d/saslauthd /etc/rc3.d/S99saslauthd
# ln -s /etc/rc.d/init.d/saslauthd /etc/rc5.d/S99saslauthd

あとは、メールキューに貯まったメールを送信してうまく配達出来ていればOKです。

参考サイト

MIME::Base64
Postfix+saslでOP25B対策