[Megoldva] Postfix virtual alias nem működik

 ( probi | 2015. december 8., kedd - 15:26 )

Sziasztok!

Szeretnék segítséget kérni, mert kicsit elakadtam. Adott egy új levelező szerver postfix-al virtual domainekkel. Ez egy migrált szerver, az eredeti szerveren minden működött. Itt is csak az aliasokkal van gond. Ha alias címre küdök levelet pl

akkor user unknown hibaüzenet kapok vissza. Ha lefuttatom a szerveren a

postmap -q

mysql:/etc/postfix/mysql_virtual_alias_maps.cf akkor szépen visszadja az eredményt.

Tehát megvan user.

A main.cf idevonatkozó része:

virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf

A logban olyat látok, hogy amikor az amavis visszadja a levelet a postfixnak, akkor mondja azt a postfix, hogy user unknown:

Dec 8 14:19:19 ujvalami postfix/pipe[15295]: 7BE7A1240096: to=, relay=dovecot, delay=0.18, delays=0.06/0/0/0.12, dsn=5.1.1, status=bounced (user unknown)

Ha van valakinek ötlete kérem segítsen.

Köszönöm!

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Postfix user tudja olvasni ezt az alias_maps file-t?
Az a proxy: biztosan kell oda, és jól van kofigolva?
Nincs véletlenül egy kósza receive_override_options = ...no_address_mappings... valahol ahol nem kellene?
Dovecot logban mit látsz?

Postfix user tudja olvasni ezt az alias_maps file-t?
Igen tudja most ellenőriztam

Az a proxy: biztosan kell oda, és jól van kofigolva?
Nem kiszedtem, de nem változtatott

Nincs véletlenül egy kósza receive_override_options = ...no_address_mappings... valahol ahol nem kellene?
Nincs ellenőriztem

Dovecot logban mit látsz?

Dec 08 14:45:23 auth: Debug: master in: USER 1

service=lda
Dec 08 14:45:23 auth-worker(14367): Debug: sql(abuse@valami.hu): SELECT CONCAT('/var/vmail/',maildir) AS home, 6060 AS uid, 6060 AS gid FROM mailbox WHERE username = 'abuse@valami.hu' AND active = '1'
Dec 08 14:45:23 auth-worker(14367): Info: sql(abuse@valami.hu): unknown user

Szerintem itt bukik el a dovecotnál. Ez nem az alias táblában hanem a mailbox táblában keresi. Ott meg persze nem találja meg.

Azért keresi a mailbox táblában, mert a postfix nem "oldja fel" az aliast. Ez ugyanis nem az LDA dolga, hozzá már a valós user-nek kellene eljutni, nem pedig az alias-nak.

Amelyik smtpd instance-szel az amavis-tól visszakapod a levelet, ott mi szerepel receive_override_options-ként a master.cf-ben? Mert szerintem ott kellene feloldanod.

Illetve ha a master.cf-ben a releváns sorok végén az "smtpd"-t "smtpd -v"-re cseréled, akkor bőbeszédűbb lesz a logolás.

Azaz pl.

smtp      inet  n       -       -       -       -       smtpd
...
127.0.0.1:abcde inet n    -       n       -       -     smtpd

helyett

smtp      inet  n       -       -       -       -       smtpd -v
...
127.0.0.1:abcde inet n    -       n       -       -     smtpd -v

Teljesen igazad volt. Ez volt a master.cf-ben:

smtp inet n - - - - smtpd
-o smtpd_sasl_auth_enable=yes
-o content_filter=smtp-amavis:[127.0.0.1]:10024
-o receive_override_options=no_address_mappings

Ha a végén a receive_override_options-t kikommentelem, már megy is. Nagyon köszönöm a segítséget! Sokat segítettél rajtam. Próbáltam guglizni, de nem sok eredménnyel. Még egyszer köszi!

Allj! Kell ott lennie egy masik smtpd-nek is, amelyik azon a porton figyel, ahol az amavis visszaadja a levelet. Ott kellene megtortennie a cimzettek feloldasanak.

Igen, ott kellene.

Ha jól gondolom a 10025-ös porton adja vissza az amavis a postfixnek a levelet. A master.cf-ben ez van. Ha az utolsó sorból kiszedem a no_address_mappings részt akkor sem megy.

127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=
-o cleanup_service_name=amavis-cleanup
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_delay_reject=no
-o smtpd_client_restrictions=permit_mynetworks,reject
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o smtpd_data_restrictions=reject_unauth_pipelining
-o smtpd_end_of_data_restrictions=
-o mynetworks=127.0.0.0/8
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
-o smtpd_client_connection_count_limit=0
-o smtpd_client_connection_rate_limit=0
-o receive_override_options=no_address_mappings,no_header_body_checks,no_unknown_recipient_checks,no_milters

Pedig kéne neki.

http://www.postfix.org/postconf.5.html#no_address_mappings

Nekem az itt leírtaknak megfelelően van beállítva, azaz a main.cf-ben van "receive_override_options = no_address_mappings" paraméterem, vagyis ez a default.

A master.cf-ben az "smtp inet n - - - - smtpd" instance-nél nincs semmilyen receive_override_options, szóval a default él
A content filter-től visszaérkező smtpd-nél pedig ez van:
-o receive_override_options=no_unknown_recipient_checks,no_milters
, azaz itt nem aktív a no_address_mappings

Az eredeti szerveren, amiről migráltam nekem is pontosan olyan beállításokkal működik mint Neked (postfix 2.7.1-1). Az újon ha nem kapcsolom ki a no_address_mappings-et az smtp-nél, nem látja az aliasokat (postfix 2.11.3-1). Közben találtam egy teljesen hozzám hasonló estet:

http://stackoverflow.com/questions/26574540/aliases-not-working

Én 2.11.0 verziót hajtók, hátha ez segít valakinek valamit.

A linkelt esetben pedig nála a main.cf-ben be van kapcsolva a no_address_mappings (mint nálam is), viszont a master.cf tartalmáról nem ír.

Márpedig én a master.cf-ben írom felül a receive_override_options értékét, de csak az amavis felől érkező leveleket elkapó smptd-nél. Addig nem kell.

Nem tudom, hogy Nálad ez miért nem működik. Milyen disztrót használsz? Ha lesz ráérő időm (hehe) lehet ránéznék erre.

Szerintem a linkelt esetben egy nem epp tamogatott modon mukodo (postfix queue-ba direktben bepakolo) content filter volt. Nalad viszont ketszer megy at a level az smtpd-n (kulvilag->smtpd->amavis, majd amavis->smtpd->pipe/dovecot), a masodik korben erdemes az aliasokkal foglalkozni. Jo lenne latni mar a tenyleges konfigot, pl. postconf -n, postconf -M

A kért konfigok

postconf -n:

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
broken_sasl_auth_clients = yes
config_directory = /etc/postfix
dovecot_destination_concurrency_limit = 2
dovecot_destination_recipient_limit = 1
inet_interfaces = all
local_transport = error:no local mail delivery
mailbox_size_limit = 0
message_size_limit = 41960000
mydestination = localhost
mydomain = valami.hu
myhostname = ujszerver.valami.hu
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = valami.hu
readme_directory = no
recipient_delimiter = +
relayhost =
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP
smtpd_data_restrictions = reject_unauth_pipelining
smtpd_hard_error_limit = 10
smtpd_helo_required = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_unlisted_recipient, check_recipient_access hash:/etc/postfix/reject_over_quota, check_sender_access hash:/etc/postfix/rbl_sender_exceptions, check_client_access hash:/etc/postfix/rbl_client_exceptions, check_recipient_access hash:/etc/postfix/rbl_recipient_exceptions, reject_rbl_client sbl-xbl.spamhaus.org, reject_rbl_client dsn.rfc-ignorant.org, reject_rbl_client dul.dnsbl.sorbs.net, reject_rbl_client bl.spamcop.net, reject_rbl_client cbl.abuseat.org, reject_rbl_client combined.rbl.msrbl.net, reject_rbl_client dnsbl.opsgears.com
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/sender_access, reject_non_fqdn_sender, reject_unknown_sender_domain
smtpd_soft_error_limit = 8
smtpd_tls_CAfile = /etc/ssl/certs/cacert.ujmx4.collect.hu.pem
smtpd_tls_cert_file = /etc/ssl/certs/dovecot.pem
smtpd_tls_key_file = /etc/ssl/private/dovecot.pem
smtpd_tls_received_header = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
transport_maps = hash:/etc/postfix/transport
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_gid_maps = static:6060
virtual_mailbox_base = /var/vmail/
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 6060
virtual_transport = dovecot
virtual_uid_maps = static:6060

postconf -M:

1025 inet n - - - - smtpd -o smtpd_sasl_auth_enable=yes -o content_filter=smtp-amavis:[127.0.0.1]:10024
smtp inet n - - - - smtpd -o smtpd_sasl_auth_enable=yes -o content_filter=smtp-amavis:[127.0.0.1]:10024
submission inet n - - - - smtpd -o smtpd_tls_security_level=may -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o content_filter=smtp-amavis:[127.0.0.1]:10026 -o receive_override_options=no_address_mappings
smtps inet n - - - - smtpd -o smtpd_tls_security_level=encrypt -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject
4650 inet n - - - - smtpd -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject
pickup unix n - - 60 1 pickup -o content_filter=
cleanup unix n - - - 0 cleanup
amavis-cleanup unix n - - - 0 cleanup -o virtual_alias_maps=hash:/etc/postfix/amavis_virtual
qmgr unix n - n 300 1 qmgr
tlsmgr unix - - - 1000? 1 tlsmgr
rewrite unix - - - - - trivial-rewrite
bounce unix - - - - 0 bounce
defer unix - - - - 0 bounce
trace unix - - - - 0 bounce
verify unix - - - - 1 verify
flush unix n - - 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - - - - smtp
relay unix - - - - - smtp
showq unix n - - - - showq
error unix - - - - - error
retry unix - - - - - error
discard unix - - - - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - - - - lmtp
anvil unix - - - - 1 anvil
scache unix - - - - 1 scache
maildrop unix - n n - - pipe flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient} -e
vacation unix - n n - - pipe flags=Rq user=vacation argv=/var/spool/vacation/vacation.pl -f ${sender} -- ${recipient}
uucp unix - n n - - pipe flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
ifmail unix - n n - - pipe flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp unix - n n - - pipe flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix - n n - 2 pipe flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman unix - n n - - pipe flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user}
smtp-amavis unix - - n - 5 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes
127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o cleanup_service_name=amavis-cleanup -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions=reject_unauth_pipelining -o smtpd_end_of_data_restrictions= -o mynetworks=127.0.0.0/8 -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_address_mappings,no_header_body_checks,no_unknown_recipient_checks,no_milters
127.0.0.1:10035 inet n - n - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions=reject_unauth_pipelining -o smtpd_end_of_data_restrictions= -o mynetworks=127.0.0.0/8 -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters

Ugy latom van nehany utvonal, ahol a levelek beeshetnek, nezzuk az altalanos utvonalat:

Ez a megszokott 25-os porton uldogelo smtpd listener:

smtp inet n - - - - smtpd -o smtpd_sasl_auth_enable=yes -o content_filter=smtp-amavis:[127.0.0.1]:10024

minden egyeb opcioja a main.cf-bol es az alapbeallitasokbol jon, szoval a content_filter az erdemi valtozas

ez pedig az, amin az amavisd visszadobja:

127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o cleanup_service_name=amavis-cleanup -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions=reject_unauth_pipelining -o smtpd_end_of_data_restrictions= -o mynetworks=127.0.0.0/8 -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_address_mappings,no_header_body_checks,no_unknown_recipient_checks,no_milters

Ebben bizony ott van a no_address_mappings , en ezt kivennem, a main.cf-hez pedig hozzavennem.

pastebin ilyen esetben elég hasznos, csak mondom.

Amúgy ez bőven nem egy szimpla konfig.
Content filter-től "visszatérő" smtpd instance 2 is van, egyik a 10025-ön figyel, a másik a 10035-ön, már ha jól értem. Az egyiknél benne van a no_address_mappings a receive_override_options-ben, a másiknál nincs.

Ahogy wildy is írta, vedd ki mindkettőből a no_addr_mappings-t, és tedd be a main.cf-be.

Csak érdeklődésképpen: nem lenne jobb még a content filter előtt eldobni a levelet, ha nincs ilyen címzett? Vagy akkor valamit félreértek.

Masrol van szo: a cimatirasok nem tortennek meg a filter elott. A cimzett(ek) ellenorzese joval korabban, mar az envelope feldolgozasakor megtortenik.

De az rpct to-nál már tudnia kell, hogy van-e ilyen user, vagy alias, nem?

Tudja is - bár ugye beállítás kérdése. A probléma az, hogy ott nem oldja fel az alias-t, ahol kellene. Nyilván nem célszerű a content filter előtt, mert ezzel ugyanazt a levelet akár sokszor is átfuttathatod szerencsétlenen.
Nálunk pl. az info@-ot kapja vagy 6 ember, és jön rá pár email. Azért nem mindegy, hogy ezeket 1x ellenőrzni vagy 6x (még ha az rbl és stb. nyilván sokat kiszór mire ide eljut).
Persze amilyen vas van alatta röhögve kiszolgálná, de azért akkor is.

Igen pontosan ez a gond a content filter után nem oldja fel az alias-okat.

Világos, köszönöm.

Azt tudja, hogy a celcim letezik. Az, hogy az erre erkezo level kinek kerul kezbesitesre (alias, canonical, ... befolyasolja), az nem tartozik a feladora.

Üdv! Mi is lett a megoldás? Mert úgy látom még azóta is megy az ötletelés.

Igen megy még az ötletelés. Ha a
-o receive_override_options=no_address_mappings az smtp-nél ki van kommentelve akkor jól látja az aliasokat a postfix. Ha ugyanez a 10025-ös portnál van kikommentezve, ahova a content filter visszadja a postfixnek a levelet, akkor nem nézi meg a postfix az alias táblát csak azt mondja unknown user.

De azt az esetet is próbáltad, amit javasoltak, vagyis: master.cf-ből ki -> main.cf-be be?