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 でも認証されました。