「Qmail over SSL でメール通信を暗号化する」 は6編に分けてあります。他の記事は ▼ をご参照ください。
CentOS7 で運用中の Qmail1.03 の設置及び設定方法をメモっておきます。主な特徴は、smtps と imaps を利用して メール通信の暗号化 を実現、Vpopmail w/ QmailAdmin 構成で無限の マルチドメインのメールサーバ に、ezmlm との連動で 大量メール の発射台化、dnscache でさらに 高速化 が実現します。
基本パッケージである qmail-1.03、ucspi-tcp-0.88、daemontools-0.76 を設置して SMTP over SSL の設定まで行います。
Qmail のユーザ・グループを作成
Qmail を MTA に使いますので、Postfix を削除してから設置・設定を行います。
yum list installed |grep postfix # 設置されて入れば消します。 yum -y remove postfix userdel postfix
/usr/local/src/qmail-1.03/INSTALL.ids を参考にし、Qmail ユーザ と グループ を作成します。
mkdir /var/qmail groupadd nofiles useradd -g nofiles -d /var/qmail/alias -s /sbin/nologin -M alias useradd -g nofiles -d /var/qmail -s /sbin/nologin -M qmaild useradd -g nofiles -d /var/qmail -s /sbin/nologin -M qmaill useradd -g nofiles -d /var/qmail -s /sbin/nologin -M qmailp groupadd qmail useradd -g qmail -d /var/qmail -s /sbin/nologin -M qmailq useradd -g qmail -d /var/qmail -s /sbin/nologin -M qmailr useradd -g qmail -d /var/qmail -s /sbin/nologin -M qmails
Qmail-1.03 を設置
※ netqmail 1.06 は対象外です。
cd /usr/local/src wget http://cr.yp.to/software/qmail-1.03.tar.gz wget http://tomclegg.ca/qmail/qmail-smtpd-auth-0.31.tar.gz wget http://qmail.jms1.net/patches/qmail-date-localtime.patch wget http://qmail.org/qmail-smtpd-relay-reject wget http://www.ckdhr.com/ckd/qmail-103.patch tar zxvf qmail-1.03.tar.gz tar zxvf qmail-smtpd-auth-0.31.tar.gz cd qmail-1.03 mv ../qmail-date-localtime.patch ./ mv ../qmail-smtpd-relay-reject ./ mv ../qmail-smtpd-auth-0.31/*.* ./ mv ../qmail-103.patch ./ patch < qmail-date-localtime.patch patch < qmail-smtpd-relay-reject patch < auth.patch patch < qmail-103.patch vi error.h extern int errno; ↓ #include<errno.h> # << redhat系は編集が必要 vi conf-spawn 125 # << 125 - 255以下に変更する(性能チューニング) vi tls.c char *strerror(int); # << 12 line : const char *strerror(int); を左側のように変更する make make setup check ./config-fast mail.example.com # << メールサーバのFQDN
config-fast を実行すると、下記のようなことを自動処理してくれます。
※ もし、正常に動作しない場合はサーバの DNS 設定 ( MXレコード ) に問題がある可能性があります。
echo mail.example.com > /var/qmail/control/me
echo mail.example.com > /var/qmail/control/defaultdomain
echo mail.example.com > /var/qmail/control/plusdomain
echo mail.example.com > /var/qmail/control/locals
echo mail.example.com > /var/qmail/control/rcpthosts
[root@centos7 qmail-1.03]# ./config-fast mail.example.com Your fully qualified host name is mail.example.com. Putting mail.example.com into control/me... Putting example.com into control/defaultdomain... Putting co.jp into control/plusdomain... Putting mail.example.com into control/locals... Putting mail.example.com into control/rcpthosts... Now qmail will refuse to accept SMTP messages except to mail.example.com. Make sure to change rcpthosts if you add hosts to locals or virtualdomains!
ダウンロードしたソースファイルを削除します。( 任意 )
cd /usr/local/src rm -f /usr/local/src/qmail-1.03.tar.gz rm -f /usr/local/src/qmail-smtpd-auth-0.31.tar.gz rm -fr /usr/local/src/qmail-smtpd-auth-0.31
Qmail-1.03 の基本設定
echo 'MANPATH /var/qmail/man' >> /etc/man.config echo ‘20971520’ > /var/qmail/control/databytes # << 受信メールサイズの上限を指定(20MB) touch /var/qmail/control/doublebounceto # << 存在しないメールを処理
エイリアス ( Alias ) を追加
管理者アカウントが admin@example.com の場合、
echo admin@example.com > /var/qmail/alias/.qmail-mailer-daemon echo admin@example.com > /var/qmail/alias/.qmail-postmaster echo admin@example.com > /var/qmail/alias/.qmail-root chmod 644 /var/qmail/alias/.qmail*
ucspi-tcp-0.88 ( tcp server ) を設置
cd /usr/local/src wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz # smtp-ssl 対応 wget http://www.nrg4u.com/qmail/ucspi-tcp-ssl-20050405.patch.gz tar zxvf ucspi-tcp-0.88.tar.gz cd ucspi-tcp-0.88 zcat ../ucspi-tcp-ssl-20050405.patch.gz | patch # << error.h パッチを含む make make setup check cp /usr/local/src/ucspi-tcp-0.88/tcpserver /usr/local/bin/tcpserver-ssl
daemontools-0.76 を設置
daemontools は UNIX サービスの起動、終了、状態監視、ログ取得などを管理するためのツールのコレクションです。
※ Unix のサービス ( または サービス ) とは、
daemontools の設置時に自動的に生成されたservice ディレクトリの下に登録されるものである。( dnscache、qmail、smtpd、smtps )
# 現時点では service ディレクトリは存在しません。サービス登録後のリストです。 [root@centos7 service]# ll /service/ total 0 lrwxrwxrwx 1 root root 20 Dec 20 2016 dnscache -> /var/djbdns/dnscache lrwxrwxrwx 1 root root 24 Dec 19 2016 qmail -> /var/qmail/service/qmail lrwxrwxrwx 1 root root 24 Dec 19 2016 smtpd -> /var/qmail/service/smtpd lrwxrwxrwx 1 root root 24 Dec 19 2016 smtps -> /var/qmail/service/smtps [root@centos7 service]#
設置します。
cd /usr/local/src wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz mkdir -p /package chmod 1755 /package/ cd /package/ cp /usr/local/src/daemontools-0.76.* ./ tar -xzf daemontools-0.76.tar.gz cd admin cd daemontools-0.76/ patch -p1 < /package/daemontools-0.76.errno.patch ./package/install # ↑↑↑ このタイミングで /command、/service ディレクトリが作成されます。
Qmail の Sendmail Wrapper を設定
Microsoft の Outlook Express、Mac OS X Mail のような MUA ( Mail User Agent ) が Qmail を利用できるようになります。
mv /usr/lib/sendmail /usr/lib/sendmail.old mv /usr/sbin/sendmail /usr/sbin/sendmail.old ln -s /var/qmail/bin/sendmail /usr/lib ln -s /var/qmail/bin/sendmail /usr/sbin
qmail を daemontools のサービスに登録する
登録までの流れは下記のようになります。
Qmail のホームディレクトリの下に service ディレクトリを作成 → その下に必要なサービスを追加 → スクリプトを作成 → 追加したサービスはソフトリングを掛けて daemontools のサービスに登録する
Qmail のホームディレクトリの下に service ディレクトリを作成
ここでは、qmail、smtpd、smtps というサービスを追加します。
サービス名は任意です。適宜、変更してください。
mkdir /var/qmail/service
その下に必要なサービスを追加:qmail
mkdir /var/qmail/service/qmail mkdir /var/qmail/service/qmail/log chmod +t /var/qmail/service/qmail
登録サービス qmail の run script を作成
cd /usr/local/src wget https://github.com/shomichiru/qmail-script/raw/master/qmail-run-script.txt wget https://github.com/shomichiru/qmail-script/raw/master/qmail-log-run-script.txt mv qmail-run-script.txt /var/qmail/service/qmail/run mv qmail-log-run-script.txt /var/qmail/service/qmail/log/run chmod +x /var/qmail/service/qmail/run chmod +x /var/qmail/service/qmail/log/run mkdir /var/log/qmail chown qmaill:nofiles /var/log/qmail chmod 777 /var/log/qmail
追加したサービスはソフトリングを掛けて daemontools のサービスに登録する:qmail
ln -s /var/qmail/service/qmail /service/qmail
smtpd を daemontools のサービスに登録する
mkdir /var/qmail/service/smtpd mkdir /var/qmail/service/smtpd/log chmod +t /var/qmail/service/smtpd cd /usr/local/src wget https://github.com/shomichiru/qmail-script/raw/master/smtpd-run-script.txt wget https://github.com/shomichiru/qmail-script/raw/master/smtpd-log-run-script.txt vi smtpd-run-script.txt example.com ↓ 実際のドメインに適宜、変更する mv smtpd-run-script.txt /var/qmail/service/smtpd/run mv smtpd-log-run-script.txt /var/qmail/service/smtpd/log/run chmod +x /var/qmail/service/smtpd/run chmod +x /var/qmail/service/smtpd/log/run mkdir /var/log/qmail/smtpd chown qmails:nofiles /var/log/qmail/smtpd chmod 777 /var/log/qmail/smtpd ln -s /var/qmail/service/smtpd /service/smtpd
smtps を daemontools のサービスに登録する
SMTP over SSL 用の X.509キーを作成
登録前に SMTP over SSLを適用するため、X.509キーを作成 します。
有効期間を10年 ( 任意 ) -days3650、保存場所を /var/qmail/control/servercert.pem に指定します。Common Name(CN) は、IMAP over SSL の設定(mail.example.com)と重複しないように smtp.example.com に設定します。
[root@centos7 ~]# openssl req -newkey rsa:2048 -x509 -nodes -days 3650 -out /var/qmail/control/servercert.pem -keyout /var/qmail/control/servercert.pem # 適宜、情報を入力します。 Country Name (2 letter code) [XX]:JP State or Province Name (full name) []:TOKYO Locality Name (eg, city) [Default City]:Shinagawa Organization Name (eg, company) [Default Company Ltd]:EXAMPLE Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:smtp.example.com Email Address []:admin@example.com [root@centos7 ~]# chmod 640 /var/qmail/control/servercert.pem # メールクライアントで smtp.example.com 証明書の更新 & 設置できるように、所有権限を vpopmail に設定 chown vpopmail.vchkpw /var/qmail/control/servercert.pem ln -s /var/qmail/control/servercert.pem /var/qmail/control/clientcert.pem openssl ciphers > /var/qmail/control/tlsclientciphers openssl ciphers > /var/qmail/control/tlsserverciphers
確認します。
# 問題なく接続されるか確認します。( Ctrl+C で Exit ) openssl s_client -connect smtp.example.com:465 # 入力した情報が正しく表示されるか確認します。 openssl x509 -text -noout -in /var/qmail/control/servercert.pem
smtpsを daemontools サービスに登録
mkdir /var/qmail/service/smtps mkdir /var/qmail/service/smtps/log chmod +t /var/qmail/service/smtps cd /usr/local/src wget https://github.com/shomichiru/qmail-script/raw/master/smtps-run-script.txt wget https://github.com/shomichiru/qmail-script/raw/master/smtps-log-run-script.txt vi smtps-run-script.txt example.com ↓ 実際のドメインに適宜、変更する mv smtps-run-script.txt /var/qmail/service/smtps/run mv smtps-log-run-script.txt /var/qmail/service/smtps/log/run chmod +x /var/qmail/service/smtps/run chmod +x /var/qmail/service/smtps/log/run mkdir /var/log/qmail/smtps chown qmails:nofiles /var/log/qmail/smtps chmod 777 /var/log/qmail/smtps ln -s /var/qmail/service/smtps /service/smtps
svscan を起動して、サービス自動起動を有効化
vi /usr/lib/systemd/system/svscan.service
[Unit] Description=Daemontools svscan [Service] ExecStart=/command/svscanboot Restart=on-abort [Install] WantedBy=multi-user.target
systemctl start svscan systemctl enable svscan systemctl is-enabled svscan
コメント