Qmailを CentOS 7系に入れた時の記録です。
Qmail,vpopmail(マルチドメイン),tcpserver,daemontoolsなどを入れていきます。
# cat /etc/centos-release CentOS Linux release 7.6.1810 (Core)
Qmail 関連記事
■Qmail for CentOS 7 with SpamAssassin 3.4.2 (2019/03/13)
■Qmail for CentOS7 With SpamAssassin 3.4 ユーザ毎のuser_prefs (2019/03/16)
■Qmail for CentOS7,SMTP AUTH and Submission and vpopmail (2019/03/21)
■Qmail for CentOS7,POP SMTP with TSL/SSL (2019/03/24)
■Qmail for CentOS7,imap & imaps (2019/03/24)
qmail (netqmail)関係 設定
ID関係
# vi /etc/passwsd alias:x:550:503::/var/qmail/alias:/bin/bash qmaild:x:551:503::/var/qmail:/bin/bash qmaill:x:552:503::/var/qmail:/bin/bash qmailp:x:553:503::/var/qmail:/bin/bash qmailq:x:554:504::/var/qmail:/bin/bash qmailr:x:555:504::/var/qmail:/bin/bash qmails:x:556:504::/var/qmail:/bin/bash
↑ IDの番号は、qmail指定のものがいいということで、指定通りにします。
# vi /etc/shadow alias:!!:12514:0:99999:7::: qmaild:!!:12514:0:99999:7::: qmaill:!!:12514:0:99999:7::: qmailp:!!:12514:0:99999:7::: qmailq:!!:12514:0:99999:7::: qmailr:!!:12514:0:99999:7::: qmails:!!:12514:0:99999:7:::
# vi /etc/group nofiles:x:503: qmail:x:504:
qmail (netqmail)本体のインストール
# mkdir /var/qmail # chgrp qmail /var/qmail/
# tar xzvf netqmail-1.06.tar.gz # cd netqmail-1.06
↑ qmail 1.03 本体にパッチ類をあてた、netqmail 1.06 を入れます。
# patch < ../netqmail-1.05-smtpd-auth-0.31.patch # patch -p1 < ../qmail-103.patch # patch -p1 < ../qmail-date-localtime.patch # patch -p1 < ../qmail-smtpd-relay-reject # patch -p0 <../outgoingip.patch
↑ それでも、必要なパッチがありますので適用します。
# make setup check
↑ インストールします。
/var/qmail/ 以下に必要なファイル類が作成されます。
# ./config-fast (ホスト名FQDN)
↑ qmailの設定を行います。
# cd /var/qmail/alias/ echo "(管理者メールアドレス)" > .qmail-mailer-daemon echo "(管理者メールアドレス)" > .qmail-postmaster echo "(管理者メールアドレス)" > .qmail-root chmod 644 .qmail-*
↑宛先不明メールなどの送信先を設定します。
# cd /usr/sbin/ # rm sendmail rm: remove シンボリックリンク `sendmail'? y # ln -s /var/qmail/bin/sendmail sendmail # cd /usr/lib # rm sendmail rm: remove シンボリックリンク `sendmail'? y # ln -s /usr/sbin/sendmail
↑sendmail プログラムを、qmailののもに変更をします。
# cd netqmail-1.06 (↑元のソース展開場所に戻る) # cp home /var/qmail/rc
↑ qmail起動ファイルをコピーします。
# csh /var/qmail/rc & # ps ax |grep qmail 2867 pts/1 S 0:00 qmail-send 2885 pts/1 S 0:00 splogger qmail 2886 pts/1 S 0:00 qmail-lspawn ./Mailbox 2887 pts/1 S 0:00 qmail-rspawn 2888 pts/1 S 0:00 qmail-clean
↑ 念のため、起動を確認します。
daemontoolsの導入
# tar xzvf daemontools-0.76.tar.gz # cd admin/ # cd daemontools-0.76/ # patch -p1 < ../../mail/netqmail-1.06/other-patches/daemontools-0.76.errno.patch patching file src/error.h #./package/install
↑ qmailから提供されているパッチを適用します。
↑ インストールすると、シンボリックリンクが貼られます。
/usr/local/bin -> /command/
/command/ -> (インストールディレクトリ)
このリンクをなくして、ファイルの実体を、/usr/local/に持ってきます。
実際に、シンボリックリンクでもいいかもしれませんが、トラブルの原因になりそうなので・・・・
また、
/etc/inittab
の最下部に、起動コマンドが書かれているので、その行を削除します。
# vi /etc/rc.d/init.d/svscan 以下のように記述 ---------------------------------- #!/bin/sh PATH=/usr/local/bin:/usr/bin:/bin case "$1" in start) echo -n "Starting svscan: " exec env - PATH="$PATH" \ csh -cf 'svscan /service &; echo $! > /var/run/svscan.pid' touch /var/lock/subsys/svscan ;; stop) if [ -f /var/run/svscan.pid ]; then echo -n "Stopping svscan: " kill `cat /var/run/svscan.pid` svc -dx /service/* svc -dx /service/*/log rm -f /var/run/svscan.pid rm -f /var/lock/subsys/svscan fi ;; *) echo "Usage: $0 {start|stop}" exit 1 esac exit 0 ---------------------------------- # chmod 755 /etc/rc.d/init.d/svscan
↑ 起動ファイルを設定します。
サービスの登録
# cd /service/ # mkdir /var/qmail/services # mkdir /var/qmail/services/pop3d # mkdir /var/qmail/services/qmail # mkdir /var/qmail/services/smtpd
pop3dの登録
# cd /var/qmail/services/pop3d/ # vi run *********** #!/bin/sh PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin exec /usr/local/bin/tcpserver -v -q -x /home/vpopmail/etc/tcp.pop3.cdb -R -l (導入サーバーFQDN) -H 0 pop3 /var/qmail/bin/qmail-popup (導入サーバーFQDN) /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d ./Maildir/ 2>&1 *********** # chmod 755 run # mkdir supervise # mkdir log # cd log # vi run *********** #!/bin/sh exec /usr/local/bin/setuidgid qmailp /usr/local/bin/multilog t /var/log/qmail/pop3d *********** # chmod 755 run # mkdir supervise
qmail の登録
# cd /var/qmail/services/qmail # vi run *********** #!/bin/sh QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl" export QMAILQUEUE PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin exec /var/qmail/rc *********** # chmod 755 run # mkdir supervise # mkdir log # cd log # vi run ********** #!/bin/sh exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t n200 /var/log/qmail ********** # chmod 755 run # mkdir supervise
smtpd の登録
# cd /var/qmail/services/smtpd # vi run *********** #!/bin/sh PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin exec /usr/local/bin/tcpserver -v -u 556 -g 503 -R -l arina.mash-net.jp -x /home/vpopmail/etc/tcp.smtp.cdb 0 smtp recordio /var/qmail/bin/qmail-smtpd 2>&1 *********** # chmod 755 run # mkdir supervise # mkdir log # cd log # vi run *************** #!/bin/sh exec /usr/local/bin/setuidgid qmails /usr/local/bin/multilog t n200 \ -'*' \ +'* * < HELO *' \ +'* * < EHLO *' \ +'* * < MAIL *' \ +'* * < RCPT *' \ +'* * < QUIT *' \ +'* * < RSET *' \ +'* * < NOOP *' \ +'* * > 1*' \ +'* * > 2*' \ +'* * > 3*' \ +'* * > 4*' \ +'* * > 5*' \ /var/log/qmail/smtpd *************** # chmod 755 run # mkdir supervise
tcpserver のインストール
# tar xzvf ucspi-tcp-0.88.tar.gz # cd ucspi-tcp-0.88 # patch -p1 < ../mail/netqmail-1.06/other-patches/ucspi-tcp-0.88.errno.patch patching file error.h # patch -p1 < ../mail/netqmail-1.06/other-patches/ucspi-tcp-0.88.a_record.patch patching file rblsmtpd.c # patch -p1 < ../mail/netqmail-1.06/other-patches/ucspi-tcp-0.88.nodefaultrbl.patch patching file rblsmtpd.c Hunk #1 succeeded at 193 (offset 38 lines). Hunk #3 succeeded at 227 (offset 38 lines). # make # make setup check
↑ tcpserver を入れます。qmailのパッチも適用します。
ルールファイルの設定
# /usr/sbin/groupadd -g 259 vchkpw # /usr/sbin/useradd -u 259 -g vchkpw -d /home/vpopmail -m -s/bin/bash vpopmail # mkdir /home/vpopmail/ # chmod 755 /home/vpopmail/ # mkdir /home/vpopmail/etc # chown vpopmail.vchkpw /home/vpopmail/etc/ # cd /home/vpopmail/etc/
↑ vpopmail の導入を前提として、先行的に設定ファイルを設置します。
# vi tcp.pop3 *************** :allow *************** # vi pop2cdb.sh *************** #!/bin/sh /usr/local/bin/tcprules /home/vpopmail/etc/tcp.pop3.cdb /home/vpopmail/etc/tcp.pop3.tmp < /home/vpopmail/etc/tcp.pop3 *************** # vi tcp.smtp *************** 127.:allow,RELAYCLIENT="" *************** # vi smtp2cdb.sh *************** #!/bin/sh /usr/local/bin/tcprules /home/vpopmail/etc/tcp.smtp.cdb /home/vpopmail/etc/tcp.smtp.tmp < /home/vpopmail/etc/tcp.smtp
↑popとsmtpの設定ファイル
# sh pop2cdb.sh # sh smtp2cdb.sh
↑ cdbを生成します。
# vi /var/qmail/rc qmail-start ../Mailbox splogger qmail を qmail-start ./Maildir/ に変更する。
↑ Maildir方式に変更します。
tcpserverの起動
qmailが起動していれば、停止させます。
# cd /service/ # ln -s /var/qmail/services/pop3d/ # ln -s /var/qmail/services/qmail/ # ln -s /var/qmail/services/smtpd/ # mkdir /var/log/qmail # chown qmaill.nofiles /var/log/qmail # mkdir /var/log/qmail/smtpd/ # chown qmails.qmail /var/log/qmail/smtpd/ # mkdir /var/log/qmail/pop3d/ # chown qmailp.nofiles /var/log/qmail/pop3d/
# /etc/rc.d/init.d/svscan start
↑起動させます。
CentOS7 用のsystemctrlから起動させます(2019/04/18)
前述の
# /etc/rc.d/init.d/svscan start
で起動するのは、CentOS6系の起動でしたが、CentOS7での起動をさせます。
# vi /etc/systemd/system/qmail.service ---------------------------------------- [Unit] Description=qmail After=network.target [Service] Type=simple RemainAfterExit=yes ExecStart=/etc/rc.d/init.d/svscn start ExecStop=/etc/rc.d/init.d/svscn stop [Install] WantedBy=multi-user.target ----------------------------------------
# systemctl start qmail # systemctl enable qmail
↑ 上記のようにsystemctrlで、起動させます。
VPOPmailの導入
https://sourceforge.net/projects/vpopmail/files/vpopmail-stable/
から、最新版(といっても、大昔・・・笑)をゲットします。
# cd vpopmail-5.4.33/
# vi vchkpw.c 747行目あたり hmac_md5( (unsigned char *) challenge, strlen(challenge), (unsigned char *) password, strlen(password), digest); ↓ hmac_md5( (unsigned char *) response, strlen(response), (unsigned char *) password, strlen(password), digest); 759行目あたり return(strcmp(digascii,response)); ↓ return(strcmp(digascii,challenge));
↑ SMTP Authのため、ソースを変更します。
# ./configure --enable-logging=y --enable-ip-alias-domains=y --enable-roaming-users=y --enable-clear-passwd --enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp --enable-relay-cleaar-minuts=10 --prefix=/home/vpopmail/ # make clean # make # make install
ドメイン登録、pop認証チェック
# /home/vpopmail/bin/vadddomain
↑ vadddoman コマンドで、ドメインを登録します。
# telnet localhost pop3 Trying ::1... telnet: connect to address ::1: Connection refused Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. +OK <3656.1552203456@(ローカルホスト名)> user postmaster@(登録ドメイン) +OK pass (パスワード) +OK
↑ pop3 が、とおりました。
qmail 今後
SpamAssassin,imap,SSLなどの設定です・・・