2006年9月9日土曜日

メール環境改革 - サブミッションポート

今回は Outbound Port 25 Blocking を回避するため、
サブミッションポートでメールが送信できるよう qmail を設定します。
最初に、前回の設定からかなりの時間が経過しているので Gentoo Linux のメンテをしました。
メンテといっても以下を実行しただけです。

# emerge sync

しかし、トラブルが発生しました。
/usr/portage/profiles/default-linux/x86/make.defaults がどうのこうのといわれたので、

# cd /etc
# ln -sf /usr/portage/profiles/default-linux/x86/make.defaults make.profile

しましたが、ARCH が定義されていないとか言われて emerge が正常に動きません。
とりあえず、

# echo 'ARCH="x86"' >> /etc/make.conf

すると動くようになりました。
何か弊害があるかもしれませんが、そのときはまた考えるということで。

それではサブミッションポートを設定しましょう。
まず、/etc/services にポートの設定を入れておきます。
以下を実行してもいいですが、
このファイルにはポート番号の若い方から順になっているので、
適切な位置にテキストエディタで書き加えた方が後で見やすいでしょう。

# echo 'submission 587/tcp msa # mail message submission' >> /etc/services
# echo 'submission 587/udp msa # mail message submission' >> /etc/services

ところで、サブミッションポートでは SMTP 認証を入れるべきらしいので、
cmd5checkpw をインストールします。
以下を実行します。

# emerge net-mail/cmd5checkpw

さて qmail の設定です。
以下を実行します。

# cd /var/qmail/supervise
# cp -r qmail-smtpd qmail-smtpd-sub
# cd qmail-smtpd-sub/supervise/
# rm -f *
# cd ../log
# rm -rf *
# cd ../
# vi run
↓以下を編集
/usr/bin/tcpserver の -x オプションを削除
${TCPSERVER_PORT} を 587 に変更
qmail-smtpd の引数に /bin/cmd5checkpw /bin/true を追加
# cd /service
# ln -s /var/qmail/supervise/qmail-smtpd-sub qmail-smtpd-sub

これで、サブミッションポート(ポート587)からのメール送信ができました。
しかし、SMTP 認証で不正なログインをブロックできません。
qmail インストール時のビルドファイルを見ると、
smtp-auth パッチはすでに適用されているような気がしますが、
今さらパッチを当てて再ビルドも面倒なので SMTP 認証はやめにします。
まあ、なくても Outbound Port 25 Blocking は回避できるので問題ないでしょう。
SMTP 認証の代わりに SMTP before POP を残すことにします。
以下を実行します。

# vi /var/qmail/supervise/qmail-smtpd-sub/run
↓以下を編集
/usr/bin/tcpserver の -x オプションを復活
qmail-smtpd の引数の /bin/cmd5checkpw /bin/true を削除
# pkill qmail-smtpd-sub

とここまでやったのですが、
よくよく見ると受付ポート番号だけが異なる2つのプロセスが立ち上がっており無駄ですし、
さらに別のセキュリティ上の理由もあり、
別の方法を使うことにしました。
上記ではふれていないのですが、
cmd5checkpw ではすべてのアカウントに対するパスワードを1つのファイル (/etc/poppasswd) に
平文で書かなければならず、私の好みではないのです。
というわけで、まず先の作業を以下で取り消します。

# cd /service
# rm qmail-smtpd-sub
# pkill qmail-smtpd-sub

さてその別の方法ですが、
NATを使って TCP 587 ポートへのリクエストを TCP 25 にふるだけのことです。
以下を実行します。

# iptables -t nat -A PREROUTING -p tcp --dport 587 -j DNAT --to <mail server's IP address>:25
# /etc/init.d/iptables save
# /etc/init.d/iptables restart

結果、この3行だけで解決したことになります。
えらく遠回りしてしまいましたが、終わりよければすべてよしということで。
次回は SMTP on SSL の設定についてです。

0 件のコメント:

コメントを投稿