第三者が不正に中継基地として使えるかどうかを テストします。
どちらのサイトも、あなぽこ(長崎ネットワークサービスのは下のあなぽこ) に IP アドレスを入れてスイッチ押すだけです。
いままでの設定で、両方とも合格するはずです。
MAPS によるテストは、 上のテストよりもっとシビアで、 十数種類(著者がやったときは18種類)のあの手この手で 中継させようと試みて来ます。
% telnet mail-abuse.org
今までの設定によるテスト
ホスト名 が host、ドメイン名が domain、 FQDN (Fully Qualified Domain Name)が host.domain なるホストを今設定しているとします。 今までの設定だと、テスト6で アウトになります。
Relay test 6 >>> RSET <<< 250 flushed >>> MAIL FROM:<spamtest@host.domain> <<< 250 ok >>> RCPT TO:<relaytest%mail-abuse.org@host.domain> <<< 250 ok Relay test result Uh oh, host appeared to accept a message for relay. The host may reject this message internally, however Connection closed by foreign host.理由を考えてみた
これはなぜかというと、qmail の SMTP デーモンさん qmail-smtpd は、@host.domain 宛のメールは 宛名が存在しようがなかろうが受け取っちゃうからです (/var/qmail/control/rcpthosts にそう書いてある)。qmail ではユーザが自由にエイリアスを設定できるので、 どんな宛先が設定されているかシステムにはわからない、 ということと関係あるのでしょうか?
どうなるかを考えてみた
受け取ったメールはどうなるかというと、 表書き宛名のユーザ名が不明 (上の例だと、relaytest%mail-abuse.org というユーザはいない) のなので、送り主に送り返そうとします。ところが、表書きの送り主も不明(spamtest@host.domain) ですから、double-bounce として postmaster@host.domain に 送られるはずです。
結局、テスト6の表書きだと、受け取ることは受け取るが、 postmaster に行っておしまい、ということになる。。。はず。
対策を考えてみた
qmail における不正中継の禁止は、基本的には /var/qmail/control/rcpthosts に 受け取りを許可するドメインのみを書く というだけで成り立っています。 また、例外として中継を認めたい場合は、 /etc/tcp.smtp というファイルと tcpserver によって制御しています (逆に、ここからは受け取りたくない、というのも tcpserver で制御できます)。よって、rcpthosts と tcp.smtp を間違えない限り、 不正中継はできないはずです。 MAPS 自身もそう言っている! となれば、MAPS のテストは気にしなーい、 ことにしてもよいのかしらん。
どうしてもテストを通りたかったら、対処療法的に spamtest@host.domain というアドレスを /var/qmail/control/badmailfrom に書く という方法もあります(qmail-send の再起動を忘れずに)。 すると、すべてのテストはパスします。
/var/qmail/control/badmailfrom
spamtest@host.domainしかし本質的な解決にはなっていない。。。