Postfix + Dovecot + LDAP

Thank you for reading this post, don't forget to subscribe!

рас­смот­рим поша­го­вый про­цесс настрой­ки инте­гра­ции поч­то­вой систе­мы Postfix + Dovecot с LDAP на базе Active Directory.  нач­нем с обыч­ной аутен­ти­фи­ка­ции, затем под­клю­чим LDAP и, нако­нец, настро­им вир­ту­аль­ных поль­зо­ва­те­лей, хра­ня­щих­ся в служ­бе ката­ло­гов. Так­же мы рас­смот­рим при­ме­ры для систем на базе Debian/Ubuntu и Red Hat/Centos.

Postfix  - про­грамм­ный про­дукт, поз­во­ля­ю­щий орга­ни­зо­вать поч­то­вый сер­вер. Явля­ет­ся бес­плат­ным и уста­нав­ли­ва­ет­ся на опе­ра­ци­он­ные систе­мы семей­ства UNIX.

Dovecot  - сер­вер для предо­став­ле­ния досту­па к поч­то­вым ящи­кам по про­то­ко­лам POP3 и IMAP.

Dovecot раз­ра­бо­тан для опе­ра­ци­он­ных систем на базе UNIX, напри­мер, Ubuntu, CentOS, FreeBSD, Debian. Чаще все­го, настра­и­ва­ет­ся для сов­мест­ной рабо­ты с Postfix и Exim.

Пози­ци­о­ни­ру­ет­ся, как без­опас­ное реше­ние для досту­па к почте. Име­ет­ся под­держ­ка мно­же­ства спо­со­бов аутен­ти­фи­ка­ции, защи­ты инфор­ма­ции с помо­щью шиф­ро­ва­ния, воз­мож­ность гиб­кой настрой­ки прав для поч­то­вых каталогов.

Основ­ной кон­фи­гу­ра­ци­он­ный файл нахо­дит­ся по пути /etc/dovecot/dovecot.conf или /usr/local/etc/dovecot/dovecot.conf. Одна­ка, в более новых вер­си­ях настрой­ки раз­би­ты по фай­лам, кото­рые рас­по­ло­же­ны в ката­ло­ге /etc/dovecot/conf.d — каж­дый из них отве­ча­ет за свою часть настроек.

Active Directory — служ­ба ката­ло­гов от кор­по­ра­ции Microsoft. Сер­вер, на кото­рый ста­вит­ся дан­ная роль назы­ва­ют кон­трол­ле­ром доме­на. Так­же на дан­ный сер­вер, очень часто, уста­нав­ли­ва­ют служ­бы DHCP и DNS для пол­ной интеграции.

Active Directory нужен для хра­не­ния инфор­ма­ции о ресур­сах ком­па­нии (ком­пью­те­рах, поль­зо­ва­те­лях, прин­те­рах и так далее) и предо­став­ля­ет сле­ду­ю­щие возможности:

  • Сер­вис аутен­ти­фи­ка­ции (про­вер­ки логи­на и пароля).
  • Мас­со­вое рас­про­стра­не­ние настро­ек всем поль­зо­ва­те­лям и ком­пью­те­рам сети.
  • База дан­ных для хра­не­ния настро­ек сов­ме­сти­мых при­ло­же­ний (напри­мер, Exchange).

Настройка брандмауэра

Перед тем, как мы нач­нем настрой­ку, убе­дим­ся, что для поч­то­во­го сер­ве­ра у нас откры­ты необ­хо­ди­мые пор­ты в бранд­мау­э­ре. В зави­си­мо­сти от исполь­зу­е­мой систе­мы управ­ле­ния netfilter коман­ды будут отличаться.

Для Iptables

Как пра­ви­ло, Iptables исполь­зу­ет­ся для систем на базе Debian.

Для того, что­бы открыть нуж­ные нам пор­ты, вводим:

iptables -I INPUT 1 -p tcp --match multiport --dports 25,465,587 -j ACCEPT

iptables -I INPUT 1 -p tcp --match multiport --dports 110,143,993,995 -j ACCEPT

* где мы откро­ем сле­ду­ю­щие порты:

  • 25 — стан­дарт­ный SMTP через STARTTLS;
  • 110 — стан­дарт­ный POP3 через STARTTLS;
  • 143 — стан­дарт­ный IMAP через STARTTLS;
  • 465 — защи­щен­ный SMTP через SSL/TLS;
  • 587 — защи­щен­ный SMTP через STARTTLS;
  • 993 — защи­щен­ный IMAP через SSL/TLS;
  • 995 — защи­щен­ный POP3 через SSL/TLS.

Для сохра­не­ния пра­вил уста­но­вим пакет:

apt-get install iptables-persistent

И выпол­ня­ем команду:

netfilter-persistent save

Firewalld

Firewalld, в основ­ном, исполь­зу­ет­ся в систе­мах на базе Red Hat.

Для откры­тия нуж­ных нам пор­тов вво­дим команды:

firewall-cmd --permanent --add-port=25/tcp --add-port=465/tcp --add-port=587/tcp

firewall-cmd --permanent --add-port=110/tcp --add-port=143/tcp --add-port=993/tcp --add-port=995/tcp

И при­ме­ня­ем настройки:

firewall-cmd --reload

* где мы откро­ем сле­ду­ю­щие порты:

  • 25 — стан­дарт­ный SMTP через STARTTLS;
  • 110 — стан­дарт­ный POP3 через STARTTLS;
  • 143 — стан­дарт­ный IMAP через STARTTLS;
  • 465 — защи­щен­ный SMTP через SSL/TLS;
  • 587 — защи­щен­ный SMTP через STARTTLS;
  • 993 — защи­щен­ный IMAP через SSL/TLS;
  • 995 — защи­щен­ный POP3 через SSL/TLS.

1. Настройка аутентификации на Postfix

Аутен­ти­фи­ка­ция на postfix будет выпол­нять­ся мето­дом dovecot. Для это­го уста­нав­ли­ва­ем его. Заод­но, уста­нав­ли­ва­ем и postfix (на слу­чай, если его нет еще в систе­ме). В зави­си­мо­сти от исполь­зу­е­мой опе­ра­ци­он­ной систе­мы исполь­зу­ем раз­ные команды.

а) если исполь­зу­ем Ubuntu / Debian:

apt-get update

apt-get install postfix dovecot-imapd dovecot-pop3d

б) если исполь­зу­ем CentOS / Red Hat:

yum install postfix dovecot

После уста­нов­ки паке­тов, раз­ре­ша­ем авто­за­пуск dovecot и postfix:

systemctl enable postfix dovecot

Откры­ва­ем на редак­ти­ро­ва­ние кон­фи­гу­ра­ци­он­ный файл наше­го MTA Postfix:

vi /etc/postfix/main.cf

Добав­ля­ем стро­ки (или меня­ем значения):

 

* где:

  • smtpd_sasl_type — тип пла­ги­на, кото­рый исполь­зу­ет­ся для SASL-аутен­ти­фи­ка­ции. Коман­дой postconf -a мы можем полу­чить спи­сок меха­низ­мов аутен­ти­фи­ка­ции, кото­рые под­дер­жи­ва­ют­ся поч­то­вой системой.
  • smtpd_sasl_auth_enable — раз­ре­ша­ет или запре­ща­ет аутен­ти­фи­ка­цию по меха­низ­му SASL.
  • smtpd_sasl_path — путь до фай­ла для обме­на аутен­ти­фи­ка­ци­он­ной инфор­ма­ци­ей. Исполь­зу­ет­ся для вза­и­мо­дей­ствия несколь­ких систем — в нашем при­ме­ре Postfix + Dovecot.
  • smtpd_relay_restrictions — пра­ви­ла раз­ре­ше­ния и запре­та исполь­зо­ва­ния MTA при пере­сыл­ке. В нашем случае: 
    • permit_mynetworks — раз­ре­шить отправ­ку с ком­пью­те­ров, чьи IP-адре­са соот­вет­ству­ют настрой­ке mynetworks.
    • permit_sasl_authenticated — раз­ре­шить отправ­ку писем тем, кто про­шел авторизацию.
    • reject_unauth_destination — запре­тить всем, кто не про­шел про­вер­ку подлинности.

Про­ве­ря­ем кор­рект­ность настройки:

postconf > /dev/null

Если коман­да не вер­ну­ла оши­бок, пере­за­пус­ка­ем Postfix:

systemctl restart postfix

Пере­хо­дим к настрой­ке dovecot — откры­ва­ем файл:

vi /etc/dovecot/conf.d/10-master.conf

… и при­во­дим опцию service auth к сле­ду­ю­ще­му виду:

 

 

 

* если соот­вет­ству­ю­щей сек­ции unix_listener нет, то ее нуж­но создать. Обра­ти­те вни­ма­ние, что для обме­на аутен­ти­фи­ка­ци­он­ны­ми дан­ны­ми мы при­ме­ня­ем файл /var/spool/postfix/private/auth, кото­рый в кон­фи­гу­ра­ци­он­ном фай­ле postfix был ука­зан, как private/auth.

Отклю­ча­ем тре­бо­ва­ние ssl для аутен­ти­фи­ка­ции (на теку­щем эта­пе нам это не нужно):

vi /etc/dovecot/conf.d/10-ssl.conf

Про­ве­ря­ем, что­бы зна­че­ние ssl не было required:

ssl = yes

* нас устро­ит оба вари­ан­та — yes или no.

Настрой­ки аутен­ти­фи­ка­ции при­во­дим к сле­ду­ю­ще­му виду:

vi /etc/dovecot/conf.d/10-auth.conf

auth_mechanisms = plain login

* дан­ные меха­низ­мы поз­во­ля­ют пере­да­чу дан­ных в откры­том виде.

В этом же фай­ле про­ве­ря­ем, что снят ком­мен­та­рий со сле­ду­ю­щей строки:

!include auth-system.conf.ext

Про­ве­ря­ем кор­рект­ность настрой­ки dovecot:

doveconf > /dev/null

Если коман­да ниче­го не вер­ну­ла, пере­за­пус­ка­ем сервис:

systemctl restart dovecot

В каче­стве логи­на и паро­ля мож­но исполь­зо­вать любую систем­ную учет­ную запись. Созда­дим ее для теста:

useradd smtptest

passwd smtptest

Мы настро­и­ли про­стую аутен­ти­фи­ка­цию на сер­ве­ре SMTP. Для про­вер­ки мож­но вос­поль­зо­вать­ся любым поч­то­вым кли­ен­том. При­мер настрой­ки thunderbird:

Про­бу­ем отпра­вить пись­мо. Отправ­ка долж­на потре­бо­вать вво­да логи­на и пароль — исполь­зу­ем аутен­ти­фи­ка­ци­он­ные дан­ные для запи­си, создан­ной выше.

Мы завер­ши­ли настрой­ку аутн­ти­фи­ка­ции на postfix при отправ­ке пись­ма. Доба­вим про­вер­ку дан­ных через LDAP.

2. Подключение LDAP

И так, наш сер­вер тре­бу­ет вво­да логи­на и паро­ля от систем­ных учет­ных запи­сей для отправ­ки писем. Теперь сде­ла­ем так, что­бы эти учет­ные запи­си бра­лись из LDAP (на при­ме­ре Active Directory).

В служ­бе ката­ло­гов нам нуж­на учет­ная запись со стан­дарт­ны­ми пра­ва­ми — ее мы будем исполь­зо­вать для под­клю­че­ния к LDAP. Созда­ем слу­жеб­ную учет­ную запись, напри­мер, postfix в кор­не­вом кон­тей­не­ре Users. Таким обра­зом, в моем при­ме­ре, это будет запись cn=postfix,cn=Users,dc=test,dc=local (в домене test.local).

Теперь воз­вра­ща­ем­ся на наш сер­вер. Если у нас Debian/Ubuntu, необ­хо­ди­мо уста­но­вить пакет dovecot-ldap:

apt-get install dovecot-ldap

Откры­ва­ем файл:

vi /etc/dovecot/dovecot-ldap.conf.ext

* в систе­мах deb файл уже будет создан и в нем будут при­ве­де­ны при­ме­ры настрой­ки; в систе­мах RPM файл будет создан новый файл.

Добав­ля­ем в него следующее:

 

 

 

* где:

  • hosts — имя наше­го сер­ве­ра ldap (в моем при­ме­ре ука­зан домен, так как по нему у меня раз­ре­ша­ет­ся кла­стер LDAP).
  • ldap_version — вер­сия ldap. Как пра­ви­ло, третья.
  • auth_bind — ука­зы­ва­ем, нуж­но ли выпол­нять аутен­ти­фи­ка­цию при свя­зы­ва­нии с LDAP.
  • dn — учет­ная запись для про­хож­де­ния авто­ри­за­ции при свя­зы­ва­нии со служ­бой каталогов.
  • dnpass — пароль от запи­си для про­хож­де­ния авторизации.
  • base — базо­вый кон­тей­нер, в кото­ром мы ищем наших поль­зо­ва­те­лей. Нель­зя исполь­зо­вать поиск на уровне доме­на. Вни­ма­тель­нее про­ве­ря­ем путь на пред­мет исполь­зо­ва­ния кон­тей­не­ров (CN) или орга­ни­за­ци­он­ных юни­тов (OU).
  • scope — ука­зы­ва­ет на каком уровне нуж­но искать пользователей: 
    • subtree — во всех вло­жен­ных контейнерах.
    • onelevel — во всех вло­жен­ных кон­тей­не­рах, но на один уровень.
    • base — толь­ко в кон­тей­не­ре, кото­рый ука­зан в base.
  • deref — пара­метр озна­ча­ет исполь­зо­ва­ние поис­ка по разы­ме­но­ван­ным псев­до­ни­мам. К сожа­ле­нию, не нашел подроб­но­го опи­са­ния. Обыч­но, не используется.
  • pass_filter — фильтр для поис­ка паро­лей поль­зо­ва­те­лей. Его фор­мат зави­сит от исполь­зу­е­мой реа­ли­за­ции LDAP. В нашем при­ме­ре это Active Directory.
  • user_filter — фильтр для поис­ка учет­ных запи­сей поль­зо­ва­те­лей. Фор­мат зави­сит от того, какую реа­ли­за­цию для LDAP мы используем.

Не знаю при­чи­ну, но если для base ука­зать кор­не­вой путь к доме­ну, напри­мер, dc=test,dc=local, наша связ­ка не будет рабо­тать, а систе­ма вер­нет ошиб­ку … failed: Operations error.

Откры­ва­ем файл:

vi /etc/dovecot/conf.d/10-auth.conf

Ком­мен­ти­ру­ем стро­ку для исполь­зо­ва­ния аутен­ти­фи­ка­ции по систем­ных учет­ных запи­сям и сни­ма­ем ком­мен­та­рий для аутен­ти­фи­ка­ции в ldap. Полу­чим сле­ду­ю­щий результат:

#!include auth-system.conf.ext

!include auth-ldap.conf.ext

Про­ве­ря­ем кор­рект­ность настрой­ки dovecot:

doveconf > /dev/null

И пере­за­пус­ка­ем его:

systemctl restart dovecot

Воз­вра­ща­ем­ся к настро­ен­но­му поч­то­во­му кли­ен­ту и меня­ем пара­мет­ры для авто­ри­за­ции с smtptest на учет­ную запись из доме­на, напри­мер, master@test.local. Про­ве­ря­ем отправ­ку пись­ма — систе­мы долж­на запро­сить пароль и отпра­вить пись­мо при успеш­ной про­вер­ке пользователя.

Мож­но пере­хо­дить к настрой­ке поч­то­вых ящи­ков для поль­зо­ва­те­лей из LDAP.

3. Виртуальные пользователи LDAP

Для полу­че­ния почты нам оста­лось настро­ить вир­ту­аль­ные ящи­ки, инфор­ма­ция о кото­рых хра­нит­ся в LDAP. Для это­го выпол­ним настрой­ку Postfix и Dovecot.

Созда­ем учет­ную запись, от кото­рой будут выпол­нять­ся зада­чи чте­ния и запи­си поч­то­вых ящи­ков в ката­ло­ге на сервере:

groupadd -g 1024 vmail

useradd -d /home/mail -g 1024 -u 1024 vmail

* пер­вой коман­дой мы созда­ем груп­пу vmail с иден­ти­фи­ка­то­ром 1024. Вто­рая коман­да созда­ет поль­зо­ва­те­ля vmail с домаш­ней дирек­то­ри­ей /home/mail и иден­ти­фи­ка­то­ром 1024; поль­зо­ва­тель вхо­дит в груп­пу vmail, создан­ную пер­вой коман­дой. В вашей систе­ме иден­ти­фи­ка­тор 1024 может быть уже занят — в этом слу­чае меня­ем его на дру­гой номер и ниже по инструк­ции заме­ня­ем зна­че­ние 1024 на свое.

Созда­ем домаш­нюю дирек­то­рию для пользователя:

mkdir /home/mail

Зада­ем в каче­стве вла­дель­ца наше­го создан­но­го пользователя:

chown vmail:vmail /home/mail

Мы будем хра­нить всю почту поль­зо­ва­те­лей в ката­ло­ге /home/mail.

Для систем на базе Debian (Ubuntu) нуж­но так­же уста­но­вить postfix-ldap:

apt-get install postfix-ldap

Откры­ва­ем кон­фи­гу­ра­ци­он­ный файл postfix:

vi /etc/postfix/main.cf

Добав­ля­ем сле­ду­ю­щие строки:

 

 

 

* где:

  • virtual_transport — ука­зы­ва­ет куда даль­ше долж­на пере­да­вать­ся полу­чен­ная поч­та для обра­бот­ки. В нашем при­ме­ре, после пост­фик­са она отпра­вит­ся в dovecot.
  • virtual_minimum_uid — с како­го номе­ра при­сва­и­вать иден­ти­фи­ка­то­ры пользователям.
  • virtual_uid_maps — от како­го иден­ти­фи­ка­то­ра поль­зо­ва­те­ля будет рабо­тать достав­ка сооб­ще­ний. В нашем при­ме­ре это 1024, кото­рый при­сво­ен поль­зо­ва­те­лю vmail.
  • virtual_gid_maps — иден­ти­фи­ка­тор груп­пы поль­зо­ва­те­ля для достав­ки сооб­ще­ний — 1024 (vmail).
  • virtual_mailbox_base — ката­лог, где будут хра­нить­ся поч­то­вые ящи­ки поль­зо­ва­те­лей и сами письма.
  • virtual_mailbox_domains — доме­ны, для кото­рых наш сер­вер будет при­ни­мать почту. Если их несколь­ко, пере­чис­ля­ем через пробел.
  • virtual_alias_maps — путь хра­не­ния али­а­сов для вир­ту­аль­ных поль­зо­ва­те­лей, а так­же фор­мат хра­не­ния — в нашем слу­чае ldap.
  • virtual_mailbox_maps — фор­мат и путь хра­не­ния поч­то­вых ящи­ков для вир­ту­аль­ных пользователей.

В нашем кон­фи­ге созда­но 2 кар­ты для полу­че­ния дан­ных из AD — ldap_virtual_alias_maps.cf и ldap_virtual_mailbox_maps.cf. Созда­ем эти фай­лы с опи­са­ни­ем того, как нуж­но извле­кать данные.

Созда­ем файл для полу­че­ния алиасов:

vi /etc/postfix/ldap_virtual_alias_maps.cf

 

 

Созда­ем файл для полу­че­ния поч­то­вых ящиков:

vi /etc/postfix/ldap_virtual_mailbox_maps.cf

 

 

* где для обо­их файлов:

  • version — вер­сия ldap. Как пра­ви­ло, третья.
  • server_host — имя наше­го сер­ве­ра ldap (в моем при­ме­ре ука­зан домен, так как по нему у меня раз­ре­ша­ет­ся кла­стер LDAP).
  • search_base — базо­вый кон­тей­нер, в кото­ром мы ищем наших пользователей.
  • query_filter — фильтр для поис­ка учет­ных запи­сей поль­зо­ва­те­лей. Фор­мат зави­сит от того, какую реа­ли­за­цию для LDAP мы используем.
  • result_filter — (или result_format) фор­мат для выво­да най­ден­ных резуль­та­тов. Рас­смот­рим воз­мож­ные вари­ан­ты для master@test.local:
    • %s — воз­вра­ща­ет резуль­тат как есть, то есть, master@test.local.
    • %u — упус­ка­ет домен, то есть, master.
    • %d — воз­вра­ща­ет домен­ную часть, то есть, test.local.
  • result_attribute — атри­бут LDAP, кото­рый дол­жен читать postfix. В реа­ли­за­ции от Microsoft это mail.
  • special_result_attribute — резуль­тат может содер­жать груп­пу, по кото­рой необ­хо­ди­мо про­ве­сти рекур­сив­ный поиск. В этом слу­чае Postfix будет выпол­нять дан­ную рекур­сию для атри­бу­та member.
  • scope — глу­би­на поис­ка. Как и рас­смот­рен­ная выше scope для dovecot, име­ет 3 воз­мож­ные значения: 
    • sub — во всех вло­жен­ных контейнерах.
    • base — толь­ко в кон­тей­не­ре, кото­рый ука­зан в base.
    • one — во всех вло­жен­ных кон­тей­не­рах, но на один уровень.
  • bind — ука­зы­ва­ем, нуж­но ли выпол­нять аутен­ти­фи­ка­цию при свя­зы­ва­нии с LDAP.
  • bind_dn — учет­ная запись для про­хож­де­ния авто­ри­за­ции при свя­зы­ва­нии со служ­бой каталогов.
  • bind_pw — пароль от запи­си для про­хож­де­ния авторизации.

Откры­ва­ем для редак­ти­ро­ва­ния файл:

vi /etc/postfix/master.cf

Добав­ля­ем строки:

 

 

* необ­хо­ди­мо убе­дить­ся, что в содер­жи­мом фай­ла нет дру­гих рас­ком­мен­ти­ро­ван­ных опций для submission, smtps и dovecot (по умол­ча­нию, их нет). В дан­ном слу­чае, мы настро­и­ли рабо­ту postfix на пор­тах 25, 465 и 587. В фай­ле master.cf мы настра­и­ва­ем рабо­ту вспо­мо­га­тель­ных сер­ви­сов для Postfix. Опи­са­ние каж­до­го сер­ви­са начи­на­ет­ся с новой стро­ки без отсту­па. Затем идут настрой­ки для сер­ви­са и пара­мет­ры запус­ка. Для при­ме­ра, рас­смот­рим первую добав­лен­ную строку —
submission   inet  n  -  n  -  -  smtpd:

  • submission — имя сер­ви­са. Воз­мож­но исполь­зо­ва­ние зара­нее опре­де­лен­ных в postfix служб или созда­ние сво­их. В дан­ном при­ме­ре submission для под­клю­че­ния MUA по пор­ту 587 при отправ­ке почты.
  • inet — тип обслу­жи­ва­ния. Воз­мож­ны вари­ан­ты inet (сокет TCP/IP), unix (пото­ко­вый сокет), unix-dgram (сокет дей­та­грам­мы), fifo (име­но­ван­ный канал оче­ре­ди), pass (пото­ко­вый сокет UNIX-домена).
  • пер­вый "n" — явля­ет­ся ли сер­вис част­ным и дол­жен быть огра­ни­чен­ным. Воз­мож­ны вари­ан­ты y или n. Для типа обслу­жи­ва­ния inet может быть толь­ко n.
  • пер­вый "-" — рабо­та­ет ли служ­ба с пра­ва­ми root. Воз­мож­ны вари­ан­ты yn и -. Про­черк озна­ча­ет непри­ме­ни­мость дан­но­го пара­мет­ра к кон­крет­но­му сервису.
  • вто­рой "n" — долж­на ли служ­ба рабо­тать в окру­же­нии chroot. Воз­мож­ны вари­ан­ты y или n.
  • вто­рой "-" — через какое вре­мя в секун­дах про­бу­дить служ­бу, если она неактивна.
  • тре­тий "-" — мак­си­маль­ное коли­че­ство одно­вре­мен­но выпол­ня­е­мых про­цес­сов, кото­рые может запу­стить дан­ный сервис.
  • smtpd — выпол­ня­е­мая команда.

* после коман­ды идут аргу­мен­ты ее запус­ка. Они могут пере­опре­де­лять пара­мет­ры, задан­ные в main.cf. Каж­дый аргу­мент запи­сы­ва­ет­ся с новой стро­ки и начи­на­ет­ся с двух про­бе­лов. В дан­ном при­ме­ре мы исполь­зу­ем сле­ду­ю­щие аргументы:

  • smtpd_tls_security_level — зада­ет уро­вень без­опас­но­сти с при­ме­не­ни­ем TLS. В дан­ном при­ме­ре may гово­рит о воз­мож­но­сти его использования.
  • smtpd_sasl_auth_enable — раз­ре­ша­ет sasl аутентификацию.
  • smtpd_sasl_type — ука­зы­ва­ет тип аутентификации.
  • smtpd_sasl_path — путь до вре­мен­ных фай­лов обме­на инфор­ма­ци­ей с сер­ве­ром хра­не­ния почты (в нашем слу­чае Dovecot). Ука­зы­ва­ет­ся либо абсо­лют­ный путь, либо отно­си­тель­ный queue_directory.
  • smtpd_sasl_security_options — допол­ни­тель­ные опции настрой­ки sasl.
  • smtpd_sasl_local_domain — доба­вить домен для поль­зо­ва­те­лей, кото­рые про­хо­дят smtp-аутентификацию.
  • syslog_name — пре­фикс назва­ния служ­бы при зане­се­нии ее в систем­ный журнал.
  • smtpd_tls_wrappermode — запус­кать ли служ­бу в нестан­дарт­ном режи­ме (для под­держ­ки TLS).
  • smtpd_client_restrictions — настрой­ки огра­ни­че­ния кли­ент­ских соеди­не­ний. В дан­ном при­ме­ре раз­ре­шить толь­ко авторизованных.

Обта­ти­те вни­ма­ние на dovecot — в моем при­ме­ре идут 2 стро­ки с опци­я­ми: пер­вая для систем Debian, вто­рая заком­мен­ти­ро­ва­на, и она для Red Hat. Вам необ­хо­ди­мо оста­вить ком­мен­та­рий для нуж­но систе­мы, вто­рую стро­ку мож­но заком­мен­ти­ро­вать или удалить.

Про­ве­ря­ем кор­рект­ность настро­ек Postfix:

postconf > /dev/null

Если оши­бок нет, пере­за­пус­ка­ем его:

systemctl restart postfix

Пере­хо­дим к настрой­ке Dovecot. Откры­ва­ем файл:

vi /etc/dovecot/conf.d/10-mail.conf

Нахо­дим опцию mail_location и при­во­дим ее к виду:

mail_location = maildir:/home/mail/%d/%u/

* в дан­ном при­ме­ре сооб­ще­ния будут хра­нить­ся в более совре­мен­ном фор­ма­те maildir в ката­ло­ге /home/mail/<почтовый домен>/<логин пользователя>. 

Откры­ва­ем файл:

vi /etc/dovecot/conf.d/10-master.conf

Ранее мы уже настра­и­ва­ли раз­дел service auth — допи­шем в него еще одну настройку:

 

 

auth-userdb — сокет для авто­ри­за­ции через dovecot-lda. Опция mode зада­ет пра­ва на сокет, напри­мер, 666 поз­во­лит любо­му поль­зо­ва­те­лю к нему под­клю­чить­ся; user и group зада­ет поль­зо­ва­те­ля и груп­пу вла­дель­цев на сокет.
* обра­ти­те вни­ма­ние, что unix_listener auth-userdb уже суще­ству­ет в откры­том фай­ле, поэто­му нам нуж­но либо его при­ве­сти к дан­но­му виду, либо заком­мен­ти­ро­вать то, что было и вста­вить новый вариант.

Так­же доба­вим строки:

 

 

* в про­тив­ном слу­чае, мы можем уви­деть в логе ошиб­ку error net_connect_unix(/var/run/dovecot/stats-writer) failed permission denied, так как у поль­зо­ва­те­ля vmail не будет прав.

Идем далее — откры­ва­ем файл:

vi /etc/dovecot/conf.d/15-lda.conf

lda_mailbox_autocreate = yes

* дан­ной опци­ей мы раз­ре­ша­ем авто­ма­ти­че­ски созда­вать ката­ло­ги для поч­то­вых ящиков.

Нако­нец, откры­ва­ем ранее настра­и­ва­е­мый нами файл:

vi /etc/dovecot/dovecot-ldap.conf.ext

… и добавляем:

user_attrs = \
=uid=1024, \
=gid=1024

* в дан­ном при­ме­ре мы воз­вра­ща­ем для най­ден­но­го в LDAP поль­зо­ва­те­ля атри­бут с иден­ти­фи­ка­то­ром создан­но­го поль­зо­ва­те­ля vmail. Это нуж­но, что­бы у нас не воз­ник­ло про­блем с досту­пом к ката­ло­гу поч­то­вых ящиков.

Про­ве­ря­ем кор­рект­ность настрой­ка dovecot:

doveconf > /dev/null

И пере­за­пу­стим его:

systemctl restart dovecot

Про­бу­ем отпра­вить пись­мо поль­зо­ва­те­лю LDAP. Поч­то­вый сер­вер дол­жен при­нять пись­мо, а в ката­ло­ге /home/mail создать пап­ку с доме­ном и email пользователя.