smtp不正中継対策---tcpserver

[ Nob's Home | qmail ]

smtpの不正中継対策には、tcp-wrapperを用いる方法と以下に説明する
tcpserver で行う方法があります。

  • tcpserverのinsatll
    tcpserverはシステムに標準で装備されているinetdに代わるものです。
    詳しくはtcpserverの解説を参照してください。
    最新版はftp://koobera.math.uic.edu/www/ucspi-tcp.html から入手できます。
    (98.06.08現在 ucspi-tcp-0.80.tar.gz)
    最新版では、従来のtcpcontrolの機能を含むようになりました。
    $ tar zxvf ucspi-tcp-0.80.tar.gz
    $ cd ucspi-tcp-0.80
    $ make
    $ su
    # make setup
    
    defaultでは/usr/local/binにtcpclient,tcpserver,tcprulesなどがinstallされます。

  • /etc/tcp.smtp.cdbの作成
    smtpのアクセスをコントロールするdatabaseファイルを作成します。
    まずコントロールのルールを/etc/tcp.smtpに記述します。
    210.152.***.:allow,RELAYCLIENT=""
    210.129.**.:allow,RELAYCLIENT=""
    127.:allow,RELAYCLIENT=""
    :allow
    
    この内容だと、210.152.***.および210.129.**.のnetworkからのaccessには、
    環境変数RELAYCLIENTを設定することになります。
    この結果/var/qmail/control/rcpthostsの制限が効かなくなり、smtpの中継が許可されます。
    これ以外のnetworkからのsmtpの中継は環境変数RELAYCLIENTが設定されず許可されません。
    # tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
    
    として /etc/tcp.smtp.cdbを作成します。
    /etc/tcp.smtpを変更した場合は、/etc/tcp.smtp.cdbを忘れずに作りなおしてください。

  • /etc/inetd.confの修正
    /etc/inetd.confのsmtpの行を削除/コメントアウトします。
    ps axでinetdのプロセス番号を確認して
    # kill -HUP 
    としてinetdをリスタートします。

  • tcpserverで/var/qmail/bin/qmail-smtpdを起動
    tcpserverで/var/qmail/bin/qmail-smtpdを起動します。
    # tcpserver -u 7791 -g 2108 -x /etc/tcp.smtp.cdb 0 smtp /var/qmail/bin/qmail-smtpd &
    
    -u 7791 は qmaildのUIDです。
    -g 2108 は qmaildが属すnofilesのGIDです。
    システムの起動スクリプト(/etc/rcなど)に上の行を追加しておきます。
    debugには"-v"をつけましょう。

  • [ Nob's Home | qmail ]
    nob@makioka.y-min.or.jp