Sieve választ küld nem létező local mailre is

 ( pekob | 2016. május 17., kedd - 10:10 )

Sziasztok!

A cím kicsit hülyén hangzik, az a lényeg, hogy a felhasználó 'home'-jába lerakott vacation sieve script szépen küldi az Out of Office válaszokat, de ha teszt jelleggel egy nem létező local mail címről küldök, arra is szépen válaszol és a Dovecot bepakolja a helyére, a

-ba. Alapból persze nem fogad nem létező címre a Dovecot, csak a sieve-től.
Van ennek valami értelme? :)

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ő.

"Alapból persze nem fogad nem létező címre a Dovecot, csak a sieve-től."
Biztos ez?

Illetve szerintem a sieve is keresztülzavarja a cuccot a postfix-en (gondolom az van, bár lehet más is az MTA), szóval a postfix-nek ki kellene szórni a nem létező címre jövő levelet _ha_ úgy lenne beállítva. Ebben az esetben menne a levél mailer daemon-tól, arra is válaszolna a sieve, aztán itt valahogy megállna a dolog. Legalábbis szerintem.
Viszont erős a gyanúm, hogy a sieve valahonnan mynetworks alól dolgozik, a postfix-ben pedig a mindenféle restrictions-ök úgy kezdődnek, hogy permit_mynetworks...

Ezt teszteld le telnet localhost 25-öttel szerintem.

Ez biztos, próbáltam, szépen megy a nem létező user üzenet.
Most kipróbáltam egy külsős gépről, ami nincs a mynetworks-ben: levél elmegy, bekerül a queue-ba, aztán lesz belőle egy MAILER-DAEMON -> nem létező feladó, de ezt is szépen kézbesíti, csinál neki könyvtárat, mintha local user lenne.
A logban az látszik, hogy átmegy az amavison, az visszaadja és kézbesítésre kerül, csak még azt nem értem miért.
Submission-nél ez van:

submission inet n - - - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING

Amavis:

smtp-amavis unix - - - - 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes
-o max_use=20

127.0.0.1:10025 inet 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

Esetleg ez a no_unknown_recipient_checks lenne a bűnös?

Hát ha onnan kiveszed, akkor vissza kellene dobnia.
A content filter előtti receive_override_options-ben (main.cf) gondolom van egy no_address_mappings.

Nincs, ebből a konfigból kimaradt before és after is. Érdemes lenne betenni a before oldalra?

Hülye kérdés, bele is raktam a main.cf-be.

After-ben tuti van, fentebb írtad a content filter utáni "visszatérő" smtpd-t

Nem volt benne sehol.

Én az amavis-t content filter-nek tartom, és szerintem onnan jön vissza a 10025-öt porton figyelő smtp-n, nem?

Igen, de abban nincs no_address_mappings.

Ja, akkor elbeszélünk egymás mellett.
Én úgy értettem, hogy receive_override_options nincs benne.

Ja igen, annyi van benne, de no_address_mapping nem volt, azt beletettem.
Csak nem vagyok vele tisztában, hogy a no_unknown_recipient_checks miatt hogy tudja a dovecot lmtp-vel kézbesíteni? Vagy ilyenkor az nem ellenőrzi, hogy van-e ilyen felhasználó? Ldap-os a konfig.

Szerintem alapban nem ellenőrzi, hanem leteszi a levelet. Jogos feltételezés hogy az előtte levő MTA már ellenőrizte a címzett valódiságát, és a teljesítménynek is árt ha 2x kérdezi le a userdb-t.

Ez teljesen logikusnak hangzik, köszönöm. Holnap kiveszem belőle és megnézem úgy mit szól hozzá.

Azt nem értem még, hogy kerül a sieve a láncba. Van ugye egy kliens smtp -> postfix, postfix smtp -> amavis, amavis smtp -> postfix, postfix lmtp -> dovecot. Itt ugye az elején a postfix eldönti, hogy létezik-e a címzett. De hova szúrja be a vacation levelet a sieve, ha olyankor már egyértelműen nem történik ellenőrzés?

Megjön a levél a mailbox-ba, és ott a címzett alapján lefut a sieve script (ha van).
A sieve script pedig szerintem smtp-n beküldi a postfix-nek a levelet, ami megint végigmegy a pf->amavis->pf->dovecot láncon, és mivel mynetworks-ből jön ezért különösebb ellenőrzés sincs rá, főleg ha meg van neki mondva hogy no_unknown_recipient_checks

De ennek ellentmond az, ha akár localhost-ról küldök levelet nem létező címre a saját domain alá, azt visszadobja. Akkor hogy van ez? :)

Hát akkor én se értem, pedig olyan szépen megmagyaráztam :D

:D Ha rájövök, beírom :)