この問題は、pop-before-smtp / Postfix / Dovecot のコンテキストで発生しますが、Perl の文字列解析を知っていれば、自分で答えを見つけることができます。しかし、私はとても迷っており、正確な質問さえ知りません。ウィット:
私たちは Postfix を長い間使用しており、それに夢中になっています。今、私たちは「現代に移行」し、人々が私たちのネットワークの外にいても、私たちの SMTP サーバーから電子メールを送信できるようにする必要があります。それで、この仕事を任されて、pop-before-smtp を見つけました。
ここで見つけることができます。
だから、私はそれをすべて構成しましたが、テストに失敗しました。こちらの指示に従ってトラブルシューティングを行ったところ、ログを解析しようとしている Perl が間違っているように見えることがわかりました。Dovecot を IMAP / POP サーバーとして使用しており、構成ファイルには 3 つの選択肢があります。以下は、3 つのセットを示す構成ファイルからの抜粋です。
# For Dovecot POP3/IMAP when using syslog.
#$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+)[],]';
# For Dovecot POP3/IMAP when it does its own logging.
##$logtime_pat = '(\d\d\d\d-\d+-\d+ \d+:\d+:\d+)';
#$pat = '^dovecot: [LOGTIME] Info: (?:imap|pop3)-login: ' .
# 'Login: .+? rip=[:f]*(\d+\.\d+\.\d+\.\d+),';
#$out_pat = '^dovecot: [LOGTIME] Info: (?:imap|pop3)-login: ' .
# 'Disconnected.*? rip=[:f]*(\d+\.\d+\.\d+\.\d+),';
# For older Dovecot POP3/IMAP when it does its own logging.
#$pat = '^(?:imap|pop3)-login: [LOGTIME] Info: ' .
# 'Login: \S+ \[[:f]*(\d+\.\d+\.\d+\.\d+)\]';
#$out_pat = '^(?:imap|pop3)-login: [LOGTIME] Info: ' .
# 'Disconnected.*? \[[:f]*(\d+\.\d+\.\d+\.\d+)\]';
該当するもののコメントを外すことになっていますが、どれも機能しません。
「pat」はログインのパターンであり、out-pat はログアウトまたは切断のパターンであると推測します。
実際のログ レコード形式は、これら 3 つのいずれとも明らかに異なりますが、ほぼ同じです。ペアの例を次に示します。
Mar 11 17:53:55 imap-login: Info: Login: user=<username>, method=PLAIN, rip=208.54.4.205, lip=192.168.1.1, TLS
Mar 11 17:59:10 IMAP(username): Info: Disconnected: Logged out bytes=352/43743
POP を使用すると、'imap-login' が 'pop-login' に置き換えられ、ログアウトすると、'POP' が 'IMAP' に置き換えられます。
インポートおよびデータは次のとおりです。タイムスタンプ、ユーザー名、およびログイン時の「リモート」IP (「rip」)。
十分な時間があれば、うまくいくものを組み立てることができるかもしれませんが、実際にはPerlを知らないので、これはちょっと難しいです. Dovecot パッケージで使用されるログ出力を解析するための新しいルールを作成するのを手伝ってください。