postfix pop-before-smtp不能正确parsing日志 – 我想,需要PERL帮助

我们现在已经使用了Postfix很长时间了,并且对它有所了解。 现在,我们需要“走进现代”,让人们从我们的SMTP服务器发送电子邮件,即使它们在我们的networking之外。 所以,负责这项工作,我发现pop-before-smtp。

你可以在这里find它。

所以,我已经configuration好了,但是在testing中失败了。 我使用这里的指示麻烦它,并确定试图parsing日志的PERL似乎是不正确的。 我们使用Dovecot作为我们的IMAP / POP服务器,并且在configuration文件中给出了三个select。 这里是从configuration文件中摘录出来的三组数据:

# 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”是login模式,out-pat是登出或断开连接的模式。

实际的日志logging格式明显不同于这三者中的任何一种,但它们很接近。 下面是一对例子:

 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”被replace为“pop-login”,在注销时,“POP”replace“IMAP” – 为什么大写字母的变化我不能说!

导入和数据是:时间戳,用户名和login时的“远程”ip(“rip”)。

如果有足够的时间,我可以拼凑出一些有用的东西,但是由于我实际上并不了解PERL,所以这样做很难!

请帮助!

我知道你已经要求支持pop-before-smtp。 但是,如果你的后缀有SASL SMTPauthentication支持,为什么不使用它。 pop-before-smtp dev在2007年停止了。

现代邮件系统在SMTP之前不应该使用POP。 这是一个90年代的黑客,因为在90年代后期,垃圾邮件开始增长,我们需要确定是否允许用户发送邮件。 我们不得不依靠这种黑客攻击,因为当时没有MTA本地支持authentication发送,即使没有MTU在客户端支持。

正如Richard T所说,在服务器端使用sasl auth,更好的做法是通过smpts。