{"id":231,"date":"2010-12-03T21:30:42","date_gmt":"2010-12-03T20:30:42","guid":{"rendered":""},"modified":"2010-12-03T23:19:26","modified_gmt":"2010-12-03T21:19:26","slug":"konfiguracja-uwierzytelniania-poczty-w-ldap","status":"publish","type":"post","link":"https:\/\/drfugazi.eu.org\/en\/konfiguracja-uwierzytelniania-poczty-w-ldap\/","title":{"rendered":"Konfiguracja uwierzytelniania poczty w LDAP"},"content":{"rendered":"<h3>Zak\u0142adam, \u017ce Dovecot i Postfix ju\u017c dzia\u0142aj\u0105 i mo\u017cna odebra\u0107 i wys\u0142a\u0107 poczt\u0119 loguj\u0105c si\u0119 na u\u017cytkownika systemowego (patrz poprzednie wpisy). Nadszed\u0142 zatem czas na uruchomienie uwierzytelniania w naszym katalogu LDAP (patrz konfiguracja LDAP).<\/h3>\n<p>Wykorzystanie LDAPa do uwierzytelniania u\u017cytkownik\u00f3w pozwala na elastyczne zarz\u0105dzanie hostingiem poczty i nie tylko. LDAP jest ju\u017c przyj\u0119tym standardem w zakresie uwierzytelniania i autoryzacji, praktycznie ka\u017cde szanuj\u0105ce si\u0119 oprogramowanie wymagaj\u0105ce uwierzytelnienia ma wsparcie dla tego protoko\u0142u.<\/p>\n<h3>Zaczniemy od serwera POP3\/IMAP, kt\u00f3ry r\u00f3wnie\u017c dostarcza mechanizmu uwierzytelniania dla Postfixa czyli od Dovecota:<\/h3>\n<pre><code>\r\n\/usr\/bin\/sudo -i\r\ncd \/etc\/dovecot\r\nvi dovecot-ldap.conf\r\n<\/code><\/pre>\n<p>W tym pliku musimy zdefiniowa\u0107 parametry serwera lub serwer\u00f3w LDAP, metod\u0119 uwierzytelnienia oraz filtry i atrybuty, wymieni\u0119 te, kt\u00f3re trzeba ustawi\u0107:<\/p>\n<pre><code>\r\nhosts = localhost\r\nauth_bind = yes\r\nbase = o=hosting,dc=example,dc=com\r\nscope = subtree\r\nuser_attrs = homeDirectory=home\r\nuser_filter = (&(objectClass=mailUser)(mail=%u))\r\npass_attrs = mail=user,userPassword=password\r\npass_filter = (&(objectClass=mailUser)(mail=%u))\r\n<\/code><\/pre>\n<p><!--break--><\/p>\n<p>a teraz pokr\u00f3tce je opisz\u0119:<\/p>\n<pre>\r\nhosts - lista serwer\u00f3w LDAP rozdzielona spacjami, dopuszczalne jest tak\u017ce podanie portu, np. <code>localhost ldap1:1389 192.168.1.2:2389<\/code>\r\nauth_bind - spos\u00f3b przypi\u0119cia do LDAPa, yes oznacza, \u017ce dovecot u\u017cyje tego co poda klient, drugi spos\u00f3b to zdefiniowanie u\u017cytkownika,\r\n    posiadaj\u0105cego uprawnienie do odczytania atrybutu userPassword i por\u00f3wnanie go z has\u0142em podanym przez klienta\r\nbase - bazowy DN, w kt\u00f3rym nale\u017cy szuka\u0107 u\u017cytkownik\u00f3w\r\nscope - zakres przeszukiwania, subtree oznacza bazowy DN i poni\u017cej ca\u0142e drzewo, mo\u017cliwe s\u0105 jeszcze base (tylko bazowy DN) i onelevel (poziom poni\u017cej DN)\r\nuser_attrs - mapowanie atrybut\u00f3w u\u017cytkownika, tutaj ustawiam atrybut homeDirectory z LDAP jako katalog domowy u\u017cytkownika (home)\r\nuser_filter - filtr u\u017cywany do przeszukiwania katalogu LDAP, tutaj interesuj\u0105 wpisy, kt\u00f3re posiadaj\u0105 klas\u0119 obiektu mailUser i adres email \r\n    podany przez klienta (%u), prosz\u0119 zwr\u00f3ci\u0107 uwag\u0119, \u017ce u\u017cywam pe\u0142nego adresu email (atrybut mail) a nie domy\u015blnego uid\r\npass_attrs - mapowanie atrybut\u00f3w has\u0142a i zn\u00f3w jako u\u017cytkownika u\u017cywam adresu email (niemal wymagane gdy si\u0119 hostuje wi\u0119cej domen)\r\npass_filter - jak user_filter\r\n<\/pre>\n<p>To jeszcze nie koniec konfiguracji Dovecota, ale na razie przeniesiemy si\u0119 do LDAPa i dodamy odpowiednie wpisy. Mo\u017cna do tego celu u\u017cy\u0107 jakiego\u015b narz\u0119dzia do zarz\u0105dzania, o kt\u00f3rych wspomnia\u0142em wcze\u015bniej, ja np. u\u017cy\u0142em phpLDAPadmina i doda\u0142em taki wpis:<\/p>\n<pre><code>\r\ndn: o=hosting,dc=example,dc=com\r\no: hosting\r\nobjectclass: organization\r\nobjectclass: top\r\n<\/code><\/pre>\n<p>b\u0119dzie to bazowy DN dla naszego systemu pocztowego. Tutaj umie\u015bcimy nasze wirtualne domeny bazuj\u0105c na klasie <b>mailDomain<\/b> ze schematu <code>iredmail.ldif<\/code>, kt\u00f3rego konwersj\u0119 i dodawanie do LDAPa opisa\u0142em wcze\u015bniej. LDIF dla domeny:<\/p>\n<pre><code>\r\ndn: domainName=example.com,o=hosting,dc=example,dc=com\r\ndomainname: example.com\r\nobjectclass: mailDomain\r\nobjectclass: top\r\n<\/code><\/pre>\n<p>Klasa <b>mailDomain<\/b> ma mo\u017cliwo\u015b\u0107 ustawienia jeszcze wielu przydatnych atrybut\u00f3w, ale na razie tyle nam wystarczy. Dodajemy pierwszego u\u017cytkownika, oczywi\u015bcie \u017ceby nie by\u0107 <i>RFC ignorant<\/i> powinien to by\u0107 <b>postmaster<\/b> (tutaj z has\u0142em: &#8216;example&#8217;):<\/p>\n<pre><code>\r\ndn: uid=postmaster,domainName=example.com,o=hosting,dc=example,dc=com\r\ncn: postmaster\r\nmail: postmaster@example.com\r\nobjectclass: inetOrgPerson\r\nobjectclass: top\r\nsn: Postmaster\r\nuid: postmaster\r\nuserpassword: {MD5}Gnmk1g3mcY6OWzJuM4rlMw==\r\n<\/code><\/pre>\n<p>Prosz\u0119 zwr\u00f3ci\u0107 uwag\u0119, \u017ce nie doda\u0142em <b>mailUser<\/b> lecz <b>inetOrgPerson<\/b>, gdy\u017c <b>mailUser<\/b> nie jest klas\u0105 strukturaln\u0105 i jako samodzielnej nie b\u0119dzie si\u0119 da\u0142o doda\u0107 do katalogu. Teraz dodamy klas\u0119 <b>mailUser<\/b>, bo inaczej filtr dovecota nie wybierze tego wpisu. Nasz LDIF:<\/p>\n<pre><code>\r\ndn: uid=postmaster,domainName=example.com,o=hosting,dc=example,dc=com\r\nchangetype: modify\r\nadd: objectclass\r\nobjectclass: mailUser\r\n<\/code><\/pre>\n<h3>Czas wr\u00f3ci\u0107 do konfiguracji dovecota i w\u0142\u0105czy\u0107 uwierzytelnianie w katalogu LDAP, edytujemy plik <code>dovecot.conf<\/code> i ustawiamy:<\/h3>\n<pre><code>\r\nmail_uid = 501\r\nmail_gid = 501\r\n\r\nauth_verbose = yes\r\nauth_debug = yes\r\n<\/code><\/pre>\n<p>w sekcji <code>auth default<\/code>:<\/p>\n<pre><code>\r\n  mechanisms = plain login\r\n\r\n  passdb ldap {\r\n    # Path for LDAP configuration file\r\n    args = \/etc\/dovecot\/dovecot-ldap.conf\r\n  }\r\n\r\n  userdb ldap {\r\n    # Path for LDAP configuration file\r\n    args = \/etc\/dovecot\/dovecot-ldap.conf\r\n  }\r\n<\/code><\/pre>\n<p>Dodajemy grup\u0119 i u\u017cytkownika do systemu i tworzymy katalog domowy:<\/p>\n<pre><code>\r\ngroupadd -g 501 vmail\r\nuseradd -g vmail -u 501 -d \/vdhome -m -s \/bin\/false -c \"Virtual mail user\" vmail\r\n<\/code><\/pre>\n<p>Restartujemy dovecota, konfigurujemy program pocztowy i pr\u00f3bujemy si\u0119 zalogowa\u0107 z klienta (np. Thunderbird) przy okazji \u015bledz\u0105c logi:<\/p>\n<pre><code>\r\nservice dovecot restart\r\ntail -f \/var\/log\/mail.log \/var\/log\/auth.log \/var\/log\/syslog\r\n<\/code><\/pre>\n<p>Je\u015bli uda\u0142o si\u0119 Wam zalogowa\u0107 do poczty to albo opis jest taki dobry albo po prostu nie wiecie wszystkiego. Prawo Murphyego dotycz\u0105ce elektroniki m\u00f3wi, \u017ce gdy uk\u0142ad elektroniczny zadzia\u0142a za pierwszym razem to na pewno jest wadliwy \ud83d\ude09 W informatyce jest podobnie. Prawdopodobnie pierwszy problem jaki napotkacie, to b\u0119dzie up\u00f3r klienta poczty aby u\u017cy\u0107 samej nazwy u\u017cytkownika (postmaster) a nie pe\u0142nego adresu email (postmaster@example.com) do logowania. Szczeg\u00f3lnie te nowe wersje, kt\u00f3re same pr\u00f3buj\u0105 si\u0119 konfigurowa\u0107 s\u0105 pod tym wzgl\u0119dem uparte &#8211; jak ja nie lubi\u0119 jak maszyny pr\u00f3buj\u0105 wiedzie\u0107 lepiej&#8230;<\/p>\n<p>No ale za\u0142\u00f3\u017cmy, \u017ce opis faktycznie jest dobry i uda\u0142o si\u0119 przekona\u0107 klienta, \u017ceby u\u017cywa\u0142 pe\u0142nego emaila do logowania lub zmienili\u015bcie filtry i mapowanie atrybut\u00f3w tak, aby logowa\u0142 po nazwie bez domeny i uda\u0142o si\u0119 zalogowa\u0107. Powinna zosta\u0107 utworzona podobna struktura katalog\u00f3w:<\/p>\n<pre><code>\r\nls -la \/vdhome\/example.com\/postmaster\/Maildir\/\r\ntotal 40\r\ndrwx------ 6 vmail vmail 4096 2010-12-03 22:34 .\r\ndrwx------ 3 vmail vmail 4096 2010-12-03 22:34 ..\r\ndrwx------ 2 vmail vmail 4096 2010-12-03 22:34 cur\r\n-rw------- 1 vmail vmail  248 2010-12-03 22:34 dovecot.index.log\r\n-rw------- 1 vmail vmail   17 2010-12-03 22:34 dovecot-uidlist\r\n-rw------- 1 vmail vmail    8 2010-12-03 22:34 dovecot-uidvalidity\r\n-rw------- 1 vmail vmail    0 2010-12-03 22:34 dovecot-uidvalidity.4cf9626e\r\ndrwx------ 2 vmail vmail 4096 2010-12-03 22:34 new\r\n-rw------- 1 vmail vmail    6 2010-12-03 22:34 subscriptions\r\ndrwx------ 2 vmail vmail 4096 2010-12-03 22:34 tmp\r\ndrwx------ 5 vmail vmail 4096 2010-12-03 22:34 .Trash\r\n<\/code><\/pre>\n<p>To mo\u017ce spr\u00f3bujemy wys\u0142a\u0107 mail na zewn\u0105trz? Ciekawe czy zadzia\u0142a? Ha! M\u00f3wi\u0142em, \u017ce nie zadzia\u0142a za pierwszym razem &#8211; znowu uparty klient poczty podaje sam\u0105 nazw\u0119 u\u017cytkownika bez domeny, trzeba poprawi\u0107 w kliencie poczty. Ale po poprawce powinno zadzia\u0142a\u0107, gdy\u017c Postfix uwierzytelnia wysy\u0142anie przez Dovecota, a ten ju\u017c wie, \u017ce ma szuka\u0107 w LDAPie. W strukturze katalog\u00f3w powinien pojawi\u0107 si\u0119 katalog <code>.Sent<\/code> (je\u015bli korzystacie z IMAPa).<\/p>\n<p>Tyle na dzi\u015b, mamy za\u0142atwione logowanie do poczty i wysy\u0142anie z uwierzytelnieniem w katalogu LDAP, trzeba jeszcze Postfixa nauczy\u0107 dostarcza\u0107 poczt\u0119 do skrzynek, ale o tym w nast\u0119pnym odcinku.<\/p>\n","protected":false},"excerpt":{"rendered":"<h3>Zak\u0142adam, \u017ce Dovecot i Postfix ju\u017c dzia\u0142aj\u0105 i mo\u017cna odebra\u0107 i wys\u0142a\u0107 poczt\u0119 loguj\u0105c si\u0119 na u\u017cytkownika systemowego (patrz poprzednie wpisy). Nadszed\u0142 zatem czas na uruchomienie uwierzytelniania w naszym katalogu LDAP (patrz konfiguracja LDAP).<\/h3>\n<p>Wykorzystanie LDAPa do uwierzytelniania u\u017cytkownik\u00f3w pozwala na elastyczne zarz\u0105dzanie hostingiem poczty i nie tylko. LDAP jest ju\u017c przyj\u0119tym standardem w zakresie uwierzytelniania i autoryzacji, praktycznie ka\u017cde szanuj\u0105ce si\u0119 oprogramowanie wymagaj\u0105ce uwierzytelnienia ma wsparcie dla tego protoko\u0142u.<\/p>\n<h3>Zaczniemy od serwera POP3\/IMAP, kt\u00f3ry r\u00f3wnie\u017c dostarcza mechanizmu uwierzytelniania dla Postfixa czyli od Dovecota:<\/h3>\n<pre><code>\r\n\/usr\/bin\/sudo -i\r\ncd \/etc\/dovecot\r\nvi dovecot-ldap.conf\r\n<\/code><\/pre>\n<p>W tym pliku musimy zdefiniowa\u0107 parametry serwera lub serwer\u00f3w LDAP, metod\u0119 uwierzytelnienia oraz filtry i atrybuty, wymieni\u0119 te, kt\u00f3re trzeba ustawi\u0107:<\/p>\n<pre><code>\r\nhosts = localhost\r\nauth_bind = yes\r\nbase = o=hosting,dc=example,dc=com\r\nscope = subtree\r\nuser_attrs = homeDirectory=home\r\nuser_filter = (&#038;(objectClass=mailUser)(mail=%u))\r\npass_attrs = mail=user,userPassword=password\r\npass_filter = (&#038;(objectClass=mailUser)(mail=%u))\r\n<\/code><\/pre>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_newsletter_tier_id":0,"footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[],"tags":[12,6,44,34,11],"jetpack_publicize_connections":[],"acf":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p7M9Tz-3J","jetpack-related-posts":[{"id":374,"url":"https:\/\/drfugazi.eu.org\/en\/mail-system-implementation\/","url_meta":{"origin":231,"position":0},"title":"Mail system implementation","author":"drfugazi","date":"Thursday August 16th, 2012","format":false,"excerpt":"My experience, which I gained during implementation of different systems shows, that implementation should be done in stages. Then, at each stage you can see if it works, if there are some fields to improve and then go to the next stage of implementation. Mail system implementation is not exception.\u2026","rel":"","context":"In &quot;Mail system&quot;","block_context":{"text":"Mail system","link":"https:\/\/drfugazi.eu.org\/en\/category\/mail-system\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":232,"url":"https:\/\/drfugazi.eu.org\/en\/konfiguracja-dostarczania-poczty-w-oparciu-o-ldap\/","url_meta":{"origin":231,"position":1},"title":"Konfiguracja dostarczania poczty w oparciu o LDAP","author":"drfugazi","date":"Saturday December 18th, 2010","format":false,"excerpt":"Ostatnio pisa\u0142em o konfiguracji uwierzytelniania u\u017cytkownik\u00f3w w katalogu LDAP aby mogli odbiera\u0107 i wysy\u0142a\u0107 poczt\u0119. Teraz czas na konfiguracj\u0119 Postfixa aby t\u0119 poczt\u0119 dostarcza\u0142 do w\u0142a\u015bciwych domen i skrzynek. Je\u015bli kompilujecie\/instalujecie Postfixa samodzielnie, to nale\u017cy pami\u0119ta\u0107 o wkompilowaniu wsparcia dla LDAP oraz wskazaniu \u015bcie\u017cki do bibliotek LDAP. Ja p\u00f3jd\u0119 na\u2026","rel":"","context":"In \"LDAP\"","block_context":{"text":"LDAP","link":"https:\/\/drfugazi.eu.org\/en\/tag\/ldap\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":373,"url":"https:\/\/drfugazi.eu.org\/en\/budowa-systemu-pocztowego\/","url_meta":{"origin":231,"position":2},"title":"Building mail system","author":"drfugazi","date":"Monday August 13th, 2012","format":false,"excerpt":"This description is based on my experience, which I gained during mail system implementation on University of Silesia (Katowice\/Poland). In the first stage there was about 3 000 of users, now the system is handling about 40 k of mail users. Whole system (exluding Sophos AV) is based on Open\u2026","rel":"","context":"In &quot;Mail system&quot;","block_context":{"text":"Mail system","link":"https:\/\/drfugazi.eu.org\/en\/category\/mail-system\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":272,"url":"https:\/\/drfugazi.eu.org\/en\/mail-delivery-configuration-ldap\/","url_meta":{"origin":231,"position":3},"title":"Mail delivery configuration with LDAP","author":"drfugazi","date":"Wednesday May 25th, 2011","format":false,"excerpt":"Sorry, this entry is only available in Polish. For the sake of viewer convenience, the content is shown below in the alternative language. You may click the link to switch the active language.Ostatnim razem pisa\u0142em o uwierzytelnianiu u\u017cytkownik\u00f3w w katalogu LDAP aby umo\u017cliwia\u0107 im odbieranie i nadawanie poczty. Teraz nadszed\u0142\u2026","rel":"","context":"In &quot;LDAP&quot;","block_context":{"text":"LDAP","link":"https:\/\/drfugazi.eu.org\/en\/category\/ldap\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":348,"url":"https:\/\/drfugazi.eu.org\/en\/dovecot-2\/","url_meta":{"origin":231,"position":4},"title":"Dovecot","author":"drfugazi","date":"Monday June  4th, 2012","format":false,"excerpt":"Dovecot is an open source IMAP and POP3 email server for Linux\/UNIX-like systems, written with security primarily in mind. Dovecot is an excellent choice for both small and large installations. It's fast, simple to set up, requires no special administration and it uses very little memory.","rel":"","context":"In &quot;Mail system&quot;","block_context":{"text":"Mail system","link":"https:\/\/drfugazi.eu.org\/en\/category\/mail-system\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":226,"url":"https:\/\/drfugazi.eu.org\/en\/instalacja-systemu-pocztowego-na-ubuntu\/","url_meta":{"origin":231,"position":5},"title":"Instalacja systemu pocztowego na Ubuntu","author":"drfugazi","date":"Friday November 19th, 2010","format":false,"excerpt":"Zak\u0142adam, \u017ce system jest zainstalowany i posiada podstawow\u0105 konfiguracj\u0119 z uruchomion\u0105 us\u0142ug\u0105 SSH. Po zalogowaniu przyst\u0119pujemy do instalacji pakietu dovecot-postfix, kt\u00f3ry opisany jest jako w pe\u0142ni funkcjonalny serwer pocztowy: drfugazi@charr:~% sudo aptitude install dovecot-postfix [sudo] password for drfugazi: Czytanie list pakiet\u00f3w... Gotowe Budowanie drzewa zale\u017cno\u015bci Odczyt informacji o stanie... Gotowe\u2026","rel":"","context":"In \"Dovecot\"","block_context":{"text":"Dovecot","link":"https:\/\/drfugazi.eu.org\/en\/tag\/dovecot\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/drfugazi.eu.org\/en\/wp-json\/wp\/v2\/posts\/231"}],"collection":[{"href":"https:\/\/drfugazi.eu.org\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/drfugazi.eu.org\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/drfugazi.eu.org\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/drfugazi.eu.org\/en\/wp-json\/wp\/v2\/comments?post=231"}],"version-history":[{"count":0,"href":"https:\/\/drfugazi.eu.org\/en\/wp-json\/wp\/v2\/posts\/231\/revisions"}],"wp:attachment":[{"href":"https:\/\/drfugazi.eu.org\/en\/wp-json\/wp\/v2\/media?parent=231"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/drfugazi.eu.org\/en\/wp-json\/wp\/v2\/categories?post=231"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/drfugazi.eu.org\/en\/wp-json\/wp\/v2\/tags?post=231"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}