Qmail のSMTP AUTH 関係の設定をします。
Qmail関係は、
Qmail (netqmail) for CentOS 7. and vpopmail,tcpserver,daemontools
の構築方法よりも、以下の方(今回のほう)がいいでしょう(汗)
今回は、qmail-smtpd-auth-close3.patch のパッチ
が加わっています。
Qmail インストール
# tar xvf qmail-smtpd-auth-0.31.tar.gz
# tar xzvf netqmail-1.06.tar.gz
# cp qmail-smtpd-auth-0.31/* netqmail-1.06/
# cd netqmail-1.06/
# patch < auth.patch
patching file Makefile
patching file TARGETS
patching file qmail-smtpd.8
patching file qmail-smtpd.c
Hunk #2 succeeded at 62 with fuzz 1.
Hunk #3 succeeded at 241 with fuzz 1.
↑ SMTP Auth 関係のパッチを当てます。
# patch < ../qmail-smtpd-auth-close3.patch
↑ SMTPが、正しく終了してくれないというバグを修正したパッチです。
これがないと、SMTPのプロセスが残って、送信できないという事態になります。
# patch -p1 < ../qmail-103.patch # patch -p1 < ../qmail-date-localtime.patch # patch -p1 < ../qmail-smtpd-relay-reject # patch -p0 < ../outgoingip.patch
↑その他、パッチ類を当てます。
# make # make setup
↑インストールをします。
# cd /var/qmail/bin # cp qmail-smtpd qmail-smtpd-submission
↑587用(Submission用)にプログラムを別にします。
(別にしなくてもいいかと思いますが、トラブル時の対応のため・・・)
587用(Submission用)のサービスを設定します。
# cd /var/qmail/services/
# mkdir smtpd_sub
# cd smtpd_sub
# vi run
--------------------
#!/bin/sh
PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin
exec /usr/local/bin/tcpserver -v -x /home/vpopmail/etc/tcp.smtp.cdb -R -H -u 551 -g 503 0 587 recordio /var/qmail/bin/qmail-smtpd (ホスト名,FQDN) /home/vpopmail/bin/vchkpw /bin/true 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_sub
# chmod 755 run
# mkdir supervise
# mkdir /var/log/qmail/smtpd_sub
# chown qmails.qmail /var/log/qmail/smtpd_sub/
# cd /service
# ln -s /var/qmail/services/smtpd_sub/
↑サービスを起動します。
centos7のポートを開放します
# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client ssh-xxxxx dns
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
↑現状のfirewallの状態をチェックします。
# firewall-cmd --permanent --add-service=pop3 # firewall-cmd --permanent --add-service=smtp-submission # firewall-cmd --permanent --add-service=smtp
↑587のSubmissionポートを含めて、pop3,smtpのポートも開放します。
vpopmailを再セットアップ
Qmail (netqmail) for CentOS 7. and vpopmail,tcpserver,daemontools
では、「pop before smtp」を有効にしていましたが、さすがに、要らないでしょう・・・(汗)
# tar xzvf vpopmail-5.4.33.tar.gz # cd vpopmail-5.4.33 # ./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/ ↑と、「pop before smtp」を有効にしていましたが、 # ./configure --enable-logging=y --enable-clear-passwd --enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp --prefix=/home/vpopmail/ ↑と、「pop before smtp」を無効としました。
# 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 のために、ソースを変更します。
# make # make install
↑vpopmailをインストールします。
# chown root /home/vpopmail/bin/vchkpw # chmod 4755 /home/vpopmail/bin/vchkpw
↑「vchkpw」のパーミッションを変更します。
こうしないと、認証されません。
SMTP AUTH 外部からの接続を確認
>>> Connecting to "(メールサーバー)"<<<
220 (メールサーバー) ESMTP
EHLO [(ローカルアドレス)]
250-(メールサーバー)
250-AUTH LOGIN CRAM-MD5 PLAIN
250-AUTH=LOGIN CRAM-MD5 PLAIN
250-PIPELINING
250 8BITMIME
AUTH LOGIN
334 (エンコードデータ)
235 ok, go ahead (#2.0.0)
RSET
250 flushed
MAIL FROM:<メールアドレス>
250 ok
↑ AUTH LOGIN で認証されました。
>>> Connecting to "(メールサーバー)"<<< 220 [2019/03/XX XX:XX:XX] ESMTP EHLO [(ローカルアドレス)] 250- [2019/03/XX XX:XX:XX] 250-AUTH LOGIN CRAM-MD5 PLAIN 250-AUTH=LOGIN CRAM-MD5 PLAIN 250-PIPELINING 250 8BITMIME AUTH CRAM-MD5 334 (エンコードデータ) 235 ok, go ahead (#2.0.0) RSET 250 flushed MAIL FROM:<メールアドレス> 250 ok
↑ AUTH CRAM-MD5 でも認証されました。