qmail+vpopmail
qmail+vpopmailでのメールサーバー(SMTPS、POPS対応)の構築方法をメモ
※ドメイン名はhoge.comとしてあります
必要な物
qmail http://www.qmail.org
qmail-smtp-auth http://members.elysium.pl/brush/qmail-smtpd-auth/
qmail-remote-auth http://tomclegg.net/qmail/#qmail-remote-auth
vpopmail http://vpopmail.sourceforge.net
ucspi-tcp(tcpserver) http://cr.yp.to/ucspi-tcp.html
ucspi-tcp-ssl http://www.nrg4u.com/
事前設定
# qmail関連のユーザー・グループを作成groupadd nofiles
groupadd qmail
useradd -g nofiles -d /var/qmail -s /bin/false qmaild
useradd -g nofiles -d /var/qmail -s /bin/false qmaill
useradd -g nofiles -d /var/qmail -s /bin/false qmailp
useradd -g nofiles -d /var/qmail/alias -s /bin/false alias
useradd -g qmail -d /var/qmail -s /bin/false qmailq
useradd -g qmail -d /var/qmail -s /bin/false qmailr
useradd -g qmail -d /var/qmail -s /bin/false qmails
# vpopmail関連のユーザー・グループを作成
groupadd -g 999 vchkpw
useradd -u 999 -g 999 vpopmail -d /var/vpopmail
インストール
普通にmakeした後、qmailのソース内にあるconfig-fastを以下のように実行
./config-fast hoge.com
設定1(tcpserver)
/etc/tcp.smtpを作成
192.168.3,:allow,RELAYCLIENT=""
作成後、以下を実行
tcprule /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
設定2(vpopmail)
最初にvpopmailが認識するドメイン名を設定しないといけないっぽいので、$VPOPMAIL_ROOT/etc/defaultdomainを以下みたいに設定
hoge.com
その後、binディレクトリ内にあるvadddomain、vadduser等でドメイン・ユーザーを追加する
設定3(qmailその1)
$QMAIL_ROOT/boot/hogeを$QMAIL_ROOT/rcとかにコピー後、Maildir形式に対応させる為以下みたいに修正
exec env - PATH="/path/to/qmail/bin:$PATH" \
qmail-start ./Maildir/ splogger qmail
変えるのは./Maildirにするだけ。んでcontrolにあるファイルを設定
ファイル名: me
hoge.com
ファイル名: rcpthosts
localhost
hoge.com
設定4(qmailその2)
ここでOutBound Port 25 Blockingの対策として$QMAIL_ROOT/control/smtproutesを作成する。事前にプロバイダのサブミッションを調査する必要あり
:プロバイダSMTPサーバーを指定:587
※プロバイダによっては契約IDやパスワードが必要になります
設定(qmailその3)
んでSMTP over SSL等も使いたいので、以下で証明書を作成
openssl req -new -nodes -x509 -keyout qmail.pem -out qmail.pem -days 365
サーバーの起動
サーバーの起動は以下のようにする
# SMTP
tcpserver \
-RH \
-u 999 \
-g 999 \
-x /etc/tcp.smtp.cdb 0 smtp \
/var/qmail/bin/qmail-smtpd hoge.com \
/var/vpopmail/bin/vchkpw /bin/true 2>&1 \
| /var/qmail/bin/splogger smtp 3 &
# SMTPS
tcpserver \
-RH \
-u 999 \
-g 999 \
-s -n /var/qmail/control/qmail.pem \
-x /etc/tcp.smtp.cdb 0 smtp /var/qmail/bin/qmail-smtpd hoge.com \
/var/vpopmail/bin/vchkpw /bin/true 2>&1 \
| /var/qmail/bin/splogger smtp 3 &
# POP3
tcpserver \
-v -RH \
0 pop3 \
/var/qmail/bin/qmail-popup hoge.com \
/var/vpopmail/bin/vchkpw \
/var/qmail/bin/qmail-pop3d Maildir 2>&1 \
| /var/qmail/bin/splogger pop3 3 &
# POP3S
tcpserver \
-v -RH \
-s -n /var/qmail/control/qmail.pem \
0 pop3s \
/var/qmail/bin/qmail-popup hoge.com \
/var/vpopmail/bin/vchkpw \
/var/qmail/bin/qmail-pop3d Maildir 2>&1 \
| /var/qmail/bin/splogger pop3s 3 &
ちなみにalias関連は$VPOPMAIL_ROOT/domains/ドメイン名の場所になるっぽい
補足1
qmail+vpopmailでSMTP認証を行う際にCRAM-MD5で認証させる場合には、vpopmailのvchkpw.cに以下のような修正が必要らしい
int authcram(unsigned char *response, 以下省略) {
hmac_md5(
challenge,
strlen(challenge),
password,
strlen(password),
digest
);
return(strcmp(digascii, response));;
}
を
int authcram(unsigned char *response, 以下省略) {
hmac_md5(
response,
strlen(response),
password,
strlen(password),
digest
);
return(strcmp(digascii, challenge));
}
のように修正しないとCRAM-MD5での認証に失敗する模様
補足2
qmailで携帯にメールしようとするとエラーになり返ってくるので、/path/to/qmail/control/smtproutesを以下のように設定
docomo.ne.jp:中継メールサーバー
ezweb.ne.jp:中継メールサーバー
softbank.ne.jp:中継メールサーバー
プロバイダがOP25Bを適応している場合は中継メールサーバーにはサブミッションポートも指定しないといけない模様