Postfix PCRE virtual aliases, matcht niet zoals verwacht

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Jeroen
  • Registratie: Juli 2005
  • Laatst online: 01-10 06:31

Jeroen

uǝʌ ǝp uɐʌ

Topicstarter
Hey allemaal,

Ik gebruik postfix om wat mail heen en weer te sturen van diverse domeinen. Daarvoor heb ik hem zo ingesteld dat aliases in /etc/postfix/virtual staan, en dat heeft altijd goed gewerkt als gewone 'key value' pairs tot ik besloot dat pcre wel nuttig zou zijn. Nu verwijst de config naar pcre:/etc/postfix/virtual en dat lijkt te werken zonder fouten (ik krijg wel foutmeldingen als er duidelijke fouten in staan).

Bij postfix-pcre kun je postmap -fq <emailadres> pcre:<aliasbestand> gebruiken om te testen wat de destination zou zijn van een mail naar een bepaald adres volgens je aliasbestand. Maar op dit moment krijg ik daarbij een antwoord (wat ik vind kloppen) wat afwijkt van wat postfix zelf doet met zo'n mail. Ik kon online niks vinden over zulke discrepanties dus ik hoop dat hier iemand uitgebreide ervaring heeft met postfix en misschien met een ingeving komt.

Wat er gebeurt is hij matcht geen enkele regel behalve de laatste catch-all regel, dus alles gaat naar junkmail. Het kan ook zijn dat de volgorde andersom is o.i.d, maar ik zou niet weten hoe ik dit debug.
have you tried turning it off an-
ja.

Hier is de config:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
virtual_alias_domains = jeroenvandeven.nl, en.nl, een.nl, aantal.nl, andere.nl
virtual_alias_expansion_limit = 1000
virtual_alias_maps = pcre:/etc/postfix/virtual
virtual_alias_recursion_limit = 1000
virtual_delivery_slot_cost = $default_delivery_slot_cost
virtual_delivery_slot_discount = $default_delivery_slot_discount
virtual_delivery_slot_loan = $default_delivery_slot_loan
virtual_destination_concurrency_failed_cohort_limit = $default_destination_concurrency_failed_cohort_limit
virtual_destination_concurrency_limit = $default_destination_concurrency_limit
virtual_destination_concurrency_negative_feedback = $default_destination_concurrency_negative_feedback
virtual_destination_concurrency_positive_feedback = $default_destination_concurrency_positive_feedback
virtual_destination_rate_delay = $default_destination_rate_delay
virtual_destination_recipient_limit = $default_destination_recipient_limit
virtual_extra_recipient_limit = $default_extra_recipient_limit
virtual_gid_maps =
virtual_initial_destination_concurrency = $initial_destination_concurrency
virtual_mailbox_base =
virtual_mailbox_domains = $virtual_mailbox_maps
virtual_mailbox_limit = 51200000
virtual_mailbox_lock = fcntl, dotlock
virtual_mailbox_maps =
virtual_minimum_delivery_slots = $default_minimum_delivery_slots
virtual_minimum_uid = 100
virtual_recipient_limit = $default_recipient_limit
virtual_recipient_refill_delay = $default_recipient_refill_delay
virtual_recipient_refill_limit = $default_recipient_refill_limit
virtual_transport = virtual
virtual_uid_maps =


Hier is de aliasfile:
Afbeeldingslocatie: http://i.imgur.com/sduMBLp.png

Dit is het probleem:
code:
1
2
3
jeroen@----:~$ postmap -fq blaat@jeroenvandeven.nl pcre:/etc/postfix/virtual 
jeroen@localhost
jeroen@----:~$

Dat is inderdaad wat ik wil. Dit gebeurt er echter:
Afbeeldingslocatie: http://i.imgur.com/UzdjRNP.png

Kortom, /(.*)@jeroenvandespam.nl$/ zou blaat@jeroenvandespam.nl wel moeten matchen en postmap geeft dat ook aan, maar dat doet hij niet (waardoor hij naar junkmail gaat). Halp!

[ Voor 92% gewijzigd door Jeroen op 19-06-2014 12:57 ]

"I don't always test my code, but when I do, I test on production."


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:30

Hero of Time

Moderator LNX

There is only one Legend

Je plaatst eerst netjes console output, om later het met een plaatje te doen. Consistentie is wel handig in dit geval ;). Kan je ook je 1000 regels uitvoer van postconf inslinken naar iets wat wel te behappen is? Zet dus neer wat je denkt dat relevant is, want nu krijg je alles, inclusief defaults, waardoor we door het bomen het bos niet meer zien.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Jeroen
  • Registratie: Juli 2005
  • Laatst online: 01-10 06:31

Jeroen

uǝʌ ǝp uɐʌ

Topicstarter
Hero of Time schreef op donderdag 19 juni 2014 @ 12:42:
Je plaatst eerst netjes console output, om later het met een plaatje te doen. Consistentie is wel handig in dit geval ;).
Dat heb ik gedaan omdat er emailadressen in staan, en het leek me praktisch om die niet te hoeven obfuscaten aangezien het om die adressen gaat.

Maar intussen heb ik de kern van het probleem al ontdekt, dus voor het nageslacht (of een betere oplossing?):

postmap -q is leuk, maar werkt niet recursief. postfix zelf gaat wel recursief door de lijst heen. Dus de eerste keer matcht hij netjes zoals het hoort en de tweede keer gaat alles alsnog naar de catchall. De enige oplossing die ik tot nu toe heb gevonden die werkt is de catchall dan maar beperken:

code:
1
2
3
if !/^.+@(?:(?:localhost)|(?:jeroen-vanspamven\.nl)|(?:hotmail\.com))$/
/.+/ junkmail@localhost
endif


Eigenlijk is dat vragen om problemen, maar bijvoorbeeld virtual_alias_recursion_limit=1 zetten werkt niet aangezien hij bij het bereiken van die limiet niet de recursie breekt, maar de mail defert!

Mocht iemand iets beters bedenken, dan hoor ik het heel graag.

"I don't always test my code, but when I do, I test on production."


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:30

Hero of Time

Moderator LNX

There is only one Legend

Mail adressen obfuscaten is met plain text 1000x makkelijker: je zet er gewoon wat anders neer. Hoef je ook niet te gaan vingerverven.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 01-10 16:13

Kees

Serveradmin / BOFH / DoC
Overigens krijg je een stuk meer informatie als je even in je config zet:
debug_peer_list = $ip-van-de-versturende-mailserver

Verder zou ik je regexpes zo opschrijven dat ze duidelijker zijn, dus geen /A erachter, maar gewoon met ^ beginnen.

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan