Sziasztok!
Van egy DMZ-ben lévő postfix alapú smtp ki/bejáratom. Egyetlen domaint kezel, azt továbbítja a LAN-ban lévő mail szerverhez.
A gondom a következő: ha nem létező címzettnek jön levél, előbb átveszi, majd próbálja továbbítani a belső szervernek, az persze 550-el lepattintja, így a mailgw küld egy levelet a feladónak, ami a legtöbb esetben kamu cím, tehát a MAILER-DAEMON levél benne marad a queu-ban.
Hogy lehetne megoldani, hogy mielőtt átvenné a levelet, lecsekkolná a címlistát?
Így oldottam meg a továbbítást:
relay_domains = hash:/etc/postfix/relay_domains
transport_maps = hash:/etc/postfix/transport
Az egyik link a másikra, ez van benne:
domainem.hu smtp:[mailsrv]
A felhasználók adatai LDAP-ban vannak, ez hozzáférhető a mailgw-nek is.
Előre is köszi a tippeket!
- 1416 megtekintés
Hozzászólások
Nagy forgalom esetén én óránként/naponta exportálnám az ldapból a címeket egy fájlba amit a postfix ellenőriz, hogy csak ezeknek a címzetteknek fogadjon el levelet. Kis forgalom esetén pedig rá lehet beszélni a postfixet,hogy minden levél elfogadása előtt ellenőrizze a belső gépen a címzettet.
- A hozzászóláshoz be kell jelentkezni
nem tudom mi számít kicsi/nagy forgalomnak, nálunk ezres nagyságrendben jönnek/mennek levelek naponta, szóval nem halna bele az ldap szerver az állandó válaszolásba
van konkrét ötleted a megvalósításra?
- A hozzászóláshoz be kell jelentkezni
Persze: reject_unverified_recipient
Pl: /etc/postfix/main.cf:
smtpd_recipient_restrictions =
permit_mynetworks
# reject_unauth_destination is not needed here if the mail
# relay policy is specified under smtpd_relay_restrictions
# (available with Postfix 2.10 and later).
reject_unauth_destination
...
reject_unknown_recipient_domain
reject_unverified_recipient
...
# Postfix 2.6 and later privacy feature.
# unverified_recipient_reject_reason = Address lookup failed
A részletek pedig itt:http://www.postfix.org/ADDRESS_VERIFICATION_README.html
- A hozzászóláshoz be kell jelentkezni
A reject_unverified_recipient az nem az LDAP-ból fogja venni a valid usereket, hanem bepróbálkozik a célszervernél.
- A hozzászóláshoz be kell jelentkezni
Ez így igaz. De a cél az, hogy a belső szerverre ne próbáljon kamu címre érkező levelet továbbítani, ez pedig pont arra való;)
- A hozzászóláshoz be kell jelentkezni
De ha már úgyis eléri az LDAP szervert, akkor szerintem ne gyártson felesleges tesztüzeneteket az igazi felé.
- A hozzászóláshoz be kell jelentkezni
Ebből nem lesz teszt üzenet, csak az RCPT TO -ig próbálja a külső server, eljuttatni kapcsolódást.
----
올드보이
- A hozzászóláshoz be kell jelentkezni
meg igy sem korrekt a dolog...
--
Allitsuk meg Andorrat!
- A hozzászóláshoz be kell jelentkezni
Mondjuk ez igaz, inkább az a baj, hogy ha bármi oknál fogva visszadobja az üzeneteket, a címzett máris érvénytelennek lesz minősítve. Meg van egy kis késleltetés is, amíg ellnőriz, LDAP-ból sokkal gyorsabb. Meg amúgy is, ha ott a helyi címlista, használjuk már azt. Persze ha nincs meg a címlista a célszerverhez, akkor nincs más választás.
- A hozzászóláshoz be kell jelentkezni
transport_mappal is lehet, az ilyen formátumú mappal megy:
user1@
domainem.hu smtp:[mailserver]
user2@
domainem.hu smtp:[mailserver]
user3@
domainem.hu smtp:[mailserver]
De talán még egyszerűbb a relay_recipient_maps használata.
Az a meglévő beállítások mellé egy ilyen formátumú mapot igényel:
user1@
domainem.hu OK
user2@
domainem.hu OK
user3@
domainem.hu OK
Én úgy néztem, hogy az OK az lehet bármi.
Ezt ldaposítani mondjuk úgy lehet, hogy
relay_recipient_maps=ldap:/etc/postfix/relay_recipients.cf
relay_recipients.cf:
server_host = xxxx
search_base = xxxx
query_filter = (mail=%s)
result_attribute = uid
A result_attribute az bármi lehet, az a lényeg, hogy érvényes címnél adjon vissza valamit a query, érvénytelennél meg ne.
Szóval valahogy így.
- A hozzászóláshoz be kell jelentkezni
Ez lett a megoldás élesítettem:
main.cf-be:
relay_recipient_maps = ldap:/etc/postfix/ldap-relay_recipients.cf
ldap-relay_recipients.cf-be:
server_host = ldap://ldapserver:389
bind_dn = uid=postfix,cn=programs,dc=domain,dc=hu
bind_pw = 12345
version = 3
search_base = dc=domain,dc=hu
query_filter = (mail=%u)
result_attribute = mail
Ahogy szerettem volna, a téves címre küldött leveleket át sem veszi, elhajtja 550-el a fenébe!
Köszi mindenkinek az útmutatást!
- A hozzászóláshoz be kell jelentkezni
Nem kerek a történet!
Mivel több relay domain-em is van, ez mindent lepattint, mivel csak egy címtárra ellenőrzök :-(
Ha nem találok rá elegáns megoldást, kénytelen leszek fájlt generálni a címlistával, és a végére biggyeszteni a többi domain-t is...
- A hozzászóláshoz be kell jelentkezni
Idézlek: "Egyetlen domaint kezel"
// Happy debugging, suckers
#define true (rand() > 10)
- A hozzászóláshoz be kell jelentkezni
Bocsánat, félreérthetően írtam!
A külvilág számára egyetlen domain-t kezel, de belső LAN-ról bizonyos domain-eket nem a neten keresztül kézbesít, hanem a belső címre továbbít!
Úgy is mondhatnám, hogy a .hu végű levélszerver, és annak a címtára nálunk van, a többi országé meg az adott ország kezében.
Sajnos nem tudom a kezdő témát szerkeszteni (ez új dolog? ritkán írok).
- A hozzászóláshoz be kell jelentkezni
Jajj...
relay_recipient_maps = ldap:/etc/postfix/ldap-relay_recipients.cf hash:/etc/postfix/other-relay-recipients
other-relay-recipients:
@masikdomain.hu OK
@harmadikdomain.hu OK
De az ismeretelenekre valóban jobb lenne a fent említett verify service használata.
- A hozzászóláshoz be kell jelentkezni
Így már működik, annyi változtatással, hogy a "@elsodomain.hu"-t is fel kellett vennem a listára, mert anélkül mintha nem is fordult volna az LDAP szerverhez.
Köszi!
- A hozzászóláshoz be kell jelentkezni
Szerintem nem kell túlbonyolítani a dolgot.
address_verify_map = btree:/var/lib/postfix/address_verify_map
- A hozzászóláshoz be kell jelentkezni