Fórum Root.cz

Hlavní témata => Server => Téma založeno: drobek1 25. 01. 2022, 21:23:06

Název: Postfix - jak nakonfigurovat chování adresy příjemce jako má GMail
Přispěvatel: drobek1 25. 01. 2022, 21:23:06
Provozuju vlastní VPSku a mám na ní rozeběhnutý e-mailový server pro doménu (postfix).
Mailovou schránku mám pro sebe primárně jednu a k ní definuji aliasy (/etc/aliases) podle služeb kde se registruji, což není úplně komfortní. Tak sem zvažoval nastavit podobné chování jako má GMail tj. v části před '@' vše co je za '+' při vyhodnocování ignorovat a dát do schránky podle toho co je před '+'. To není problém nastaví se jeden parametr:
Kód: [Vybrat]
main.cf: recipient_delimiter = +Tím pádem mi funguje formát uživatel+služba@mojedoména.tld => uloží mi e-mail do lokální schránky uživatel.
Ale jak nastavit tu druhou funkcionalitu co má GMail, tj. jak umožnit aby se v adrese daly používat znaky '.'. Tj. když mi přijde e-mail u.ž.i.v.a.t.e.l@mojedoména.tld(popř. jakékoliv jiné kombinace '.' v adrese) aby byl uložen do schránky uživatel?  A zároveň aby postfix neprotestoval že uživatel neexistuje (mám nastavenu kontrolu existence e-mailové schránky uživatele). S tím že očekávám že do schránky mi přijde adresa v tom původním fomátu, aby se na to dalo nasadit nějaké filtrovací pravidlo.
Název: Re:Postfix - jak nakonfigurovat chování adresy příjemce jako má GMail
Přispěvatel: Filip Jirsák 25. 01. 2022, 21:54:08
Takovou funkcionalitu Postfix přímo vestavěnou nemá, můžete k tomu ale použít obecnou funkcionalitu map. Např. tady je podobný příklad: Rewriting addresses in Postfix with regular expressions (https://velenux.wordpress.com/2011/08/04/rewriting-addresses-in-postfix-with-regular-expressions/) a když budete googlit, najdete další. Záleží na konkrétním způsobu použití, zda by nebylo lepší použít jinou tabulku, třeba alias nebo virtual_alias.
Název: Re:Postfix - jak nakonfigurovat chování adresy příjemce jako má GMail
Přispěvatel: drobek1 26. 01. 2022, 00:22:54
Děkuji za postrčení.
Takže pokud nastavím
Kód: [Vybrat]
/etc/postfix/main.cf:
  recipient_delimiter = +
  recipient_canonical_maps = regexp:/etc/postfix/rewrite

Kód: [Vybrat]
/etc/postfix/rewrite:
   /^(.*)\.(.*)@((.*\.)*mojedoména\.tld)$/ ${1}${2}@${3}
zdroj - Remove undetermined number of dots in postfix canonical mail regexp (https://superuser.com/questions/1423386/remove-undetermined-number-of-dots-in-postfix-canonical-mail-regexp)

Výsledek je dle požadavku. Tj. v hlavičce e-mailu je:
Kód: [Vybrat]

X-Original-To: u.ž.i.v.a.t.e.l+služba@mojedoména.tld
Delivered-To: uživatel+služba@mojedoména.tld
To: u.ž.i.v.a.t.e.l+služba@mojedoména.tld

Prošlo to kontrolou existence e-mailu příjemce a přišlo to do správné schránky.
Ještě by to chtělo poladit ten regulární výraz, aby nemusel obsahovat konkrétní doménu ale jel přes proměnnou z main.cf. Tj. pokud si přidám v konfigu další domény tak aby to platilo pro všechny.
Název: Re:Postfix - jak nakonfigurovat chování adresy příjemce jako má GMail
Přispěvatel: Filip Jirsák 26. 01. 2022, 08:57:53
Doména v regulárním výrazu nemusí být uvedená. Prostě tam dejte, že za zavináčem může být cokoli, zapamatujte to jako skupinu a tu pak vložíte zase do pravé části za zavináčem – v tom vámi uváděném příkladu už to podobně je udělané.
Název: Re:Postfix - jak nakonfigurovat chování adresy příjemce jako má GMail
Přispěvatel: drobek1 26. 01. 2022, 13:01:27
Máte pravdu to by mohlo jít. Ten původní příklad co sem našel tak cílil na proměnnou canonical_maps a ta je použitá na obě strany tj. jak na příjemce tak na odesílatele, proto tam byla vyplněna doména.