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