Sziasztok!
Adott egy Postfix/Dovecot levelező rendszer, ami jelenleg az /etc/passwd-ből authentikál. Később bekerült egy Samba 4.0.5 szerver, ami megvalósítja az AD-t.
Elég kényelmetlen a jelenlegi megoldás, a usereket az AD-ba viszik fel, a mail címeket pedig a mail szerveren kell külön karbantartaniuk.
Az lenne a kérdésem, hogy mennyire macerás átkonfigolni a Postfix-et, Dovecot-ot, hogy AD-ból authentikáljon?
Mindkét szerver Ubuntu 12.04.
Köszönöm!
- 23836 megtekintés
Hozzászólások
Egyáltalán nem az, a kérdés, hogy ugyanaz-e a user az AD-ban és a passwd-ben (az is megoldható, ha nem, de körülményesebb).
Az ArchWiki-n az OpenChange szócikknél (https://wiki.archlinux.org/index.php/OpenChange_server) vannak kész konfigok mindkettőhöz az AD sémával, aztán már csak a LDAP query-kkel kell játszanod.
Nagyjából: csinálsz egy usert valami jó hosszú, soha nem lejáró jelszóval az AD-ben. Beállítod a dovecot-ot, hogy onnan vegye a usereket (userdb), utána hogy onnan autholjon (authdb), utána beállítod a postfix-et, hogy milyen virtuális domainek vannak és honnan vegye a usereket...
BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)
- A hozzászóláshoz be kell jelentkezni
Köszönöm, átnézem majd!
- A hozzászóláshoz be kell jelentkezni
Egyelőre kínlódok, próbaképp csináltam egy teszt szervert a LAN-ba, alap postfix/dovecot konfiggal. Kerberos ok, domain join ok, de a dovecot nem akarja az igazat. Holnap nekilátok debugolni és jelentkezem.
- A hozzászóláshoz be kell jelentkezni
Most épp ez alapján próbálom csinálni: http://wiki2.dovecot.org/HowTo/ActiveDirectoryNtlm
De pl. ez a rész nem teljesen világos:
Dovecot employs winbind internally, so we don’t need to specify any password database, but we do need user information, usually a static userdb for virtual users (AD users)
Tehát nem kell beállítani passdb-t? És a userdb-be kéne beállítani azt az AD user-t, akinek a nevében csinálná a lekérdezést?
Egyelőre ezt kapom a logban:
Apr 1 10:05:45 ldapteszt dovecot: pop3-login: Login: user=, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, mpid=15232, secured
Apr 1 10:05:45 ldapteszt dovecot: pop3(defo): Error: user defo: Couldn't drop privileges: User is missing UID (see mail_uid setting)
Apr 1 10:05:45 ldapteszt dovecot: pop3(defo): Error: Internal error occurred. Refer to server log for more information.
- A hozzászóláshoz be kell jelentkezni
Ok, elég nagyvonalúan kezelik a dolgokat a leírások, csak az auth-system volt engedélyezve, most betettem az auth_ldap-ot, így már változott a helyzet. Csináltam egy ldapteszt usert a lekérdezésekre. De még így sem tetszik neki:
Error: LDAP: binding failed (dn cn=ldapteszt,dc=example,dc=com): Invalid credentials, Simple Bind Failed: NT_STATUS_LOGON_FAILURE
- A hozzászóláshoz be kell jelentkezni
Alakulunk, már többször sikerült sikeresen bejelntkezni.
Egy valamit nem értek: néha a jelszó megadása után percek telnek el és nem történik semmi, aztán el is timeout-ol a kapcsolat, ez vajon mitől lehet?
Apr 1 12:13:49 ldapteszt dovecot: pop3-login: Error: master(pop3): Auth request timed out (received 0/12 bytes)
- A hozzászóláshoz be kell jelentkezni
Biztos NTLM auth-ot akarsz? SSL felett a sima plain is elég, akkor nincs szükséged a Winbind-ra.
BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)
- A hozzászóláshoz be kell jelentkezni
Szerintem hétfőn ismét elindulok a kályhától, gssapi-val, ssl feletti plain-nel, ahogy írtad.
- A hozzászóláshoz be kell jelentkezni
Első körben hagyd a GSSAPI-t (az inkább a Kerberos lesz, ami ha lehet, mégrosszabb, ott még legalább klienstől is függ, hogy minden működik-e, ráadásul ha debugolni akarod, az kész katasztrófa :) ) és menjen a sima plaintext.
Debian van előttem, ott a /etc/dovecot/conf.d/10-auth.conf [hogy bekapcsold a következőt], /etc/dovecot/conf.d/auth-ldap.conf.ext [egy userdb és egy passdb szekció, args-nak megadva az utolsó kettőt], /etc/dovecot/ldap-db/dovecot-ldap-passdb.conf [ez lesz a passdb-d] és egy /etc/dovecot/ldap-db/dovecot-ldap-userdb.conf [ez lesz a userdb-d] kell. (azt hiszem ez utóbbi kettőt össze is lehetne vonni, itt nem teljesen ugyanaz)
BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)
- A hozzászóláshoz be kell jelentkezni
Én úgy tudom a GSSAPI csak azért kell, hogy az AD-ba bejelentkezetteknek ne kérjen jelszót a postfix/dovecot, de ez egyelőre valóban nem létfontosságú.
- A hozzászóláshoz be kell jelentkezni
Helyzetjelentés: dovecot működ, plain-nel is, gssapi-val is, ha van érvényes ticket. Eddig jó. Most jöhet a posztfiksz :)
- A hozzászóláshoz be kell jelentkezni
ha kész, nem akarsz egy alapos leírást csinálni? pont ezt kéne megvalósítanom nekem is, jó volna. (legalább olyan ami a buktatókra felhívja a figyelmet, amit a többi leírás nagyvonalúan kezel)
- A hozzászóláshoz be kell jelentkezni
Ha egyszer kész lesz, megpróbálom összeszedni egy tömör leírásba.
- A hozzászóláshoz be kell jelentkezni
Postfix is authentikál már AD-ból, de egyelőre nem tudtam rávenni, hogy dovecot-lmtp-vel rakja a helyére a leveleket, simán berakja a /var/mail-be mbox formátumban. De alakulunk :)
- A hozzászóláshoz be kell jelentkezni
OpenDirectory -s rendszer van nálunk (OSX Server és OSX kliensek).
Több (5+) éves tapasztalatom az, hogy a levelezést és a vpn -t és a wifi EAP-TTLS -t ÉRDEMES leválasztani az OD-ről (esetedben AD-ről).
Megmondom miért.
Ha a levelezést esetleg valamelyik user használja mondjuk nyaralás alatt netkávézóból vagy akárhonnan, ami felet tnincs kontrollod, lelophatják a jelszavát. És ha a Directory -ba be van kötve, akkor ezzel a jelszóval máris lehet jönni vpn -en is befele, meg a belső hálózatba is a felhasználó jogosultságával befele.
Az enterprise-wifi EAP-TTLS -t meg azért érdemes szintén különválasztani, mert nálunk pl. volt olyan renitens, hogy a fiának akart a wifi-hez hozzáférést adni, ezért megadta az OpenDirectory user/jelszó párost............
Mivel a DHCP kliensek monitorozva vannak, ezért hamart kiderült, hogy hogy a fenébe kerülhet ez az eszköz a hálózatra, és gyakorlatilag azonnal megtudtuk a turpisságot.
Szegény user nem akart rosszat, nem is "fogta át a tudata" hogy a wifire való bejelentkezéshez hazsnált user/jelszó páros ugyan az, maivel a gépére bejelentkezik, és amivel a fileszervert is eléri..........
Jobb az külön, hallgass rám. :)
- A hozzászóláshoz be kell jelentkezni
Ez itt inkább tervezési hiba. Ez amikor az authentikációt keverjük az authorizációval. Ha lehet megbízhatatlan eszközről authentikálni hasonló feltételekkel mint a megbízhatókról, szerintem az sem a felhasználó hibája.
- A hozzászóláshoz be kell jelentkezni
feliratkozás
- A hozzászóláshoz be kell jelentkezni
+1
- A hozzászóláshoz be kell jelentkezni
subz
- A hozzászóláshoz be kell jelentkezni
Ha eddig /etc/passwd volt, akkor néz körül a PAM háza táján...
--
Debian Linux rulez... :D
RIP Ian Murdock
- A hozzászóláshoz be kell jelentkezni
Egy valamit nem értek egyelőre:
postmap -q -val le tudom kérdezni az ad-s userek tulajdonságait, ha nincs olyan user, nem ad vissza semmit.
Ennek ellenére, bármilyen usernek küldenék levelet, olyannak is, aki nem létezik az AD-ban, simán átadja a dovecot-nak, az pedig létrehozza neki a könyvtárat és beleteszi a levelet.
Ez hogy lehet, még nem értem...
- A hozzászóláshoz be kell jelentkezni
Az smtpd_reject_unlisted_recipient-t nem kapcsoltad ki?
BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)
- A hozzászóláshoz be kell jelentkezni
Nem, ilyet nem tettem bele.
A baj az, hogy nagyjából százféle leírás kering a megvalósításról, nagyon könnyen el lehet keveredni.
Postfix-nek pl. elvileg elég a domain-ban lennie, máris tud fogadni levelet AD-s userek számára, mondjuk a csoportoknak egyelőre nem, pedig wbinfo-val őket is szépen látja.
- A hozzászóláshoz be kell jelentkezni
Akkor ez így passz, nálam a fenti Arch Wikishez hasonló konfig van (virtual_mailbox_domain + virtual_mailbox_maps), amik LDAP-ból szedik ki az adatokat.
BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)
- A hozzászóláshoz be kell jelentkezni
Meglesz ez, sarokba fogom szorítani, csak néha mást is kell csinálni :)
- A hozzászóláshoz be kell jelentkezni
Én windows 2008 ADDC-ből veszem a user/alias listát.
main.cf-be:
smtpd_sender_login_maps = proxy:ldap:/etc/postfix/ad_sender_login_maps.cf
virtual_mailbox_maps = proxy:ldap:/etc/postfix/ad_virtual_mailbox_maps.cf
virtual_alias_maps = proxy:ldap:/etc/postfix/ad_virtual_group_maps.cf
ad_sender_login_maps.cf :
# Directory settings
server_host = 399.399.399.399
server_port = 389
version = 3
bind = yes
start_tls = no
bind_dn = cn=postfix,ou=services,dc=teszt,dc=valami,dc=hu
bind_pw = x
search_base = cn=users,dc=teszt,dc=valami,dc=hu
scope = sub
# Filter
query_filter = (&(userPrincipalName=%s)(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
result_attribute= userPrincipalName
debuglevel = 0
ad_virtual_group_maps.cf:
Ezzel létrehozott biztonsági vagy terjesztési csoport (ldap szerint mindegy) és az azon belüli csoportoknak is tudsz levelet küldeni.
server_host = 399.399.399.399
server_port = 389
version = 3
bind = yes
start_tls = no
bind_dn = cn=postfix,ou=services,dc=teszt,dc=valami,dc=hu
bind_pw = x
search_base = dc=teszt,dc=valami,dc=hu
scope = sub
query_filter = (|(&(objectClass=group)(mail=%s))(&(objectclass=person)(otherMailbox=%s)))
special_result_attribute = member
#leaf_result_attribute = otherMailbox
result_attribute= userPrincipalName
debuglevel = 0
ad_virtual_mailbox_maps.cf:
server_host = 399.399.399.399
server_port = 389
version = 3
bind = yes
start_tls = no
bind_dn = cn=postfix,ou=services,dc=teszt,dc=valami,dc=hu
bind_pw = x
search_base = cn=users,dc=teszt,dc=valami,dc=hu
scope = sub
# Filter
#query_filter = (&(objectclass=person)(userPrincipalName=%s))
query_filter = (&(mail=%s)(objectClass=user))
result_attribute= userPrincipalName
result_format = %u/Maildir/
debuglevel = 0
- A hozzászóláshoz be kell jelentkezni
A kézbesítést dovecot-lmtp-vel csinálod?
- A hozzászóláshoz be kell jelentkezni
Teszteltem lda-val és lmtp-vel is.
- A hozzászóláshoz be kell jelentkezni
Összekalapáltam a postfix konfigot, jónak is tűnik, egyedül a csoport címekkel van gondom. Itt a belső domain: domain.in a külső domain.hu. Ha megcímzek egy tesztcsoportot, akkor mind a .in-es, mind a .hu-s címekre kézbesít. Az ldap lekérdezést kellene még megfiltereznem .hu-ra?
root@ldapteszt:/home/bekaspizza# postmap -q tesztcsopi@domain.hu ldap:/etc/postfix/ad_virtual_group_maps.cf
user1@domain.in,user1@domain.hu,user2@domain.in,user2@domain.hu
- A hozzászóláshoz be kell jelentkezni
hmm kivetted a kommentet a "#leaf_result_attribute" elől?
- A hozzászóláshoz be kell jelentkezni
Jogos, benne volt, kivettem. Így már valóban csak két címet ad vissza, viszont ezek a .in-es címek, pedig ennek a két usernek ki van töltve a mail attribútum rendesen .hu-s címmel.
- A hozzászóláshoz be kell jelentkezni
Nem lehet hogy azért meg a member a visszatérő érték? Ami az objektum neve? Az valóban .in-es.
- A hozzászóláshoz be kell jelentkezni
result_attribute= userPrincipalName
Ezt a sort kell változtatnod a megfelelő értékre. Töprengj egy kicsit. Ha megmondok mindent, akkor a működését nem fogod átlátni és bajban leszel legközelebb.
Csinálj egy lekérdezést (ldapsearch -t) és nézd meg mi a kívánt érték.
- A hozzászóláshoz be kell jelentkezni
Úgy néz ki ez a része már okés.
De mi a helyzet akkor, ha ez a server fogadna leveleket a masikdomain.hu-ra is és át kellene dobni pl: a user@masikdomain.hu-ra érkező leveleket a user@domain.hu-ra?
Itt a virtual_alias_maps-et használnám, de jelenleg ez az AD-ból kérdezget...
- A hozzászóláshoz be kell jelentkezni
bocs egy kicsit tompa vagyok...
---
a teszt.elek usernek van teszt.elek"at"alma.hu és teszt.elek"at"korte.hu címe és ezek egy userdirben kerüljenek?
vagy
a teszt.elek"at"alma.hu -s leveleket kell továbbítani a teszt.elek"at" korte.hu -ra?
- A hozzászóláshoz be kell jelentkezni
Lényegében az első, van pár domain, ami csak úgy van, a jó ég tudja minek, de be van állítva jelenleg a virtual-ban, hogyha egyszer az életben véletlenül jönne oda levél, akkor az hova menjen.
De megoldottam a Proxyaddresses attribútum lekérdezésével.
Tulajdonképpen kész is van, lassan jöhet az éles szerver átállítása :)
- A hozzászóláshoz be kell jelentkezni
Rövid jótanács: a proxyAddresses jelentésének utánanéztél? Mármint hogy nem simán e-mail címek mennek bele hivatalból, hanem protokoll-specifikációval együtt, érdemes ezt követni:
pl.:
SMTP:foo@example.org (ő lesz az elsődleges smtp cím)
smtp:bar@example.org (nem elsődleges, további címek)
smtp:asdasd@example.org (mint előbb)
X400:c=US;a= a;p=Example Org;o=Admin Group;s=foo (x400 cím)
=EX:/o=Example Org/ou=Admin Group/s=foo (Exchange DN)
BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)
- A hozzászóláshoz be kell jelentkezni
Igen, smtp:-al írtam bele.
- A hozzászóláshoz be kell jelentkezni
Oksa, csak gondoltam biztos, ami biztos beírom (hátha neked is hasznos, vagy az utókornak az lesz) :)
BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)
- A hozzászóláshoz be kell jelentkezni
Persze, köszönöm!
- A hozzászóláshoz be kell jelentkezni
Van azért még megoldatlan probléma :)
Van csoportom, aminek tagja egy külső email cím is (mármint a jelenlegi pam-os verzióban). Azt a tanácsot kaptam, hogy csináljak a külsős címhez egy AD-S usert és állítsam be neki a külső email címet, majd ezt a usert adjam hozzá az AD-s csoporthoz.
Ez meg is történt, a postmap szépen vissza is adja:
postmap -q csoport@domain.hu ldap:/etc/postfix/ldap-group.cf
user1@domain.hu,user2@domain.hu,kulsos@kulsos.hu
De ha küldök a csoportnak levelet, a logba már ez kerül:
to= kulsos@domain.hu , orig_to= csoport@domain.hu
Ez vajon mitől lehet?
- A hozzászóláshoz be kell jelentkezni
Nem lehet, hogy valamelyik korábbi map/másik map képezi erre? Mi van az ldap-group.cf-ben?
BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)
- A hozzászóláshoz be kell jelentkezni
# Directory settings
server_host = 1.2.3.4
search_base = dc=domain,dc=hu
scope = sub
version = 3
# User Binding
bind = yes
bind_dn = Domain\user
bind_pw = password
# Filter
query_filter = (&(objectclass=group)(mail=%s))
special_result_attribute = member
és a postmap jól is adja vissza.
- A hozzászóláshoz be kell jelentkezni
Itt mi a result_attribute / leaf_result_attribute? Alapból a Postfix a maildrop-ot nézi, de az az AD sémában AFAIK nincs. Egy teljes konfigot (main.cf és az összes map) tudsz dobni?
BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)
- A hozzászóláshoz be kell jelentkezni
Group-ra és alias-ra is ugyanazt az ad_virtual_group_maps.cf-et használod? Hogy különbözteti meg, hogy most egy alias-t vagy csoport tagokat kell visszaadni?
- A hozzászóláshoz be kell jelentkezni
Szia
Bocsánat a késői válaszért, de nem voltam internetközelbe.. teleltem/tavaszoltam/nyaraltam
A feltét teszi lehetővé az összevonást.
query_filter = (|(&(objectClass=group)(mail=%s))(&(objectclass=person)(otherMailbox=%s)))
De íhartod külön is őket ha jobban tetszik.
Ezt például a main.cf-ben felveheted virtual_alias_maps = ldap:/etc/postfix/ad_virtual_alias_maps.cf,ldap:/etc/postfix/ad_virtual_group_maps.cf.
alias:
query_filter = (&(objectClass=user)(otherMailbox=%s))
result_attribute = mail
A továbbítást megcsinálhatod sieve scriptel is akár.
- A hozzászóláshoz be kell jelentkezni
de ha nem akarsz akkor hozzáadsz egy bejegyzést az ldap shemához:
virtual_alias_maps = ldap:/etc/postfix/ad_virtual_alias_maps.cf,ldap:/etc/postfix/ad_virtual_group_maps.cf, ad_virtual_fw_maps.cf
fw.cf:
scope = sub
query_filter = (&(&(objectClass=user)(maildrop=%s))
result_attribute = mailforward
De ezt nem teszteltem, SzBlackY kolléga véleményét várd meg.
- A hozzászóláshoz be kell jelentkezni
Az utókornak:
Létre kell hozni az AD schemában 2 attributot, pl maildeliverimode , bcc (multi value) mindkettőt unicode stringként vegyük fel.
Fontos, hogy minden felhasználónál legyen kitöltve a maildeliverymode mert különben nem fog működni, a működését remélem nem kell elmagyaráznom.
tesztelt:
main.cf
virtual_alias_maps = ldap:/etc/postfix/ad_virtual_group_maps.cf,ldap:/etc/postfix/ad_virtual_forwardonly.cf,ldap:/etc/postfix/ad_virtual_forward.cf
ad_virtual_group_maps.cf
query_filter = (&(objectClass=group)(mail=%s))
leaf_result_attribute = othermailbox
special_result_attribute = member
ad_virtual_forwardonly.cf
query_filter = (&(|(mail=%s)(otherMailbox=%s))(objectClass=person)(maildeliveryMode=forwardonly))
result_attribute = bcc
ad_virtual_forward.cf
query_filter = (&(|(mail=%s)(otherMailbox=%s))(objectClass=person)(maildeliveryMode=forward))
result_attribute = bcc,mail
postfix is ahol egyezést talál ott megáll és nem megy tovább, így a sorrend is fontos.
- A hozzászóláshoz be kell jelentkezni
alapvetoen eleg egy sima ldap auth hozza, ad-t lehet ldapon olvasni es ldap tdu autholni (jelszot ellenorizni) is. a macerasabb inkabb az hogy az userek home-jat vagy generalni kell (pl /home/mail/$U/) vagy ad-ben tarolni valahol.
igy az auth ad-bol megy, de kliens oldalon kulon kezelodik, tehat a mail programban kulon be kell irni a jelszot. ha single signont akarsz, akkor kerberos kell, na az mar nem kicsit macera. en ossze szenvedtem anno, postfix+cyrussaslauthd+radiusclient es kulon egy radius szerver samba4-el ad-be beleptetve). nem kicist bonyolult, es kellett hozza a windozon is generalni kulcsokat stb.
- A hozzászóláshoz be kell jelentkezni
Egyre inkább úgy érzem, hogy nem akarok szingül szájnont :)
- A hozzászóláshoz be kell jelentkezni
Felesleges macera, és szinte csak thunderbirdel működik.
- A hozzászóláshoz be kell jelentkezni
Egy dolognak azért örülök:-) A hírös Ubuntunak, lehet segít a hírhödt ArchWiki. Ennyit a népszerű, és a jó disztrókról:-)
Szívesebben olvastam volna első hozzászólásnak azt, hogy lásd" az ubuntu wiki eme részében " De vagy az ubi júzer inaktív, vagy a ubiwiki nem túl jó. Ezt mindenki maga döntse el:-)
Egy Arch User
- A hozzászóláshoz be kell jelentkezni
Excuseme az OFFért. Sajna ezzel a témával nem foglalkozom, így érdemben nem tudtam segíteni. Csak a véleményem nyilvánítottam ki.
- A hozzászóláshoz be kell jelentkezni
Bocs, ha szabira megyek akkor az első szempontom az, hogy lehetőleg térerő csak hébe-hóba legyen internet sebesség meg vetekedjen a modemes korszakbélivel, így bármi problémát a kollégáimnak kell megoldani saját fejből és nem mindig rám hagyatkozni,
Elsősorban pihenni akarok és nem dolgozni/szakmai dolgokkal foglalkozni a szabim alatt.. szerencsére a vezetőség megérti ezt, és még sosem volt problémám ebből, se rendszerlerohadás...
- A hozzászóláshoz be kell jelentkezni