qmail(Maildir)のpop before smtp対応
(relay-ctrlによる)

2002年8月24日 改定

メールシステムを使っていると、どうしても出先から社内のメールサーバ(smtpサーバ)を利用したいケースがあります。しかし何も対策せずに社内 のサーバへ外部からのアクセスを許可してしまうと、SPAMメールのリレーに使われるなどの被害に遭ってしまいます。 そこで一般的にはメールサーバへの アクセスにはまずpopサーバへアクセスさせてその認証を通った場合に短時間(1分〜3分程度)だけ、そのマシンからのsmtpサーバへの許可をするとい う方法が取られます。このような手法を「POP Before SMTP」と呼びます。
qmailに対応した「POP Before SMTP」の実装にはいくつか方法がありますがここでは、「relay-ctrl 」というパッケージを利用した例を説明します。
relay-ctrl の特徴としては、従来のqmailのパッケージにパッチを当てなくてもPOP Before SMTPが可能になっています。 このため、POP以外にもAPOPやIMAPでの認証でのSMTP利用が可能です。

なおrelay-ctrlを利用する為には、daemon-toolsを使う必要があるので、Mail(qmail)サーバ構築 を参考にqmailサーバを構築してください。

1.relay-ctrl のインストール

http://www.qmail.org/top.html#checkpasswordSMTP relay control パッケージのページからrelay-ctrl-x.x.x.tar.gz を入手します。入手したパッケージは次の手順で解凍します。

# mkdir /usr/local/man [Enter] # ------/usr/local/manディレクトリがない場合
# tar zxvf relay-ctrl-x.x.x.tar.gz [Enter]
# cd relay-ctrl-x.x.x [Enter]
# make [Enter]
# ./installer [Enter]

#

2.relay-ctrl の設定

1)/var/spool/relay-ctrl/allow ディレクトリを作成し属性を設定します。

# mkdir -p /var/spool/relay-ctrl/allow [Enter]
# chmod 0777 /var/spool/relay-ctrl/allow [Enter]
# chmod 0700 /var/spool/relay-ctrl [Enter]
#

3) /var/qmail/env にRELAY_CTRL_DIR とRELAY_CTRL_EXPIRYいうファイルを以下の内容で作成します。

(/var/qmail/env/RELAY_CTRL_DIR)
/var/spool/relay-ctrl/allow
(/var/qmail/env/RELAY_CTRL_EXPIRY)
90
※この数値(秒)の間、smtpリレーが許可されます。(デフォルト900(15分))

4) /etc/crontab に次の1行を追加します。

* * * * * root /usr/local/bin/envdir /var/qmail/env /usr/local/bin/relay-ctrl-age

5) /var/qmail/supervise/qmail-smtpd/run を次のように修正します。

#!/bin/sh
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
exec /usr/local/bin/envdir /var/qmail/env sh -c '
/usr/local/bin/relay-ctrl-chdir \
/usr/local/bin/softlimit -m 2000000 \
/usr/local/bin/tcpserver -v -p \
-u $QMAILDUID -g $NOFILESGID 0 smtp \
/usr/local/bin/relay-ctrl-check \
/var/qmail/bin/qmail-smtpd 2>&1
'
※tcpserverのオプションで「-x /etc/tcp.smtp.cdb」の部分を外してください。

6) /var/qmail/supervise/qmail-pop3d/run を以下のように修正します。

#!/bin/sh
#
# exec 2>&1
# exec envdir ./env sh -c '
exec envdir /var/qmail/env sh -c '
/usr/local/bin/relay-ctrl-chdir \
softlimit -d6000000 \
tcpserver -v -c 40 0 pop3 \
/var/qmail/bin/qmail-popup $HOST /bin/checkpassword \
/usr/local/bin/relay-ctrl-allow \
/var/qmail/bin/qmail-pop3d Maildir 2>&1

Copyrightc 1998-2003 ROBATA.ORG

Mailwebmaster@robata.org