Postfix Debian postmaster@ kérdés!

Fórumok

Üdv!

Átköltöztettünk pár szolgáltatást egy új szerverre, új rendszer alá (ldap).

Az általunk szolgáltatott domainnevekehez tartozó postmaster@* címeket kéne egyöntetűen egy belső címre átirányítani, de sajnos egyszerűbb leírással nem találkoztam.

Reméltem, ha van
@egyik.hu %1@masik.hu ami az egyik domainre érkezett leveleket a másikra irányítja - van olyan is, ami a felhasználónevet veszi figyelembe...

Segíts, kérlek!

Ui: igen, nekem szabad ilyet csinálnom, nem, nem akarom inkább átírni teljesen másra a rendszert :P Bocs, csak a google az ellenségem, és ilyen válaszokat találtam angol siteokon.

köszönöm.

Hozzászólások

Mint mindig irom, most is: jobb lenne a konfigokrol tobbet tudni, eleg semmitmondo a topiknyitod. Legalabb a main.cf-et tampontkent, aztan a tobbit meglatjuk, de ez igy rem keves.
--


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

Oh, well...
Gondoltam, nekem elég a válasz a virtusertable szintaxáról egy link, ami olvasható, és bármilyen Debian+Postfix rendszerre alkalmazható, de legyen. :)
Mindenképp köszönöm gyors reakciód!

main.cf:
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache
alias_maps = hash:/etc/aliases
alias_maps = hash:/etc/aliases, ldap:/etc/postfix/ldap-aliases.cf
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
virtual_transport = virtual
virtual_uid_maps = static:1006
virtual_gid_maps = static:1006
virtual_mailbox_base = /var/mail/virtual
virtual_mailbox_maps = ldap:/etc/postfix/ldap-accounts.cf
virtual_mailbox_domains = /etc/postfix/relay-domains
virtual_alias_maps = hash:/etc/aliases, ldap:/etc/postfix/ldap-aliases.cf
relay_domains = localhost
mynetworks = 127.0.0.0/8, és még pár IP
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 100000000
recipient_delimiter = +
inet_interfaces = all

disable_vrfy_command = yes
strict_rfc821_envelopes = yes

smtpd_error_sleep_time = 1s
smtpd_soft_error_limit = 10
smtpd_hard_error_limit = 20

mime_header_checks = regexp:/etc/postfix/mime_header_checks.regexp

smtpd_delay_reject = yes
smtpd_helo_required = yes
smtpd_helo_restrictions =
warn_if_reject,
permit_mynetworks,
reject_non_fqdn_hostname,
reject_invalid_hostname,
permit

smtpd_sender_restrictions = reject_unknown_address

smtpd_recipient_restrictions =
warn_if_reject,
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
reject_invalid_hostname,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unknown_sender_domain,
reject_unknown_recipient_domain,
reject_unauth_pipelining,
permit_mynetworks,
reject_rbl_client zen.spamhaus.org,
reject_rbl_client multi.uribl.com,
reject_rbl_client dsn.rfc-ignorant.org,
reject_rbl_client sbl-xbl.spamhaus.org,
reject_rbl_client dnsbl.sorbs.net,
reject_rbl_client dnsbl.njabl.org,
reject_rbl_client ix.dnsbl.manitu.net,
reject_rbl_client combined.rbl.msrbl.net,
reject_rbl_client rabl.nuclearelephant.com,
reject_rbl_client list.dsbl.org,
reject_rbl_client sbl.spamhaus.org,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client dul.dnsbl.sorbs.net,
permit

smtpd_data_restrictions =
warn_if_reject,
reject_unauth_pipelining,
permit

/etc/alias ?
postmaster : ide_menjen
newaliases

Nem feledem, nagyjából ismerem a postfixet.
Nos, gáz van, mivel a NIC-es ellenőrző ránézne a postmaster címekre, és nem létezőnek találja.
Kée valahonnan ez a virtusertable bejegyzés szintax link, akár englishül is.
Nem akarom egyenként felvetetni az összes postmaster címet az LDAP-ba, ha egy mód van rá.
Ha nálunk van egy domain, amúgy is az általános postmaster userre volt irányítva régen is a cím.

Oppá, lehet, hogy a relay-domainsbe kellene belerakni a domaineket, és ez a baj?
Ez hogy is lehet LDAPban, hmm?

De a link kell, plíz :D

Bizonyára így van, ifjú barátom - ám eme gondolat nékem is megcsillant elmémben.
Pont ezért érdeklődtem a virtusertable szintaktikája iránt, hogy ugyanolyat kaphassék vissza...

Az eredeti kérdésre

virtusertable szintaxis érthető leírására mutató link, akár angolul

még senki sem tudja a választ? :P

Respect

ui:
emlékeim rossznak bizonyultak - nem relay-domains, hanem:
mydestination = /etc/postfix/local-host-names

Oke, akkor megeccer: ilyen egzakt szintaxis nincsen, a jelenlegi LDAP lekerdezeseidbol kell kitalalni, mire van konkretan szukseged. Mivel nem tudom, hogy az LDAP lekerdezeseid pontosan milyen semat hasznalnak, ebben sajnos magadra vagy utalva. Tobbfelekeppen is meg lehet ilyent oldani. A postfix altalaban a lekerdezeseket kerdes-valasz formaban kezeli, bemenetkent megadva, hogy mire kivancsi (kezelnem kell-e a mittudomain.com -ot?) kimenetkent pedig egy igen/nem vagy valamilyen szoveges valaszt var. A konkret, implementaciofuggo kerdest te irod meg a ldap:/etc/postfix/domain.conf konfig alatt, vagy ahol az ilyesmit epp tarolod.
--


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

Igen, pontosan ahogy írod.
2 lekérdezés van most, az egyik a mailcím alapján kiad egy virtual-usernevet,
míg a másik egy mailcím alapján kiad egy másik mailcímet, á lá alias.

A porblémát úgy közelítettem volna meg, hogy a jelen struktúrában a visszaadott adattartalomra, és a keresett mező tartalmára koncentrálok a postfix irányából - így az adat tárolási módja lényegtelen lett volna.

Ezexerint ez nem járható út, és bele kell ásódnom az LDAP keresések csodálatos világába, valamint ki kell találnom, hogy postfix oldalról hogy tudom postmaster@* cím esetén egy másik keresésre futtatnom main.cf-ből a postfixet?
Ez annyira cukor-csillám varázsos-nyálas csicser-nyuszi feladat, hogy mindjárt rosszul leszek. ;[

Zseniál, köszönöm!

ldap-accounts.cf:
server_host = localhost
server_port = 389
search_base = ou=mailusers,ou=gepunk,dc=szerver,dc=hu
query_filter = mail=%s
result_attribute = uid
version = 3
bind = yes
bind_dn = cn=admin,dc=szerver,dc=hu
bind_pw = ajelszó

ldap-aliases.cf:
server_host = localhost
server_port = 389
search_base = ou=mailusers,ou=gepunk,dc=szerver,dc=hu
query_filter = mail=%s
result_attribute = sn
version = 3
bind = yes
bind_dn = cn=admin,dc=szerver,dc=hu
bind_pw = ajelszó

Elég egyszerű mindkettő.
A lényeg az LDAPunk szerkezetében, hogy több "mail" érték is lehet egy userhez.
Tesztelésnél kidobja mindig a megfelelőt.

Respect

Akkor kellene egy virtual_transport_map ami alapbol mindig a virtual szoval ter vissza, kiveve ha nem. Vagy B varians, a visszatero sn ugyanaz minden postmaster@$DOMAIN keresre. Eleg konnyu osszerakni egy domain-hozzaado scriptet, ami uj domaineknel automatan letrehozza a kulonbozo masterek aliasait.

En mailLocalAddress/mailRoutingAddress attributumokkal szokok operalni, a misc.schema reszei.
--


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

Teszemazt:
virtual_transport_map = virtual
? :D

Mert egy ilyen már can a .cf-ben:
virtual_transport = virtual

Node kérem, ettől miért lesz meg az eredmény?

Ha arra gondolsz, hogy az eddigi összes domainünkhöz létrehozná a sccript a vonatkozó postmaster@* címeket nyilván járható út, csak erre a megoldásra nincs szükségem. :)

Ha mondjuk leírnád, hogy a mailLocalAddress/mailRoutingAddress misc sémás rendszeredbe te mit írnál bele, hogy minden postmaster@* egy címre menjen az lehet(?) hogy segítene. :)

Az eredeti kérdésemre a válasz ezek szerint: [NEM LEHETSÉGES] ?

Akkor nem olvastad el amit irtam: nem szabad statikusan beirni, mert vannak esetek amikor NEM virtual. Ezert kell dinamikusan lekerdeztetni!!

A mailLocalAddress/mailRoutingAddress rendszerben a mailLocalAddress-bol lehet tobb, a mailRoutingAddress pedig szokozokkel elvalasztva tartalmazza egy lista cimeit.
Ez esetben lenne egy postmaster nevu ojjektum, es ahhoz mindig az uj domain-t csak hozzaadnam a mailLocalAddress attributumot.
--


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

Eloszor is, te kerdezted, hogy hogyan csinalnam meg a mailLocalAddress/mailRoutingAddress kornyezetben. En sosem mondtam azt, hogy format c: es kezdd elolrol, mindossze egy kerdesre valaszoltam. Kerlek, hogy ne adj nekem olyant a szamba, amit sosem mondtam.

Kulonben nem kell torolni a regieket, elvben a inetLocalMailRecipient nem STRUCTURAL objektumosztaly, tehat siman extendalhato ra barmilyen, mar meglevo person vagy account objektum.

Jelen rendszered sajnos kulon-kulon objektumok felvetelet teszi szuksegesse minden egyes domainhez. De azert meg varj, hatha jon egy nalam okosabb, es mond jobbat, ugyanis en komolyan nem vagyok ldap/postfix guru. Van ugyan 1-2 ilyen rendszerem, de az nem ilyen sema menten lett felepitve, fogalmam sincs, hogy ez esetben mi lehet a teendo.
--


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

Ha jól értem a problémát, akkor néhány plusz statikus bejegyzés kéne neked a virtusertable-ba, ami nincs benne az ldap fában.

Ha ez így van, akkor miért nem írod hozzá a konfig végéhez?

virtual_mailbox_maps = ldap:/etc/postfix/ldap-accounts.cf, hash:/etc/postfix/static_aliases
virtual_alias_maps = ldap:/etc/postfix/ldap-aliases.cf, hash:/etc/postfix/static_aliases

és a static_aliases-ba meg beírod, hogy
postmaster@xy.hu jozsi@xy.hu
...

majd:
postmap /etc/postfix/static_aliases ; /etc/init.d/postfix reload

No, sikerült, a következő módosításokkal a postfix-configokban:

main.cf:
virtual_mailbox_maps = ldap:/etc/postfix/ldap-accounts_pm.cf
virtual_mailbox_domains = /etc/postfix/relay-domains, ldap:/etc/postfix/relay-domains.cf

ldap-accounts_pm.cf:
server_host = localhost
server_port = 389
search_base = ou=mailusers,ou=gép,dc=csucs,dc=hu
query_filter = (|(mail=%s)(mail=%u)) # e-mail vagy usernév
result_attribute = uid
version = 3
bind = yes
bind_dn = cn=admin,dc=gép,dc=hu
bind_pw = jelszó

Az LDAP db-ben csináltam egy "postmaster" e-mail címet, amit a fenti keresés minden postmaster@* cím esetén megtalál.

relay-domains.cf:
server_host = localhost
server_port = 389
search_base = ou=users,ou=gép,dc=csucs,dc=hu
query_filter = apacheServerAlias=%d
result_attribute = apacheServerAlias
version = 3
bind = yes
bind_dn = cn=admin,dc=gép,dc=hu
bind_pw = jelszó

Így az összes LDAP-ba felvett, általunk fenntartott domaint megtalálja.

Itt találtam hasznos írásokat:
http://tools.ietf.org/html/rfc2254 - különösen az alján a példák közt.
http://www.postfix.org/ldap_table.5.html - "query_filter" részben.

Mindenkinek köszönöm a hozzászólásait!