Ü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.
- 2653 megtekintés
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.
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
/etc/alias ?
postmaster : ide_menjen
newaliases
- A hozzászóláshoz be kell jelentkezni
Szóval az aliasban ha csak usernevet írok, működik?
Kiprózálom, köszönöm széken!
- A hozzászóláshoz be kell jelentkezni
Szerintem igen. En legalabbis azt csinaltam, ha
egy cim -> tobb cim
tobb cim -> egy cim
egyik cim -> gyujtocim
keresek voltak.
newaliases parancsot ne feledd!
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
A relay domains tabla az a virtual domain tablan keresztul plusz a mydestinations tablan keresztul epul. Olyan LDAP ojjektumot kell csinalni, amit a virtual domains keres egyebkent.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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. ;[
- A hozzászóláshoz be kell jelentkezni
Akkor dobd be ide a ldap lekerdezesek konfigjait (vagy kuldd el private a hrgyster kukkac gémél címre), es lehet, hogy tudok segiteni.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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] ?
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
Ha jól értem, és egy új LDAP-struktúráról beszélsz, akkor pont azt nem akarom! :D
Egyenként felvenni az újakat, és törölni a régieket.
Nos? Jól értem? ;)
Respect
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
jah, ami gyanús:
mydomain= kezdetű sort nem látok + a relaydomain-st is elég szűkre szabtad.
Tanácskozd ezt meg evvel a fejezettel:
http://www.postfix.org/postconf.5.html#relay_domains
- A hozzászóláshoz be kell jelentkezni
ott van:
virtual_mailbox_domains = /etc/postfix/relay-domains
- A hozzászóláshoz be kell jelentkezni
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!
- A hozzászóláshoz be kell jelentkezni