Nullmailer

Itt volt a kérdés: https://hup.hu/node/157110

Röviden a cél: van egy rendes FQDN nélküli, dinamikus IP-s házi szerver, ahonnan emailt kell küldeni (leginkább riasztás), fogadni nem.

A küldéssel ugyebár az a gond, hogy ha egy rendes MTA-t teszek fel, sok nyűg lenne avval, hogy a nagy szolgáltatók ne vegyék SPAM-nek, muszáj valami smarthost megoldás. Ezen felül nekem fontos az egyszerű konfiguráció.

Kb. olyan megoldást akartam, ahol minden helyi account mappelve van egy aliasolt Gmail accountra, feladó és címzett fejlécben is, és a Gmail SMTP lenne használva smarthostnak. Tehát van egy darab Gmail cím, gipszjakab@gmail.com, a root lenne gipszjakab+root@gmail.com, stb. Ez azért jó, mert bármelyik helyi account tud bármelyik másiknak küldeni, plusz külső címekre is, és látszik, melyik account rejtőzik a közös Gmail cím mögött (hogy pl. lehessen szűrni).

Exim, Postfix és hasonlók esetén van megoldás mindenféle ügyes mappelésre, sőt, túl sok megoldás is van. Sok doksit olvastam, és végül egyik sem tűnt elég egyszerűnek (kezdő vagyok ilyen szempontból), azt sem tudtam, melyik irány lenne jó a több közül. Habár az eredeti témában jött már config javaslat, amit köszönök, de valami kisebb problémám mindegyikkel volt. (Azért több ismeretlenes a dolog, mert van a smarthost, van a feladó oldali cím átírás, a címzett oldali, plusz a mail és egyéb parancsokkal való együttműködés is.)

Végül megtaláltam a nullmailer-t, és ez nyert. Ez sem tudja 100%-ban, amit elképzeltem, de eléggé közelít, a config és erőforrásigény viszont verhetetlenül minimális. Debianra van friss csomag, és ráadásul még konfig fájlt se muszáj szerkeszteni, mert a dpkg pár kérdésből megírja őket.

A minimáli konfig nálam:
* /etc/nullmailer/adminaddr: gipszjakab@gmail.com (minden helyi levél ide lesz kézbesítve)
* /etc/nullmailer/defaultdomain: valami.kamu.domain.com (root helyett root@valami.kamu.domain.com kerül az emailbe)
* /etc/nullmailer/remotes: smtp.gmail.com smtp port=587 starttls user=gipszjakab@gmail.com pass=xxxxxxxx

A nullmaileren kívül kell még egy mail(1) parancs, amire több csomag is van, én a mailutils nevűt tettem fel. És működik tökéletesen.

root:~# echo teszt | mail joco

Itt a feladó root@valami.kamu.domain.com lenne, de sajnos a Gmail átírja az autentikált email címre. Fejlécből kiderül az eredeti feladó. Írtam a fejlesztőnek, hogy ezen lehetne javítani, ha legalább az account nevét beletennénk, azt nem írja át a Gmail. [https://github.com/bruceg/nullmailer/issues/52] Összesen ez a gond, amiért nem 100%-os a megoldás, hanem csak 99%. A címzett joco@valami.kamu.domain.com, ahogy elvártam. A Github linken van screenshot is.

Miért jó ez? Mert egy csomó démon alapból root-nak vagy egyéb helyi accountnak küld levelet. Egy ilyen megoldással semmi mást nem kell konfigurálni, minden helyi accountnak küldött levél a Gmailben köt ki és látom rögtön. ZED-del (ZFS event demon) megy szépen, gondolom crontab is el tudná sírni most már a bánatát emailben.

root:~# echo teszt | mail valaki@valami.com

Ez is működik, ha épp logokat, bugreportot vagy bármit akarok a gépről küldeni egyszerűen.

Találtam rögtön pár bugot is, jelentettem, kb. 1 héten belül javítva lett. És még szépen meg is lettem említve: https://github.com/bruceg/nullmailer/blob/9186c42/NEWS

Ja, még annyit hozzáteszek, hogy regisztráltam egy külön Gmail fiókot a szervernek, hogy ne az éles, 2-faktoros Gmail fiókom adatait kelljen ide beírni. (Tudom, van app specific password, de akkor is.) Ez a külön account így teljesen jól elmegy egyszerűbb biztonsági beállításokkal is. És innen minden levelet forwardolok az éles Gmail fiókba. Állítólag ezt nem tiltja a policy.