Fórum Root.cz
Hlavní témata => Server => Téma založeno: PK69 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
-
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ž.
-
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
-
v main.cf sa pozrite na virtual_mailbox_maps. Má vracať cestu k mailboxu. Potrebujete tam priradiť niečo takéto:
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:
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
-
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
-
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.
-
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:
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
-
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:
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