Postfix - sdílení virtuálních domén

Postfix - sdílení virtuálních domén
« kdy: 22. 07. 2011, 12:08:38 »
Zdravím

potřeboval bych co nejjednodušeji sdílet třídění mailů pro virtuální domény a virtuální účty.
K existující doméně např. @domena1.cz potřebuji přidat @domena2.cz tak, aby již existující třídění pro @domena1.cz platilo i pro @domena2.cz

Díky za tip

Pavel


Gazda

Re: Postfix - sdílení virtuálních domén
« Odpověď #1 kdy: 22. 07. 2011, 12:25:30 »
Aký backend používate na ukladanie tých virtuálnych domén, e-mailových účtov, etc? S SQL je to hračka, s LDAP to ide určite tiež.

Re: Postfix - sdílení virtuálních domén
« Odpověď #2 kdy: 22. 07. 2011, 13:14:59 »
Jako backend je použit MySQL.
Dokážu použít "brutal force" řešení a napsat SQL skript, který mi vytvoří příslušné aliasy automaticky. Jenže při stovkách adres to bude hodně nepřehledné....
Jde mi spíš o to, jestli to nejde udělat nějak elegantně přes nějaký parametr Postfixu, který mi uniká.


díky Pavel

Gazda

Re: Postfix - sdílení virtuálních domén
« Odpověď #3 kdy: 22. 07. 2011, 15:46:01 »
v main.cf sa pozrite na virtual_mailbox_maps. Má vracať cestu k mailboxu. Potrebujete tam priradiť niečo takéto:
Kód: [Vybrat]
virtual_mailbox_maps = mysql:/etc/postfix/virtual_mailbox_maps
Do súboru /etc/postfix/virtual_mailbox_maps potom môžete zapísať (okrem iného) niečo ako:
Kód: [Vybrat]
query = select 'default-domain.com/'|| lower('%u') ||'/' from mailboxes where alias = lower('%u')
Tým prakticky ignorujete doménu adresáta správy a všetky správy doručujete ako keby boli adresované do default-domain.com

Re: Postfix - sdílení virtuálních domén
« Odpověď #4 kdy: 22. 07. 2011, 16:06:36 »
Díky,
nad něčím podobným jsem uvažoval taky, trochu mi vadí nazev domény "natvrdo zadrátovaný" v SQL dotazu, asi bych to řešil nějakou další tabulkou...

Taky jsem chtěl řešení předřadit co nejvýš.

Další domény by mělo jít přidávat a odebírat s co nejmenším úsilím, škoda že neexistuje něco co by například přepsalo název domény v obálce mailu poté co přijde do fronty...

Pavel


Gazda

Re: Postfix - sdílení virtuálních domén
« Odpověď #5 kdy: 22. 07. 2011, 16:21:28 »
trochu mi vadí nazev domény "natvrdo zadrátovaný" v SQL dotazu, asi bych to řešil nějakou další tabulkou...
Ja som z podobného dôvodu delivery logic zapúzdril do PL/pgSQL-funkcie, ktorá vracia tabuľku. (S funkciou vracajúcou text sa nedá rozumne pokryť situácia, keď ide o neexistujúci alias. Postfix nevyhodnocuje NULL tak, ako by sa dalo očakávať.) Inou možnosťou je nejaký subselect. Posúďte sami, čo z toho mySQL podporuje.

Re: Postfix - sdílení virtuálních domén - ŘEŠENÍ
« Odpověď #6 kdy: 23. 07. 2011, 15:23:57 »
Takže nakonec jsem to vyřešil úpravou sql dotazu, řešení funguje pro všechny domény na serveru.

Jestli to někomu pomůže tak příslušný dotaz v MySQL vypadá takto:
Kód: [Vybrat]
query = SELECT goto FROM pa_aliases WHERE LEFT(address,INSTR(address, '@')-1) = '%u'
V poli address je uložena celá adresa ve tvaru jmeno@domena.cz, ze které příkazem  LEFT(address,INSTR(address, '@')-1) dostanu jmeno.
Za parametr %u dosadi Postfix mistní část emailové adresy, takže prakticky se hledá jen podle lokální části adresy, bez ohledu na domenu.

Pavel

Re: Postfix - sdílení virtuálních domén - ŘEŠENÍ
« Odpověď #7 kdy: 23. 07. 2011, 21:14:05 »
POZOR!

Chybička se vloudila, při kopírování kódu jsem nevybral všechno....

Poslední podmínka omezuje hledání jen na přijímané domény.
Jinak by to nefungovalo při náhodné shodě místních a cizích jmen, např. novak@cizi_domena.cz by byl dorucen do novak@moje_domena.cz atd.
%d nahradí Postfix za doménu z emailové adresy.

Takže správně to celé vypadá takto:
Kód: [Vybrat]
query = SELECT goto
  FROM pa_aliases
  WHERE
         active = '1'
  AND LEFT(address,INSTR(address, '@')-1) = '%u'
  AND '%d' IN (SELECT domain FROM pa_domains WHERE active = '1')

Jako základ jsem použil GroupOffice, proto tam mám ještě podmínku na aktivní schránky a domény. GO má pro Ubuntu/Debian krásnou instalační variantu vše v jednom (instalace i konfigurace) vřele doporučuju. Instalace a konfigurace celého Postfixu včetně backendu je hotová za pár minut...

Pavel