postfix pop-before-smtp 无法正确解析日志 - 我认为需要 PERL 帮助

postfix pop-before-smtp 无法正确解析日志 - 我认为需要 PERL 帮助

我们已经使用 Postfix 很长时间了,并且有点上瘾了。现在我们需要“进入现代时代”,让人们即使不在我们的网络内也可以从我们的 SMTP 服务器发送电子邮件。因此,在承担这项工作时,我找到了 pop-before-smtp。

你可以找到它这里

我已经配置好了一切,但测试失败了。我按照说明进行了故障排除这里,并确定尝试解析日志的 PERL 似乎不正确。我们使用 Dovecot 作为我们的 IMAP / POP 服务器,配置文件中给出了三个选项。以下是配置文件的摘录,显示了这三个集合:

# 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 是注销或断开连接的模式。

实际的日志记录格式显然与这三种格式不同,但它们很接近。以下是一对示例:

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,所以这有点困难!

请帮助!

答案1

我知道您曾要求支持 pop-before-smtp。但如果您的 postfix 具有 SASL SMTP 身份验证支持,为什么不使用它呢。pop-before-smtp 开发早在 2007 年就停止了。

答案2

现代邮件系统不应该在 SMTP 之前使用 POP。这是 90 年代的黑客技术,因为在 90 年代后期垃圾邮件开始增多,我们需要一种方法来确定是否允许用户发送邮件。我们不得不依赖这种黑客技术,因为当时没有 MTA 本身支持经过身份验证的发送,即使他们支持,客户端也没有 MTU 支持它。

正如 Richard T 所说,在服务器端使用 sasl auth,最好通过 smpts 进行。

相关内容