Levelezés

Csak kimenő smtp postfixal és sasl autentikációval

Telepítsünk Ubuntu 14.04-en vagy Arch Linux-on egy csak kimenő smtp szolgáltatást nyújtó Postfix-ot, amely sasl segítségével autentikál.

Mivel a csak kimenő smtp létjogosultsága általában a szolgáltatás sebességnövelése, az autentikáció nem relációs adatbázisból történik  (pl. mysql), és természetesen nincs vírus-, spam-, és RBL szűrés. Először alapozunk, azután elvégezzük a telepítéseket és beállításokat, majd tesztelünk.

Alapozás

Egy bejövő levelezésre is alkalmas környezet telepítéséről (és ezen belül a postfix-ről) itt irtam, ezért az alapokról már nem írok. A postfix telepítése/beállítása lényegében majdnem ugyanazok, az igazi különbség az, hogy nincs bejövő e-mail kezelés, illetve az autentikáció no-sql-sasl típusú. Ráadásul – hogy ne legyen túl sok réteg – a sasl által kínált sasldb metódust választjuk, ami azt jelenti, hogy nem fordul pl. a PAM-hez, hanem egy általa kezelt adatbázis fájlból veszi az autentikációs adatokat.

De mi is az a SASL?

A SASL egy autentikációs réteg vagy keretrendszer, amelynek segítségével SASL-t implementásló alkalmazások tudnak SASL-t implementáló alkalmazásokkal hitelesíttetni magukat. A SASL jó pár mechanizmust és adattárolási forrást ismer. Ahogy korábban említettem, az adattárolási formák közül a sasldb típusút választjuk, amit hivatalosan talán úgy is hívnak, hogy libsasl authentication database.

A postfix önmagában kétféle SASL implementációt ismer: dovecot és cyrus. A dovecot most nem lényeges, a cyrus pedig a legjobb olyan megoldás, amely a postfix átírása nélkül lehetséges legtöbb/legjobb funkcionalítást adja. Amit még tudnod kell: a cyrus sasl által egy különálló hitelesítési démon fut a háttérben, amit saslauthd-nek hívnak.

Telepítés, beállítások

Először is telepítsük a legfontosabb programokat:

Ubuntu:

#Ubuntu apt-get install postfix postfix-pcre pfqueue libsasl2-modules sasl2-bin libsasl2-2 #Arch Linux pacman -S postfix cyrus-sasl sudo -H -u username yaourt -S pfqueue

A postfix mellett új elemként tűnhet fel:

  • pfqueue, amely egy queue nézegető program, hibakereséshez kiváló
  • libsasl2, amellyel az smtp autentikációt fogjuk kezelni
  • libsasl-modules, amely a sasldb kezelésének ismeretét hordozza magában
  • sasl2-bin, amely a parancssoros programokat adja, pl. az adatbázis fájl kezeléséhez

A postfix beállításait két fájlban találjuk: /etc/postfix/main.cf és /etc/postfix/master.cf. A main.cf tartalmazza a postfix beállításait, míg a master.cf a postfix belső folyamatainak beállításait.

Először a main.cf-ben állítsuk be a legfontosabb paramétereket: hálózat, továbbítások, adatforrások (ezeket később vázoljuk), stmp szerver autentikácó, smtp szerver ellenőrzési paraméterek:

# NETWORK myhostname = smtp.szerverem.hu myorigin = /etc/mailname mydestination = smtp.szerverem.hu, localhost relayhost = mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 inet_interfaces = all inet_protocols = ipv4 # MAPS mailbox_size_limit = 0 recipient_delimiter = + relay_recipient_maps = local_transport = error local_recipient_maps = transport_maps = hash:/etc/postfix/transport alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases # TUNING default_destination_concurrency_limit=100 default_destination_recipient_limit=100 default_process_limit=300 smtp_mx_session_limit=200 smtpd_client_connection_count_limit=200 smtp_destination_concurrency_limit=100 maximal_backoff_time = 1000s minimal_backoff_time = 300s # SMTP AUTH RULES smtpd_helo_required = yes smtpd_sender_restrictions =  permit_mynetworks,  permit_sasl_authenticated,  reject_unknown_sender_domain smtpd_recipient_restrictions =  reject_non_fqdn_sender,  reject_non_fqdn_recipient,  permit_mynetworks,  permit_sasl_authenticated,  reject_unauth_destination smtpd_relay_restrictions =   permit_mynetworks,  permit_sasl_authenticated,   defer_unauth_destination #STMPD AUTH SETTINGS smtpd_sasl_type = cyrus smtpd_sasl_path = smtpd smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = szerverem.hu smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes disable_vrfy_command = yes 

permit_mynetworks akár el is hagyható, legalábbis egy hanyagabb hálózatban veszélyes is lehet. Amire figyelned érdemes, az az smtpd_sasl_local_domain paraméter, illetve annak értéke. Később meglátod, hogy miért.

Továbbiakban a postfix folyamatait állítjuk be:

smtp      inet  n       -       -       -       -       smtpd 26      inet  n       -       -       -       -       smtpd submission inet n       -       n       -       -       smtpd   -o smtpd_sasl_auth_enable=yes   -o smtpd_sasl_security_options=noanonymous   -o smtpd_sasl_local_domain=example.tld   -o header_checks=   -o body_checks=   -o smtpd_client_restrictions=permit_sasl_authenticated,reject_unauth_destination   -o smtpd_relay_restrictions=permit_sasl_authenticated,reject   -o smtpd_sasl_tls_security_options=noanonymous smtps     inet  n       -       -       -       -       smtpd   -o smtpd_tls_wrappermode=yes   -o smtpd_sasl_auth_enable=yes   -o smtpd_relay_restrictions=permit_sasl_authenticated,reject   -o smtpd_client_restrictions=permit_sasl_authenticated,reject_unauth_destination   -o smtpd_sasl_security_options=noanonymous,noplaintext   -o smtpd_sasl_tls_security_options=noanonymous   -o smtpd_sasl_local_domain=example.tld   -o header_checks=   -o body_checks= 

Figyeld meg, hogy itt is megjelenik az smtpd_sasl_local_domain paraméter.

Most pedig állítsuk be az smtpd hitelesítéshez szükséges sasl paramétereket. Az /etc/postfix mappában hozzunk létre egy könyvtárt: sasl.

mkdir /etc/postfix/sasl

A sasl könyvtár fogja tartalmazni az smtp authentikáció paramétereit. Itt hozzunk létre egy smtpd.conf fájlt:

touch /etc/postfix/sasl/smtpd.conf

Az smtpd.conf fájl tartalma:

pwcheck_method: auxprop auxprop_plugin: sasldb mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5 allow_plaintext: true 

Hozzuk létre a sasldb adatbázist, amely egyébként alapértelmezetten az /etc/sasldb fájl. Az adatbázis kezelését parancssoros programokat teszik lehetővé. A legalapvetőbb feladatok:

  • új user felvétele
  • user módosítása
  • user törlése

Állítsuk be a sasl adatbázist:

saslpasswd2 -c -u

szerverem.hu

 $user chown postfix:postfix /etc/sasldb2 chmod 660 /etc/sasldb2

Kapcsolók jelentése:

  • -c kapcsoló: create,
  • -u kapcsolo: realm (domain, tartomány)

A -u kapcsoló a lényeg. Korábban már említettem az smtpd_sasl_local_domain postfix paramétert: annak értéke kerüljön ide. Mindig. Ha az smtpd_sasl_local_domain értéke humbug.hu, akkor az userek kezelésénél a -u humbug.hu kapcsolót kell használnod. Miért fontos? Mert az adatbázis fájlban több alkalmazás adatait tudod tárolni, és az első elválasztó/csoportosító megoldás a realm megadása.

A saslpasswd2 bekéri a jelszót kétszer, és nagyjából ennyi az összes feladatod.

Tulajdonképpen el is készültél, a programok telepítve, beállítva, az első usered rögzítve. Indulás előtt még meg kell tenned azt, hogy:

Ubuntun: az /etc/default/saslauthd fájlban a START=no értékét állítsd yes-re állítani, illetve a MECHANISMS értéke sasldb legyen (enélkül nem fog menni, mert az alapértelemezett a pam).

Arch Linuxon: az /etc/conf.d/saslauthd fájlban a “-a pam” értéket állítsd át:

SASLAUTHD_OPTS="-a sasldb -n 5 -c "

Ezután indítsd el a saslauthd démont:

#Ubuntu service saslauthd start #Arch Linux systemctl enable saslauthd systemctl start saslauthd

És itt jön az igazi cheat: ha master.cf-ben az smtp és/vagy a 26-os port chroot oszlopa “-” vagy “y” értékű, akkor az /etc/sasldb2 fájlt át kell másolnod a /var/spool/postfix/etc mappába, mert a postfix chroot-ban fut, tehát nem lát ki az igazi /etc/sasldb fájlra. Neki ekkor a /var/spool/postfix a root, ezért az itt található etc mappába kell átmásolnod a sasldb fájlt.

A másik megoldás az lehet, ha a chroot oszlop értékét “n”-re állítod, és akkor nem kell ezzel foglalkoznod:

smtp      inet  n       -

n

       -       -       smtpd 26      inet  n       -

n

       -       -       smtpd

Én ezt választottam.

Ezután elindíthatod a levelezőszervert is:

#Ubuntu service start postfix #Arch Linux systemctl enable postfix systemctl start postfix

Smtp teszt

Smtp kapcsolatot (akár autentikációs, akár küldést) a swaks programmal tudsz a legjobban tesztelni.

Autentikációs teszt:

swaks --server szerverem.hu --port 26 --auth PLAIN --auth-user smtpUsername --auth-password smtpuserPassworrd --quit-after AUTH

Teszt levélküldés:

swaks --server szerverem.hu --port 26 --auth PLAIN --auth-user smtpuserName --auth-password smtpuserPassword --to to@toDomain.hu --from from@fromDomain.hu

Loading

Címkék