[2024/02/19追記]
このところ、gmailの設定であれこれ話題になっているDKIMやSPF,DMARCなどはこちら
メールのなりすましを電子署名Domainkeys/DKIMで防ぐ(qmailまとめ)
qmailの情報収集 2019/08/26
を見ておきましょう。以下の手順はあくまでも素のnotqmailのインストール方法になりますので、ご注意ください。
[追記ここまで]
過去の古いOSのサーバから移行することを目的にqmailの環境をもう一度、新しいOSの環境に構築する。
10年近く何も作業していなかった設定方法のため、1から思い出して処理する必要があった。
いまさらqmailを使うのはどうかと思うが、vpopmailとqmailadminでオペレートが楽なのは評価。あと、過去のOSのサーバからの移行がそのままファイルコピーで済むため、postfixの環境に移行より楽。また、プレーンなqmailでなく、フォークされて開発が続けられているnotqmailをインストールすることにした。
コンパイラをいれておく
dnf install gcc.x86_64
notqmailの入手とmake
https://github.com/notqmail/notqmail からnotqmailのソースコードを取得
ユーザーをシステムに設定
# groupadd nofiles
# useradd -g nofiles -d /var/qmail/alias -s /bin/false alias
# 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
# groupadd qmail
# 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
rootアカウントでmakeしてインストール
# make setup check
初回のドメイン設定
# ./config-fast example.com
rcファイルのコピー
# cp home /var/qmail/rc
# chmod 0755 /var/qmail/rc
rcファイル内は、以下のように書き換え
qmail-start ./Mailbox splogger qmail
↓
qmail-start ./Maildir/ splogger qmail
初期の管理アカウントを設定
(外部の他メールアカウントへ転送の例)
# cd ~alias
# touch .qmail-root .qmail-postmaster .qmail-mailer-daemon
# chmod 644 .qmail*
# echo -n ‘xxx@example.com’ > .qmail-root
# echo -n ‘xxx@example.com’ > .qmail-postmaster
# echo -n ‘xxx@example.com’ > .qmail-mailer-daemon
tcpserverの入手とmake
wget https://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
vi error.h で extern int errno; を #include <errno.h> と書き換える
rootアカウントでmakeしてインストール
# make setup check
vpopmailの入手とmake
wget http://jaist.dl.sourceforge.net/project/vpopmail/vpopmail-stable/5.4.33/vpopmail-5.4.33.tar.gz
vpopmailのアカウントを作成
# groupadd vchkpw
# useradd -g vchkpw -s /bin/false -M vpopmail
# mkdir /home/vpopmail
# chown vpopmail:vchkpw /home/vpopmail
# mkdir /home/vpopmail/etc
# chown vpopmail:vchkpw /home/vpopmail/etc
rootアカウントにて実行
# ./configure –enable-roaming-users=y –enable-relay-clear-minutes=10
# make
# make install-strip
crontabでpop before smtpのデータを10分ごとにリフレッシュ
0-59/10 * * * * /home/vpopmail/bin/clearopensmtp 2>&1 > /dev/null
vpopmailへの新規ドメインの追加
# /home/vpopmail/bin/vadddomain example.com
# su – vpopmail
$ cd /home/vpopmail/domains/example.com/postmaster/
$ echo -n ‘xxx@example.com’ > .qmail
でpostmasterの設定
(他メールへの転送の設定)
この設定がない場合は /home/vpopmail/domains/example.com/postmaster/Maildir/ へのローカル配送される
$ cd /home/vpopmail/domains/example.com/
$ echo -n ‘xxx@example.com’ > .qmail-root
でrootアカウントのメールの設定
(他メールへの転送の設定)
インストール済みだったMTAを削除しqmailを設定
すでにインストールされていたposfixを削除
# dnf remove postfix
メール関連のコマンドをsymlinkで設定
# ln -s /var/qmail/bin/qmail-qstat /usr/bin/mailq
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
qmailを起動
Daemontoolsを使わずにいったん仮で起動させてローカルのメールデリバリーを確認する
# sh /var/qmail/rc &
Daemontoolsをインストール
# wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
展開したディレクトリが実行ファイルの置き場になり/command/からsymlinkとなるため、コンパイル前に展開場所を/usr/local/などにする。
vi src/error.h で extern int errno; を #include <errno.h> と書き換える
# package/install
systemctl用daemontools を設定
/etc/systemd/system/daemontools.service
[Unit]
Description=daemontools Start supervise
After=getty.target
[Service]
Type=simple
User=root
Group=root
Restart=always
ExecStart=/command/svscanboot /dev/ttyS0
TimeoutSec=0
[Install]
WantedBy=multi-user.target
# systemctl enable daemontools
# systemctl start daemontools
Daemontoolsでsmtp:qmail/pop3:vpoopmailの待ち受けのtcpserverを設定
/var/superviseに必要なディレクトリを作成
# mkdir -p /var/supervise/qmail
# mkdir -p /var/supervise/smtpd
# mkdir -p /var/supervise/pop3
# vi /var/supervise/qmail/run
#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start ./Maildir/ splogger qmail
# vi /var/supervise/smtpd/run
#!/bin/sh
/usr/local/bin/tcprules /home/vpopmail/etc/tcp.smtp.cdb \
/home/vpopmail/etc/tcp.smtp.tmp \
< /home/vpopmail/etc/tcp.smtp
exec env - PATH="/var/qmail/bin:$PATH" \
/usr/local/bin/tcpserver -HRl `hostname` -v -x /home/vpopmail/etc/tcp.smtp.cdb -u `id -u vpopmail` -g `id -g vpopmail` 0 smtp \
qmail-smtpd 2>&1 | splogger smtp 3
# vi /var/supervise/pop3/run
#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" \
/usr/local/bin/tcpserver -HRl `hostname` -v 0 pop3 qmail-popup `hostname` /home/
vpopmail/bin/vchkpw \
qmail-pop3d Maildir 2>&1 | splogger pop3 3
# chmod 0755 /var/supervise/qmail/run
# chmod 0755 /var/supervise/smtpd/run
# chmod 0755 /var/supervise/pop3/run
あとは、/serviceにリンボリックリンクをつける
# cd /service
# ln -s /var/supervise/qmail .
# ln -s /var/supervise/smtpd .
# ln -s /var/supervise/pop3 .
(qmail付属のmultilogの設定は省略、qmail付属のsploggerに投げているので最低限必要なログはsyslog経由で取得できるはず)
これで起動するので、firewalldで閉めているportを開けよう
# firewall-cmd –add-service=smtp –zone=public –permanent
# firewall-cmd –add-service=pop3 –zone=public –permanent
# firewall-cmd –add-port=587/tcp –permanent
daemontoolsの設定は、このへん参照
https://pocolog.bass-world.net/tech/2018/gmo-cloud-centos7-daemontools-tcpserver/
https://yassu.jp/pukiwiki/index.php?daemontools%A4%C7%A5%ED%A5%B0%B5%AD%CF%BF%A4%C8%A5%D7%A5%ED%A5%BB%A5%B9%B4%C9%CD%FD
http://www.marronkun.net/linux/other/daemontools_000040.html
http://www.emaillab.org/djb/daemontools/daemontools-howto.html
https://www.atmarkit.co.jp/ait/articles/0205/21/news002.html
ezmlmのインストール
# wget http://ezmlm.untroubled.org/archive/7.2.2/ezmlm-idx-7.2.2.tar.gz
# tar xzf ezmlm-idx-7.2.2.tar.gz
# cd ezmlm-idx-7.2.2
# make
# make man
# ./ezmlm-test
# make install
qmailadminのインストール
(設定中:時間がとれなくて作業遅延……)
qmailでよく使うコマンド
キューに入っているメールを確認
/var/qmail/bin/qmail-qread
キューに入っている数を確認
/var/qmail/bin/qmail-qstat
キューの強制再送
kill -s ALRM qmail-send のPID