Postfix + sasl + mysql probléma

Fórumok

Sziasztok!

Próbálom beleverni a fejembe hogyan is kellene működésre bírni egy postfix + sasl2 + mysql kombinációt, és az egész cuccot chroot-ba futtatni.

Nézegettem a neten. Már két napja küzdök. Sajnos több leírást is átnéztem, és valahogy próbáltam kombinálni a dolgokat, de sehogy nem sikerült.

Kellene néhány ötlet, hogy hogyan érdemes a lehető legbiztonságosabban ezt az egészet megcsinálni.

Ez a leírás alapján álltam neki konfigolni:
http://postfix.wiki.xs4all.nl/index.php?title=Virtual_Users_and_Domains…

Valamiért sehogy nem megy...
Ráadásul itt pop3-nak dovecot van, én pedig courier-t akarok, de most a pop3 annyira nem izgalmas. Először a postfix működjön autentikációval (ha lehet, valami md5 féle jelszótitkosítással)

Tud valaki segíteni, hogy hogyan is kellene neki állnom?
Köszi.
Üdv.

Hozzászólások

A courier-t sikerült is megfelelően beállítani. Legalábbis az autentikáció műxik. Nem dob rá hibát. Ellenben az smtp esetében a következő hiba van a log-ba:
Feb 20 16:10:06 debian postfix/smtpd[18037]: warning: unknown[192.168.192.12]: SASL LOGIN authentication failed: authentication failure
Feb 20 16:10:06 debian postfix/smtpd[18037]: lost connection after AUTH from unknown[192.168.192.12]
Feb 20 16:10:06 debian postfix/smtpd[18037]: disconnect from unknown[192.168.192.12]

Azt látom, hogy mintha próbálni autentikálni, de nem igazán akar összejönni. A /etc/postfix/sasl/smtpd.conf fájlba a következő van:
pwcheck_method: auxprop
mech_list: PLAIN LOGIN
auxprop_plugin: sql
sql_verbose: yes
sql_engine: mysql
sql_hostnames: 127.0.0.1
sql_user: system
sql_passwd: system
sql_database: system
sql_select: SELECT password FROM mailbox WHERE username = '%u@%r'

próbált a sql lekérdezés végén '%u'-val is. De semmi változás. Nem lehet valahogy beállítani, hogy bővebben naplózzon? Mondjuk hogy ne csak ezt írja bele a logba, hanem kicsit több infót.

Ilyen mar volt:
Nezz szet itt

-----
“Firefox, you say? No I don't play Pokémon”

A postfix kepes chroot-ban futni, de eloszor is tudnod kell, mit jelent maga a fogalom: chroot.

Azt jelenti, hogy adott egy mappa (mondjuk /var/lib/postfix) es ettol kijjebb SEMMIT nem lat a chroot-olt program, tehat mar a /var/lib -rol sem tud, hanem ugy latja, mintha a /var/lib/postfix lenne a /. Azaz mindent innentol kell szamolni, tehat a /var/lib/postfix/private az a chroot-olt program szamara a /private mappa.

Ezek utan a mysql-t is igy kell konfigolni. Ha socketen akarsz hozza kapcsolodni (ajanlott) akkor be kell vinni a socketet. Szimbolikus linkkel nem teheted be, hiszen a chroot-olt program nem tudja a chroot-on kivulre kovetni a linket. Vagyis vagy be kell mountolni (mount -o bind /var/run/mysql /var/lib/postfix/mysql), vagy a MySQL-nek kell azt mondani, hogy a socketet a /var/lib/postfix/mysql ala hozza letre, es a tobbi programnak kilinkeled a socket egyebkent alapertemezett helyere (hiszen a nem chroo-olt programok kepesek lekovetni a szombolikus linket).

A dovecot azert jo, mert az is tud chroot-ban futni explicite chroot epitese nelkul (az imap login utan chroot-ol, ez azert jo, mert nem kell a mysql-t betenni a dovecot chroot-jaba).

MD5 jelszotitkositast most felejtsd el. Olyan csomagot nezz, ami SHA-t tud, az md5 minden, csak nem biztonsagos.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

Köszi. Tudom, mit jelent a chroot. Csak azt nem tudtam, hogy a postfix alapba így fut. :-) Azzal most ismerkedtem meg. :-)

Viszont ott már probléma volt, hogy a mysql-t is be kéne vinni... :-) Erre nem gondoltam. Megpróbálom.

Egyelőre az md5 sem olyan izgalmas... Csak működne...

Most ilyen üzeneteim vannak a logba:
Feb 20 18:18:16 debian postfix/smtpd[19762]: warning: SASL authentication failure: cannot connect to saslauthd server: Permission denied
Feb 20 18:18:16 debian postfix/smtpd[19762]: warning: unknown[192.168.192.12]: SASL LOGIN authentication failed: generic failure
Feb 20 18:18:16 debian postfix/smtpd[19762]: lost connection after AUTH from unknown[192.168.192.12]
Feb 20 18:18:16 debian postfix/smtpd[19762]: disconnect from unknown[192.168.192.12]

Alakul a probléma... Már itt tartok:

Feb 20 19:22:19 debian saslauthd[23921]: pam_mysql - SELECT returned no result.
Feb 20 19:22:19 debian saslauthd[23921]: DEBUG: auth_pam: pam_authenticate failed: User not known to the underlying authentication module
Feb 20 19:22:19 debian saslauthd[23921]: do_auth : auth failure: [user=user] [service=smtp] [realm=domain.tld] [mech=pam] [reason=PAM auth error]

Valakinek ötlete?
A /etc/pam.d/smtp fájlban rendesen benne vannak az adatok ami a mysql-hez kell.

Rohadt érdekes, hogyha kiveszem az SMTP autentikációt, akkor meg elküldi a tesztlevelet...

Most már végképp nem értem...
main.cf tartalma (ha valami nem jó, kérlek szóljatok):
# See /usr/share/postfix/main.cf.dist for a commented, more complete version

# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
smtp_use_tls = yes
smtpd_tls_cert_file = /etc/postfix/smtpd.cert
smtpd_tls_key_file = /etc/postfix/smtpd.key
smtpd_use_tls = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = server1.example.com
mydomain = server.local
myorigin = $mydomain
mydestination = $myhostname, $mydomain
recipient_delimiter = +
inet_interfaces = all

# Virtual settings
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_gid_maps = static:1001
virtual_mailbox_base = /var/mail/virtual
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_limit = 51200000
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 1001
virtual_transport = virtual
virtual_uid_maps = static:1001
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = "The user you are trying to reach is over quota."
virtual_overquota_bounce = yes
relay_domains = mysql:/etc/postfix/mysql_relay_domains_maps.cf

# SASL settings

broken_sasl_auth_clients = yes
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unauth_destination,
reject_unauth_pipelining,
reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous

Nah végre valami. Mivel nálam a postfix alapba chroot-ba fut, ezért a master.cf-be kikapcsoltam az ő chroot-ját. Így tökéletesen működik a Courier-authdeamon-nal, ami előtte már korábban tökéletesen működött. Így egy autentikációs felületről működik az smtp és a pop3 is.

Még egy kérdésem lenne. A következő jelszó az milyen típusú: $1$caea3837$gPafod/Do/8Jj5M9HehhM.
Ja és hogy tudok ilyet generáltatni... :-) Erre még nem jöttem rá.

Köszi.

Köszi.

Szerintem teljesen mindegy. Alapba az egész cucc egy chroot-ba fut, úgyhogy szerintem nem olyan izgalmas a dolog. Viszont így sokkal jobb szerintem az autentikáció az courier-es autdémonnal. Mert akkor a pop3 és az smtp is egy oldalról megy. Az meg jól autentikál. :-)

Most a hülye júzer ellenőrzésekkel szívok...

Üdv.

Így korán reggel van még egy igen furcsa gondom. A következő beállítások vannak a Postfix-be:

# SASL settings
smtpd_sasl_auth_enable = yes

smtpd_sasl_security_options = noanonymous

smtpd_sasl_local_domain = $myhostname

broken_sasl_auth_clients = yes

smtpd_sender_login_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf

smtpd_sender_restrictions = permit_mynetworks, reject_sender_login_mismatch

smtpd_client_restrictions = reject_unknown_client

smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated,
reject_unauth_destination,
reject_invalid_hostname,
reject_unknown_sender_domain

Hiába vannak ezek beállítva, autentikáció nélkül simán elküldi a levelet. Mindeféle megerőltetés nélkül. Ha autentikáltatom, a következő hibaüzenetet kapom:
Feb 20 21:35:38 debian postfix/smtpd[27954]: NOQUEUE: reject: RCPT from gabor.localnet[192.168.192.12]: 553 5.7.1 : Sender address rejected: not owned by user test_at_domain.tld; from= to= proto=ESMTP helo=
Feb 20 21:35:38 debian postfix/smtpd[27954]: lost connection after RCPT from gabor.localnet[192.168.192.12]
Feb 20 21:35:38 debian postfix/smtpd[27954]: disconnect from gabor.localnet[192.168.192.12]

Ahh.
Némi leíráshiányba szenved gyakorlatilag az összes létező leírás, ami a chrooted postfix + sasl kombinációt csinálja. Furcsa volt a permission denied. Tök véletlenül akadtam rá, hogy esetleg ha a postfix be lenne rakva a sasl csoportba, nem lenne permission denied hiba... Hát igen... Ez a lépés sehol nincs leírva. Hiába van a /var/spool/postfix/var/run/saslauthd mappába a socket, ha nincs joga a postfix-nek, hogy olvasson belőle... No mindegy.

Most már az autentikáció műxik, de csak akkor, ha sima titkosítatlan szövegként van tárolva a dolog. Van valami módszer arra, hogy esetleg a jelszó mondjuk titkosítva legyen? A courier-authdaemond md5+salt-ot használ. Van valami mód arra, hogy ezt rábírjuk a saslauthd-ra is?