Încerc să construiesc un mic server Postfix/Cyrus pe stația mea de lucru Linux pentru a acționa ca un proxy între clientul meu de e-mail (Thunderbird) și serverul de e-mail al companiei mele, dar și să gestionez e-mailurile de sistem local (lucruri trimise de crontabs pentru exemplu).
Pe serverul Cyrus am creat o cutie poștală care imită adresa de e-mail a companiei mele, am configurat aliasuri în /etc/aliases
pentru a trimite e-mail-uri locale destinate rădăcină
sau director de poştă
la această adresă și mulțumiri lui hărți_transport
directiva, care are prioritate față de orice altceva, a instruit Postfix să livreze e-mailurile destinate acestei adrese de e-mail direct la soclul lmtp al lui Cyrus. Această parte funcționează perfect: toate e-mailurile locale destinate acelor utilizatori prezenți în /etc/aliases
este livrat în căsuța mea poștală Cyrus locală, în timp ce toate e-mailurile pentru alte domenii (sau chiar domeniul companiei mele) merg la gazda releu (serverul de e-mail real al companiei mele), după ce Din:
antetul este rescris la adresa mea de e-mail actuală a companiei datorită smtp_generic_maps
(care acționează numai asupra corespondenței de ieșire, spre deosebire de hărți_canonice_emițătorului
sau hărți_canonice_destinatarii
). Acest lucru este aproape perfect.
Problema cu care mă confrunt este că Postfix acceptă toate e-mailurile destinate utilizatorilor locali, chiar și utilizatorilor de sistem, și le livrează în fișierele mbox în /var/spool/mail
, ceea ce nu vreau.
Am încercat să setez hărți_destinatari_locale
la numai $alias_maps
(excluzând proxy:unix:passwd.byname
care este conținut în valoarea implicită), dar acest lucru nu schimbă nimic.
Am încercat și eu să setez cutie_poștală_transport
pentru a livra acele e-mailuri la soclul lmtp al lui Cyrus, dar apoi Postfix îi trimite lui Cyrus tot ceea ce nu este listat în $alias_maps
, indiferent dacă există sau nu în baza de date Unix passwd (setarea mailbox_transport_maps = $alias_maps
nu ajută).
Cu aceste setări, e-mail către utilizatori inexistenți (sau conturi Unix existente care nu au alias în $alias_maps
) ajunge respins de Cyrus (cu 550-Cutie poștală necunoscută
), dar mi-ar plăcea ca acele e-mailuri să fie respinse direct de Postfix, evitând călătoria inutilă (IMHO) dus-întors către Cyrus.
Dacă ceea ce încerc să obțin este cu adevărat imposibil, mă voi mulțumi cu asta.
Am încercat și eu să setez transport local
la soclul lmtp al lui Cyrus, dar este și mai rău: toate e-mailurile sunt trimise direct către Cyrus, fără nicio alias (deci toate e-mailurile locale sunt respinse, chiar și atunci când utilizatorul local este prezent în $alias_maps
).
Știu că aș putea ignora local
complet și gestionați toate corespondența cu virtual
agent de livrare (este ceea ce fac de obicei atunci când configurez un real server de mail, folosind doar domenii virtuale/cutii poștale), dar îmi place configurația foarte simplă cu care am ajuns până acum (/etc/postfix/main.cf
în prezent conține doar 10 linii reale sau cam asa ceva) și mi se pare foarte surprinzător că local
nu poate fi instruit să ignore baza de date a parolelor Unix și să respingă tot ceea ce nu este de fapt listat în $alias_maps
(cu excepția cazului în care am înțeles greșit documentația, este ce hărți_destinatari_locale
este pentru).
Iată configurația mea:
/etc/postfix/main.cf
compatibility_level = 2
myhostname = <FQDN-ul stației mele de lucru în lan>
inet_interfaces = doar loopback
mynetworks_style = gazdă
relayhost = <MX intern al companiei mele>
alias_maps = hash:/etc/aliases (pentru a exclude nis:mail.aliases)
transport_maps = hash:$config_directory/transport_maps
smtp_generic_maps = hash:$config_directory/smtp_generic_maps
biff = nu
/etc/aliases
postmaster: rădăcină
root: <adresa mea de e-mail actuală a companiei>
/etc/postfix/transport_maps
<adresa mea de e-mail actuală a companiei> lmtp:unix:/run/cyrus/socket/lmtp
/etc/postfix/smtp_generic_maps
@<FQDN-ul stației mele de lucru în lan> <adresa de e-mail actuală a companiei>
După cum vezi, foarte simplu.
Nu există o modalitate de a instrui Postfix să respingă e-mailurile pentru utilizatorii sistemului sau, mai precis, să respingă e-mailurile pentru utilizatorii care nu sunt enumerați în mod explicit în $alias_maps
?