qmail の構造と不正中継対策について


SPAM の踏台(第三者不正中継)とは

SPAM メールを送る者は、送り手受け手の双方とも関係のない ホストを使ってメールをばらまきます。 これは、インターネットが「困ったメールは送って上げよう」 という性善説に支えられていた頃の仕様を利用しています。

メールを送る一連の作業は、SMTP (Simple Mail Transfer Protocol) のデーモンである smtpd に SMTP 接続要求をして、 送り手と受け手とメッセージ内容を知らせて配送してもらう、 という手順になります。 smtpd はローカルホストでなくても、他のリモートホストでも 構いません。ここに、SPAM のつけいる隙があります。

                                           foo@receive.org  
   |----------|                             |----------| 
   |  SPAM 者 |                             | 受け手   |
   |----------|                             |----------|  
      |                                      |
      |   SMTP 接続 |-----------|  転送      |
      |-------------|   host    |------------|
                    |-----------|
		     host.domin
		     第三者が中継している

    MAIL FROM: <適当にごまかしができます>
    RCPT TO: <foo@receive.org>
  

踏台にされるのを避けるためには、特に TO を見て、 自分(host.domain )に関係ないメールは 受け取りを拒否してしまうのが一法です。

qmail の構造と メールの受け取り

qmail の構造は、 qmail のページ内 をみて下さい。 この絵の右上にある qmail-smtpd が外部からのメールを受け付ける デーモンです。

このデーモンは、宛先 (MAIL TO:) のドメインが、 ファイル /var/qmail/control/rcpthosts に記載してある 場合しか SMTP 接続を受け付けません。 デフォルトでインストールすると、このファイルには localhost と自ホスト名しか記載されていません (両方とも、ホスト自身です)。 したがって、基本的には外部ドメインに対するメールに対しては、 SMTP 接続を拒否し一切受け取りません。

rcpthosts を消すと、任意の宛先に対するメールを 受け取ってしまうので消してはいけません。

正規な中継は?

では、上の絵で SPAM 者と書いてあるところが、 正規な(許可を与えたい)ホストの場合はどうするのでしょう?

などの方法があります。ここでは tcpserver で制限する方法を 紹介しますが、これは上の絵で SPAM 者と書いたホストの IP アドレスを調べ、/etc/tcp.smtp から作られる データベースに照らし合わせて許可/不許可を決定する方法です。

    rcpthosts       受け手アドレスでの制限
    /etc/tcp.smtp   送り手ホスト IP での制限
  
ということです。

FreeBSD の部屋


Apr. 1, 2000