安全なqmailサーバのまとめ
qmailを使って安全なメールサーバを構築する。
今回はsmtp over ssl、 pop over ssl、smtp authを設定しました。
この設定を行うことによって、ポート25のsmtpでは、サーバ自身のドメインのみ、
ポート465のsmtpsでは、smtp authを行うことによって、どのドメインにもリレーをすることができます。
これで不正リレーを防げます。ここで確認することができます。
qmail
まずはじめにqmailをインストールする。
cd /usr/local/src/
必要なソースコード、パッチをダウンロードする。
wget ftp://ftp.jp.qmail.org/qmail/qmail-1.03.tar.gz
wget http://www.stackasterisk.jp/tech/systemConstruction/qmail01/qmail-glibc.patch
wget http://mirror.averse.net/pub/FreeBSD/ports/local-distfiles/sada/qmail-date-localtime.patch.gz
wget http://members.elysium.pl/brush/qmail-smtpd-auth/dist/qmail-smtpd-auth-0.30.tar.gz
wget http://www.sera.desuyo.net/smtp-auth/qmail-smtpd-auth-0.30-iwm.patch
解凍してqmailにパッチを当てる。
tar zxvf qmail-1.03.tar.gz
tar zxvf qmail-smtpd-auth-0.30.tar.gz
gunzip qmail-date-localtime.patch.gz
cp qmail-smtpd-auth-0.30/* qmail-1.03
cd qmail-1.03
patch < ../mail-date-localtime.patch
patch < ../qmail-glibc.patch
patch < auth.patch
patch < ../qmail-smtpd-auth-0.30-iwm.patch
qmialを実行するユーザを追加する。
mkdir /var/qmail
groupadd nofiles
useradd -g nofiles -d /var/qmail/alias alias
useradd -g nofiles -d /var/qmail qmaild
useradd -g nofiles -d /var/qmail qmaill
useradd -g nofiles -d /var/qmail qmailp
groupadd qmail
useradd -g qmail -d /var/qmail qmailq
useradd -g qmail -d /var/qmail qmailr
useradd -g qmail -d /var/qmail qmails
インストール
make setup check
tcpserver
smtpを受信するためにtcpserverをインストールする。
cd /usr/local/src/
ソースをダウンロード
解凍する。
tar zxvf ucspi-tcp-0.88.tar.gz
sslのためにコピーしておく
cp -r ucspi-tcp-0.88 ucspi-tcp-0.88-ssl
cd ucspi-tcp-0.88
エラーが起きたので修正
vi conf-cc
- conf-cc
- gcc -O2 --include /usr/include/errno.h
インストール
make
make setup check
tcpserver_ssl
パッチをダウンロードして当てる。
wget http://www.nrg4u.com/qmail/ucspi-tcp-ssl-20050405.patch.gz
gunzip ucspi-tcp-ssl-20050405.patch.gz
cd ucspi-tcp-0.88-ssl
patch < ../ucspi-tcp-ssl-20050405.patch
make
リネームしてコピーする。
vpopmail
vpopmailのためのユーザを追加する。
groupadd vchkpw
useradd -g vchkpw vpopmailcd /home/vpopmail/etc
vi smtp
vi tcp.smtps
- tcp.smtps
- 127.0.0.:allow,RELAYCLIENT=""
vi smtps
chmod +x smtps
./smtps
ソースをダウンロードし解凍する。
wget http://jaist.dl.sourceforge.net/sourceforge/vpopmail/vpopmail-5.4.19a.tar.gz
tar zxvf vpopmail-5.4.19a.tar.gz
cd vpopmail-5.4.19
コンパイルしてインストール
./configure \
--enable-roaming-users=y \
--enable-relay-clear-minute=60 \
--enable-tcpserver-file=/home/vpopmail/etc/tcp.smtpmake
make install-stripmkdir /usr/local/include/vpopmail
cp /home/vpopmail/include/* /usr/local/include/vpopmail
chmod 755 /home/vpopmail/lib
chmod 644 /home/vpopmail/lib/libvpopmail.a
クローンに追加
vi /etc/crontab
- crontab
- */20 * * * * /bin/cat /dev/null>/home/vpopmail/etc/open-smtp; /home/vpopmail/bin/clearopensmtp 2>&1 > /dev/null
pop3d_ssl
ディレクトリを作成する。
mkdir /var/qmail/service/pop3d_ssl
chmod 1755 /var/qmail/service/pop3d_ssl
スクリプトを作成する。
- pop3d_ssl/run
- #!/bin/sh
- exec env - PATH="/usr/local/bin:/var/qmail/bin:$PATH" \
- tcpserver_ssl -s -R -H -l0 -v -n /var/qmail/cert.pem 0 pop3s qmail-popup domain /home/vpopmail/bin/vchkpw qmail-pop3d Maildir 2>&1
chmod 755 /var/qmail/service/pop3d_ssl/run
mkdir /var/qmail/service/pop3d_ssl/log
chmod 1755 /var/qmail/service/pop3d_ssl/log
ログ用のディレクトリを作成。
mkdir /var/log/pop3d_ssl
chown qmaill.nofiles /var/log/pop3d_ssl
smtpd
ディレクトリを作成する。
mkdir /var/qmail/service/smtpd
chmod 1755 /var/qmail/service/smtpd
スクリプトを作成する。
vi /var/qmail/service/smtpd/run
- smtpd/run
- #!/bin/sh
- exec env - PATH="/usr/local/bin:/var/qmail/bin:$PATH" \
- tcpserver -R -H -l0 -c20 -v -x /home/vpopmail/etc/tcp.smtp.cdb -u qmaild -g nofiles 0 smtp qmail-smtpd
chmod 755 /var/qmail/service/smtpd/run
mkdir /var/qmail/service/smtpd/log
chown qmails.nofiles /var/qmail/service/smtpd/log
chmod 1755 /var/qmail/service/smtpd/logvi /var/qmail/service/smtpd/log/run
- smtpd/log/run
- #!/bin/sh
- exec \
- setuidgid qmaill \
- multilog t /var/log/smtpd
chmod 755 /var/qmail/service/smtpd/log/run
ログ用のディレクトリを作成。
mkdir /var/log/smtpd
chown qmaill.nofiles /var/log/smtpd
smtpd_ssl
ディレクトリを作成する。
mkdir /var/qmail/service/smtpd_ssl
chmod 1755 /var/qmail/service/smtpd_ssl
スクリプトを作成する。
- smtpd_ssl/run
- #!/bin/sh
- exec env - PATH="/usr/local/bin:/var/qmail/bin:$PATH" \
- tcpserver_ssl -s -R -H -l0 -c20 -v -x /home/vpopmail/etc/tcp.smtps.cdb -u qmaild -g nofiles -n /var/qmail/cert.pem 0 smtps qmail-smtpd \
- domain /home/vpopmail/bin/vchkpw /bin/true 2>&1
chmod 755 /var/qmail/service/smtpd_ssl/run
mkdir /var/qmail/service/smtpd_ssl/log
chown qmails.nofiles /var/qmail/service/smtpd_ssl/log
chmod 1755 /var/qmail/service/smtpd_ssl/log
ログ用のディレクトリを作成。
mkdir /var/log/smtpd_ssl
chown qmaill.nofiles /var/log/smtpd_ssl
証明書
cd /var/qmail
PEM1=/tmp/openssl.date +%s
.$$.1
PEM2=/tmp/openssl.date +%s
.$$.2
openssl req -newkey rsa:1024 -keyout $PEM1 -nodes -x509 -days 365 -out $PEM2cat $PEM1 > cert.pem
echo "" >> cert.pem
cat $PEM2 >> cert.pem
rm -f $PEM1 $PEM2
chmod 600 cert.pem
daemontoolに登録
ln -s /var/qmail/service/qmail-send /service
ln -s /var/qmail/service/smtpd /service
ln -s /var/qmail/service/smtpd_ssl /service
ln -s /var/qmail/service/pop3d_ssl /service
以上です。これで安全なメールサーバを構築できます。