Qmail (netqmail) for CentOS 7. and vpopmail,tcpserver,daemontools

この記事は約16分で読めます。

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などの設定です・・・

タイトルとURLをコピーしました