qmail

tcpserver を用いた SMTP設定

SPAMの踏み台にされる原因は「正当な権限がない人が外から外へメールを送信できる」と言う点につきる。 そのためにメールの転送ルールを次の通りにする。

中からのメールを受け取ったqmailは...
  中へ、外へともに送信可能
外からのメールなら...
  本ドメイン宛てなら	許可
  本ドメイン宛てでないなら	拒絶

この制御を記述するのが /var/qmail/control/rcpthosts である。 このファイルが転送制御を担当する最重要設定項目である。間違った場合はSPAMの踏み台にされる可能性がある。

SMTPサーバ

まずは、SMTPの接続についてである。IP制限は本来はinetdに管理させるのもよいが、djb氏のアプリtcpserver を使う。 おそらくほとんどの資料でもこの方法を使っている。

ucspi-tcp-0.88.tar.gz をとってきてインストール。

解凍して単にインストールする。
make
make setup
make check

とやればよい。

必要なソフトはこれだけでなく、tcpserverが使うデータベースとして cdbもインストールする。

cdb-0.75.tar.gz をとってきてインストール。

インストール方法は上記と同じである。
make
make setup
make check

送信用アクセスデータベースを書く

	

/etc/tcp.smtp と言うファイルを作り、中に

172.20.1.:allow,RELAYCLIENT=""
127.:allow,RELAYCLIENT=""
:allow

と書く。これは下記の意味を持つ。

172.20.1.X からのメールの接続を許可する
ローカルアドレスからのメールの接続を許可する。
あらゆるところからの接続を許可する。

これでは無制限であるが、後に続くRELAYCLIENT環境変数が設定されていれば、無制限転送許可を与えることになる。つまり最後のエントリは「無制限転送許可を与えずに接続を許可する」という意味である.

/usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

と打てば再起動の必要もなく設定が更新される。

SMTPサーバ起動設定

/etc/rc.conf には

qmail_enable="YES"
sendmail_enable="NO"

を追加した。

SMTPの起動設定を行う、下記は一例である

if [ "X${sendmail_enable}" = X"YES" -a -r /etc/sendmail.cf ]; then
   echo -n ' sendmail';    /usr/sbin/sendmail ${sendmail_flags}
elif [ "X${qmail_enable}" = X"YES" -a -r /var/qmail/rc ]; then

   /usr/local/bin/tcpserver -x /etc/tcp.smtp.cdb -u 3002 -g 1001 0 smtp \
   /var/qmail/bin/qmail-smtpd &
   echo -n ' TCPSERVER(smtp)'
 
   echo -n ' qmail';    /var/qmail/rc &
 
 fi

3002 はqmaild 、1001は nofiles のIDである.

この起動スクリプトはrc.localあたりに記述する


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: Sat, 11 Jun 2005 10:50:24 JST (4902d)