Qmail for CentOS7,SMTP AUTH and Submission and vpopmail

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

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

 

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