pop-before-smtp でハマってしまった | Tamesuke-Goto Maker的Blog

Tamesuke-Goto Maker的Blog

地域ISP管理者だけれど、ここ3年ほどMakerなJobが増えたのでまとめてみたいと思います 旧ハンドル Ringoro

いまさら pop-before-smtp

 しばらく dovecot imap/pop3 とpop-before-smtpで運用しているサーバがあるのですが、いいかげん古いのでOSを含めてアップデートしましたが、 pop-before-smtpの認証がうまくいかないという事態が。。。3日ほどハマってしましました。
 
先ずは -T オプションでワーニングがでるので、フラグは取りました。 perlのパスはOSにより異なるかもです。
 

# head /usr/local/sbin/pop-before-smtp 

 

#!/usr/local/bin/perl -w

use strict;

:

:

 

 
 次は 新しいdovecotの出すログのフォーマットが若干変わった事が原因でパターンマッチ出来ません。新バージョンではログ項目が増え、またdovecotのプロセスIDが付加されています。
 

May 12 12:51:32 mailserver  dovecot[6501]: pop3-login: Login: user=<admin>, method=PLAIN, rip=***.***.**.***, lip=***.***.***.***, mpid=7076, session=<nNWkbd3eiZfK3gA/>

変更点:

10-logging.conf :

 

#login_log_format_elements = user=<%u> method=%m rip=%r lip=%l mpid=%e %c

login_log_format_elements = user=<%u> method=%m rip=%r lip=%l %c

 

短い出力タイプにログを変更

 

                            

pop-before-smtp-conf.pl :

 

# For Dovecot POP3/IMAP when using syslog. new ver 

 

$pat = '^[LOGTIME] \S+ (?:dovecot\[.*\]: )?(?:imap|pop3)-login: ' .

    'Login: .*? (?:\[|rip=)[:f]*(\d+\.\d+\.\d+\.\d+)[],]';

$out_pat = '^[LOGTIME] \S+ (?:dovecot\[.*\]: )?(?:imap|pop3)-login: ' .

    'Disconnected.*? (?:\[|rip=)[:f]*(\d+\.\d+\.\d+\.\d+)[],]';

 

ログ記述内 dovecot[....]  の 文字列にマッチする様に正規表現を一部変更

 

 

pop-before-smtp などレガシーなシステム使う人は最近はいないでしょうけどねぇ。。。