Toon posts:

[regexp] expressie pop-before-smtp (mail log analyseren)

Pagina: 1
Acties:

Verwijderd

Topicstarter
Beste mensen,

Ik ben voor m'n nieuwe mailserver (Debian Linux) naar pop-before-smtp aan het kijken. Nu werkt dat kleine programmatje met expressies: de maillogs worden iedere x seconden doorgelicht, om te kijken of er een POP-login (of IMAP) is geweest. Als dat inderdaad zo blijkt te zijn, dan mag het IP van die POP-login (IMAP) een half uur lang SMTP gebruiken.

De expressie die gebruik wordt is
code:
1
'^(... .. ..:..:..) \S+ (?:cyrus/pop3d|cyrus/imapd)\\[\d+\]: ' . 'login: \S*\\[(\d+\.\d+\.\d+\.\d+)\] \S+ \S+';


En daarmee moet de volgende regel 'gevonden' worden:
code:
1
Feb 14 18:47:34 donkey cyrus/imapd[4748]: login: donkey.localcomain.0.168.192.in-addr.arpa[192.168.0.2] pietje CRAM-MD5+TLS User logged in


Volgensmij zou het moeten werken, maar dat doet het dus niet (anders open ik ook geen topic :P). De volgende log-regel wordt overigens wel geaccepteerd door die regexp:
code:
1
Feb 14 18:16:16 donkey cyrus/imapd[4541]: login: localhost[127.0.0.1] cyrus DIGEST-MD5 User logged in


Er wordt geen foutmelding gegeven, dus de regexp zit grammaticaal goed in elkaar, maar wat doe ik verkeerd?

  • Skaah
  • Registratie: Juni 2001
  • Niet online
Okay, dit is 'm:
code:
1
(\w+ \d+ \d+:\d+:\d+) \w+ \w+/\w+\\[\d+]: \w+: ([\w\.\d-_])+\\[([\d\.]+)] ([\w-_]+) ([A-Z-+\d]+) (.*)

Note dat de / niet geescaped is.
$1 = datum
$2 = dns
$3 = ip
$4 = user
$5 = flags
$6 = message
[edit]
Hij's nog wel een beetje globaal, maar je hebt ook niet gezegd op welke woorden hij niet moet matchen!
[google=powergrep]

[ Voor 53% gewijzigd door Skaah op 15-02-2004 12:39 ]


Verwijderd

Topicstarter
Nee, dat bedoel ik niet. Het gaat om het verschil. Waarom wordt
code:
1
donkey.localcomain.0.168.192.in-addr.arpa[192.168.0.2]

niet geaccepteerd, maar
code:
1
localhost[127.0.0.1]


Het regexp-gedeelte
code:
1
login: \S*\\[(\d+\.\d+\.\d+\.\d+)\] \S+ \S+

Moet toch voor beide correct zijn? Het gaat erom dat een daemon blijft kijken of die regexp voorkomt in de logfiles. Zo ja, dan wordt het IP-adres dat ie gevonden heeft toegevoegd aan een database...