Эта проблема относится к контексту pop-before-smtp / Postfix / Dovecot, но если бы я знал синтаксический анализ строки 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, это довольно сложно.Помогите мне написать новые правила для анализа выходных данных, используемых с нашим пакетом Dovecot.