Настройка postfix + dovecot + ldap

DNS-записи домена — введение

Доменные имена

Общая группа доменов указывается справа. В приведенных ниже примерах домен верхнего уровня или TLD — это .com.

example.com
mail.hello.example.com

Каждое значение слева от TLD отделяется точкой, и называются поддоменами. hello и mail соответственно являются поддоменами второго и третьего уровня. Субдомены используются для идентификации определенных компьютеров или служб.

Серверы имен

Выбор и указание сервера DNS является неотъемлемой частью владения доменом. Иначе клиентские устройства не будут знать, где найти информацию о DNS.

Серверы имен размещают информацию о домене DNS в текстовом файле, который называется файлом зоны. Они также известны как записи Start of Authority (SOA). Вы можете разместить свою информацию DNS на серверах имен в одном из нескольких мест:

  • Регистратор домена;
  • Ваш собственный DNS-сервер;
  • Сторонний DNS-хостинг.

DNS-записи и файлы зон

Записи DNS сопоставляют доменные имена с IP-адресами. Затем DNS-записи автоматически объединяются в файл зоны, что позволяет подключенным устройствам искать правильный IP-адрес домена. Если вы решите использовать серверы имен Linode, диспетчер DNS поможет создать файл зоны. Он содержит следующие записи:

; example.com 
$TTL 86400
@  IN  SOA ns1.linode.com. admin.example.com. 2013062147 14400 14400 1209600 86400
@       NS  ns1.linode.com.
@       NS  ns2.linode.com.
@       NS  ns3.linode.com.
@       NS  ns4.linode.com.
@       NS  ns5.linode.com.
@           MX  10  mail.example.com.
@           A   12.34.56.78
mail        A   12.34.56.78
www         A   12.34.56.78

Файл зоны каждого домена включает в себя адрес электронной почты администратора домена, серверы имен и DNS-записи. Вы можете создавать множество записей для любого количества поддоменов.

Разрешение DNS

Доменное имя должно быть переведено на IP-адрес. DNS сопоставляет понятные пользователю доменные имена (example.com) с IP-адресами (192.0.2.8). Это происходит в специальном текстовом файле, называемом файлом зоны. В нем перечислены домены и соответствующие им IP-адреса. Файл зоны похож на телефонную книгу, в которой имена совпадают с адресами улиц.

Вот как работает процесс поиска DNS:

  1. Вы вводите доменное имя, например com,в адресную строку браузера.
  2. Компьютер подключен к интернету через провайдера (ISP). DNS-преобразователь интернет-провайдера запрашивает у корневого сервера имен соответствующий сервер имен TLD.
  3. Корневой DNS-сервер отвечает IP-адресом для сервера имен .com.
  4. DNS-распознаватель провайдера использует IP-адрес, полученный от корневого сервера имен.
  5. Сервер имен .comотвечает IP-адресом сервера имен com.
  6. DNS-распознаватель ISP считывает файл зоны с сервера имен домена.
  7. Файл зоны показывает, какой IP-адрес соответствует домену.
  8. Теперь, когда у провайдера есть IP-адрес для com, он возвращает его браузеру, который затем обращается к серверу сайта.

Описанный выше сценарий выполняется, если у провайдера нет информации о запрашиваемом домене. На самом деле провайдеры кэшируют данные о DNS после того, как получили ее в первый раз. Это ускоряет поиск и снижает нагрузку на DNS-серверы.

Но кэширование может стать проблемой, если вы недавно внесли изменения в информацию о DNS. Для ее решения измените значение времени жизни файла зоны (TTL), чтобы обновление DNS происходило быстрее.

Настройка аутентификации на 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 = dovecot
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = private/auth
smtpd_relay_restrictions =
        permit_mynetworks
        permit_sasl_authenticated
        reject_unauth_destination

* где:

  • 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 к следующему виду:

service auth {
  …
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    user = postfix
    group = postfix
  }
  …
}

* если соответствующей секции 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.

Установите бесплатный SSL-сертификат Let’s Encrypt

Мы собираемся использовать сертификат SSL для доступа к нашей установке Postfix Admin и включить шифрование Dovecot и Postfix SSL / TLS.

У нас есть руководство по установке SSL-сертификата Let’s Encrypt . Наиболее важным моментом здесь является создание сертификата SSL для вашего имени хоста сервера (FQDN) в нашем случае .

После того, как вы сгенерировали сертификат SSL, следуя приведенному выше учебнику, отредактируйте свой блок сервера Nginx следующим образом:

/etc/nginx/sites-enabled/mail.baks.dev.conf

Перезагрузите службу Nginx, чтобы изменения вступили в силу:

На этом этапе вы сможете войти в систему установки Postfix Admin по адресу , используя пользователя superadmin, созданного ранее в этом руководстве.

Настройка Dovecot

Dovecot — это IMAP и POP3 сервер, который позволит нам забирать почту программами сборщиками. Это гибкий и безопасный инструмент в системе Linux.

Нам нужно открыть на редактирование файл /etc/postfix/master.cf и добавить в конце следующие ниже строки:

Сохраним для потомков изначальный конфигурационный файл Dovecot:

После чего откроем файл /etc/dovecot/dovecot.conf на редактирование и заменим всё его содержимое указанным ниже кодом. Ящик «postmaster@example.com» следует заменить на желаемый:

MySQL будет сохранять в себе пароли доступа, поэтому мы сохраним копию первоначального /etc/dovecot/dovecot-sql.conf, а потом произведём настройку:

Содержимое исходного файла /etc/dovecot/dovecot-sql.conf полностью заменим на нижеуказанное, не забудем поменять пароль «mail_admin_password» на актуальный:

На этом настройка Dovecot завершена, следует перезагрузить его:

Проверим файл /var/log/mail.log на отсутсвие ошибок:

И найдём примерно следующие строки:

Перед началом тестирования следует установить права и владельца на файл конфигурации Dovecot /etc/dovecot/dovecot.conf:

Проверим корректность работы POP3 сервера, для этого мы подключимся к POP3 серверу через терминал:

После ввода команды в консоли должно отобразиться примерно следующие:

Выйдем из режима терминала, пока он нам больше не нужен:

С Dovecot разобрались, теперь перейдём к настройке алиасов.

Настройка Postfix на работу с MySQL

Для каждой таблицы в MySQL нам следует создать файл соответствия для Postfix.

Создадим файл для работы с почтовыми доменами Postfix:

В созданный файл /etc/postfix/mysql-virtual_domains.cf нужно добавить следующие строки, замените пароль «mail_admin_password» на пароль пользователя «mail_admin»:

Создадим похожий файл для настройки пересылки почты с ящика на ящик:

В созданный файл /etc/postfix/mysql-virtual_forwardings.cf нужно добавить следующие строки, замените пароль «mail_admin_password» на пароль пользователя «mail_admin»:

Далее создадим файл для работы с почтовыми аккаунтами:

В созданный файл /etc/postfix/mysql-virtual_mailboxes.cf нужно добавить следующие строки, замените пароль «mail_admin_password» на пароль пользователя «mail_admin»:

И наконец создаём вспомогательный файл для виртуального отображения почты:

Установим нужные права и владельца на только что созданные файлы:

Добавим почтовую группу и пользователя для передачи почты. Все сообщения виртуальных почтовых ящиков будут храниться в папке /home/vmail на сервере:

На редактирование файл /etc/postfix/main.cf и убедимся в наличии следующих строк, адрес сервера следует заменить на выбранный ранее:

На этом мы закончим конфигурировать Postfix и перейдём к настройке SSL и генерации сертификата.

Создание сертификатов для postfix и dovecot

Генерируем Certificate Signing Request (CSR)

Создадим ключ для Certificate Signing Request (CSR)

cd /etc/ssl && openssl genrsa -des3 -out server.key 2048

здесь необходимо будет указать пароль для защищённого ключа

Теперь создадим незащищённый ключ

openssl rsa -in server.key -out server.key.insecure && mv server.key server.key.secure && mv server.key.insecure server.key

здесь необходимо будет указать пароль от защищённого ключа

Создадим CSR

openssl req -new -key server.key -out server.csr

здесь необходимо будет ответить на ряд вопросов

Country Name (2 letter code) :RU
(страна)
State or Province Name (full name) :obl-t
(область)
Locality Name (eg, city) []:NewCity
(город)
Organization Name (eg, company) : Example Ltd
(название организации)
Organizational Unit Name (eg, section) []:branch
(название подразделения)
Common Name (eg, YOUR name) []:example.com
(ваш домен)
Email Address []:admin@example.com

A challenge password []:
(оставил пустым)
An optional company name []: Example

Установим ключ сервера

cp server.key /etc/ssl/private

Создаём внутренний Certification Authority (CA)
Для начала создадим директории необходимые для СА сертификатов

mkdir /etc/ssl/CA && mkdir /etc/ssl/newcerts

Создаём необходимые файлы

sh -c "echo '01' > /etc/ssl/CA/serial" && touch /etc/ssl/CA/index.txt

Редактируем /etc/ssl/openssl.cnf в секции следующим образом

dir                  = /etc/ssl/             # Where everything is kept
database       = $dir/CA/index.txt     # database index file.
certificate      = $dir/certs/cacert.pem # The CA certificate
serial             = $dir/CA/serial        # The current serial number
private_key   = $dir/private/cakey.pem# The private key
default_days = 3650                  # how long to certify for

Создадим self-singed корневой сертификат

openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -newkey rsa:2048 -out cacert.pem

здесь необходимо будет указать пароль для ключа и ответить на вопросы

Установим корневой сертификат и ключ

mv cakey.pem /etc/ssl/private/ && mv cacert.pem /etc/ssl/certs/

Создадим сертификаты для postfix и dovecot
Создаём сертификат для postfix

openssl ca -in server.csr -config /etc/ssl/openssl.cnf 

отвечаем на вопросы

Enter pass phrase for /etc/ssl//private/cakey.pem: пароль_от_ключа
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n] y

Установим полученный сертификат

cat /etc/ssl/newcerts/01.pem | sed -n '/-----BEGIN CERTIFICATE-----/,$p' > /etc/ssl/certs/postfix.pem

Для создания следующего сертификата необходимо в файле /etc/ssl/CA/index.txt.attr заменить значение unique_subject с yes на no

sed 's/unique_subject = yes/unique_subject = no/' /etc/ssl/CA/index.txt.attr > /etc/ssl/CA/temp && mv /etc/ssl/CA/temp /etc/ssl/CA/index.txt.attr

Создаём сертификат для dovecot

openssl ca -in server.csr -config /etc/ssl/openssl.cnf 

Устанавливаем полученный сертификат

cat /etc/ssl/newcerts/02.pem | sed -n '/-----BEGIN CERTIFICATE-----/,$p' > /etc/ssl/certs/mydovecot.pem

Настройка saslauthd для доступа к MySQL

Saslauthd — это демон аутентификации, который работает посредствам SASL. Нам он нужен, чтобы связать Postfix с MySQL и позволять им совместно работать.

Для начала создадим директорию для saslauthd:

Сохраним начальную версию файла:

Откроем на редактирование файл /etc/default/saslauthd и установим в нём следующие значения:

После этого нам нужно создать файл /etc/pam.d/smtp:

И внести в него следующие строки. Укажите нужный пароль для пользователя «mail_admin», заменив «mail_admin_password» на верное значение:

Создадим файл /etc/postfix/sasl/smtpd.conf:

И внесём в него следующие строки, так же заменив пароль на верный:

Установим права на вновь созданные файлы:

Теперь добавим пользователя postfix в группу sasl и перезапустим сервисы:

На этом конфигурирование saslauthd завершено. Далее мы настроим Dovecot на использование базы данных MySQL для IMAP/POP3 идентификации.

Install SSL Certificate

While you can generate an SSL certificate through any certificate authority, we recommend using Certbot to quickly and easily generate a free certificate. Follow these
Certbot instructions, selecting your Linux distribution and web server software (or “None” if this server is only functioning as a mail server). Once installed, run Certbot with the option and type in the FQDN name of your mail server (such as mail.example.com):

You can also reference the
Install an SSL Certificate with Certbot guide. Make a note of the file paths for the certificate and private key on the Linode. You will need the path to each during the
configuration steps.

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

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

YAML

smtpd_sasl_type = dovecot
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = private/auth
smtpd_relay_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination

1
2
3
4
5
6
7

smtpd_sasl_type=dovecot
smtpd_sasl_auth_enable=yes
smtpd_sasl_path=private/auth
smtpd_relay_restrictions=

permit_mynetworks

permit_sasl_authenticated

reject_unauth_destination

* где:

  • 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 к сле­ду­ю­ще­му виду:

YAML

service auth {

unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}

}

1
2
3
4
5
6
7
8
9

serviceauth{

unix_listener/var/spool/postfix/private/auth{

mode=0660

user=postfix

group=postfix

}

}

* если соот­вет­ству­ю­щей сек­ции 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.

Managing Spam With SpamAssassin: Stop spam on Postfix, Dovecot, And MySQL

  1. Install SpamAssassin:

  2. Next, create a user for SpamAssassin daemon(spamd):

  3. Edit the configuration file. Set the home directory, update the parameter with the user that was just created (as well as the home directory), and update the parameter to .

    File: /etc/default/spamassassin

    Here is a
    detailed documentation of SpamAssassin’s configuration file that you can refer to while working through these next steps.

  4. File: /etc/spamassassin/local.cf
  5. File: /etc/postfix/master.cf
  6. Start Spamassassin and enable the service to start on boot:

    If not using systemd (as is the case with Debian 7 and earlier), edit the configuration file instead. Set the parameter to .

Как установить Postfix

По умолчания Postfix включен в репозиторий операционной системы Ubuntu, поэтому с установкой не должно возникнуть никаких проблем. Провести ее мы можем с использованием команды apt.

Первым делом обновляем кэш пакетов:

sudo apt update

Затем устанавливаем непосредственно сам пакет Postfix

Здесь важно обратить внимание на значение DEBIAN_PRIORITY=low – оно позволяет нам подключить некоторые дополнительные опции

sudo DEBIAN_PRIORITY=low apt install postfix

В результате перед нами отобразится ряд вопросов и сообщений. Отвечаем на них следующим образом:

  • General type of mail configuration? – в нашем случае мы указываем значение «Internet Site», но оно может отличаться в зависимости от инфраструктуры.
  • System mail name – стандартный домен, который используется для создания точного адреса электронной почты. Он необходим в тех случаях, когда имеется только часть адреса с именем профиля. Например, имя сервера email.example2.com, но мы хотим, чтобы имя системной почты выглядело как example2.com. В этом случае для пользователя user будет использоваться адрес user@example2.com.
  • Root and postmaster mail recipient – это аккаунт Linux, на который будет перенаправляться почта, адресованная root@ и postmaster@. В данном случае вам потребуется использовать свою учетную запись, например, UserNameZ7.
  • Other destinations to accept mail for – текущий параметр определяет получателей почты, которых будет принимать этот экземпляр Postfix. При необходимости вы можете указать собственные доменные имена, для которых сервер будет получать почту.
  • Force synchronous updates on mail queue? – если в вашем случае используется журнальная файловая система, то укажите значение «No».
  • Local networks – это список локальных сетей, для которых почтовая служба настроена как устройство пересылки сообщений. Начальные значения подойдут для всех, но если вы захотите их изменить, то рекомендуется максимально сократить диапазон сетей.
  • Mailbox size limit – позволяет сократить размер сообщения. Если установлено значение «0», то в таком случае ограничения будут полностью отключены.
  • Local address extension character – символ, который используется для отделения обычной части адреса от расширения. По умолчанию значение установлено как «+», можете его оставить.
  • Internet protocols to use – здесь указываем, требуется ли ограничивать версии IP, которые поддерживаются Postfix. Выбираем значение «All».

Все вышеуказанные настройки мы в любой момент времени можем подкорректировать. Чтобы открыть окно редактирования, достаточно ввести:

sudo dpkg-reconfigure postfix

На этом установка Postfix на Ubuntu завершена, теперь можем переходить к более детальным настройкам.

Настройка MySQL базы данных доменных имён и пользователей

Для начала подключимся к MySQL серверу прямо из командной строки, нужно будет ввести пароль пользователя root, указанный при установке:

После этого должно появиться приглашение к вводу команд MySQL, вроде этого:

Создадим базу данных для Postfix и выберем её для дальнейшего использования:

Подобные команда может быть выполнена и через интерфейс phpMyAdmin, но это менее безопасно во всех случаях.

Создадим пользователя с говорящим именем «mail_admin», он у нас будет главный по почте, поэтому наделим его всему привилегиями на всех локальных доменах

ВАЖНО! Сейчас и ниже «mail_admin_password» следует заменить на пароль для этого пользователя, в первой строке он задаётся впервые:. Далее создаём таблицу в которой будут храниться все активные почтовые домены, доменов может быть сколько угодно и это радует:

Далее создаём таблицу в которой будут храниться все активные почтовые домены, доменов может быть сколько угодно и это радует:

Создадим таблицу пересылки почты с ящика на ящик:

Создадим таблицу для хранения почтовых аккаунтов:

И наконец создадим таблицу транспортировки:

Работа с MySQL на данном этапе завершена, выходим обратно в консоль:

Проверим, что MySQL связана с localhost (127.0.0.1). Для этого откроем файл /etc/mysql/my.cnf и найдём следующую строку:

Если MySQL на сервере уже настроен на другой IP адрес, следует это учесть в последующих шагах настройки Postfix. Не рекомендуется запускать MySQL сервер на публичном IP адресе — это небезопасно.

Чтобы внесённые нами изменения корректно вступили в силу — перезапустим MySQL сервер:

На следующем этапе мы настроим Postfix на работу с MySQL.

Настройка SSL

В секции SSL указаны пути к сертификатам:

ssl = yes
ssl_cert = </etc/pki/dovecot/certs/server.crt
ssl_key = </etc/pki/dovecot/private/server.key

Проверте пути к файлам, по-умолчанию это вполне может быть, например, так:

ssl = yes
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem

Права на эти файлы д.б. только для root:

chown root:root /etc/pki/dovecot/certs/dovecot.pem
chown root:root /etc/pki/dovecot/private/dovecot.pem
chmod 444 /etc/pki/dovecot/certs/dovecot.pem
chmod 400 /etc/pki/dovecot/private/dovecot.pem

Настройка Dovecot

Dovecot — это IMAP и POP3 сервер, который позволит нам забирать почту программами сборщиками. Это гибкий и безопасный инструмент в системе Linux.

Нам нужно открыть на редактирование файл /etc/postfix/master.cf и добавить в конце следующие ниже строки:

Сохраним для потомков изначальный конфигурационный файл Dovecot:

После чего откроем файл /etc/dovecot/dovecot.conf на редактирование и заменим всё его содержимое указанным ниже кодом. Ящик «postmaster@example.com» следует заменить на желаемый:

MySQL будет сохранять в себе пароли доступа, поэтому мы сохраним копию первоначального /etc/dovecot/dovecot-sql.conf, а потом произведём настройку:

Содержимое исходного файла /etc/dovecot/dovecot-sql.conf полностью заменим на нижеуказанное, не забудем поменять пароль «mail_admin_password» на актуальный:

На этом настройка Dovecot завершена, следует перезагрузить его:

Проверим файл /var/log/mail.log на отсутствие ошибок:

И найдём примерно следующие строки:

Перед началом тестирования следует установить права и владельца на файл конфигурации Dovecot /etc/dovecot/dovecot.conf:

Проверим корректность работы POP3 сервера, для этого мы подключимся к POP3 серверу через терминал:

После ввода команды в консоли должно отобразиться примерно следующие:

Выйдем из режима терминала, пока он нам больше не нужен:

С Dovecot разобрались, теперь перейдём к настройке алиасов.

Установка Dovecot

Я уже давно для себя выбрал CentOS как основу для серверов. Поэтому все команды установки софта будут именно для этой операционной системы. Я крайне не советую ставить основные программы из исходников командами типа make, make install и т.д. Это приведет только к невозможности получения обновлений в удобной форме.

В процессе отладки я наступал на разные грабли, список которых выделил в отдельную страницу «размышления по ходу отладки». Не поленитесь, посмотрите, вдруг что-то пригодится.

yum install dovecot
yum install dovecot-mysql
chkconfig dovecot on

Вот и все, дальше надо настраивать конфиг.

Отправка писем из очереди

Всю почту отправляемую во внешний мир postfix ставит в очередь, для того чтоб письма из очереди доставлялись адресатам необходимо выполнить команду postfix flush. Добавим в crontab эту команду, так чтоб письма в очереди отправлялись каждую минуту

crontab -e
(выбираем редактор)

и добавляем следующее

* * * * * /usr/sbin/postfix flush

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

Всё почтовый сервер готов к использованию.

pass_filter = (&(objectClass=gosaMailAccount)(mail=%u))

на

pass_filter = (&(objectClass=gosaMailAccount)(mail=%n@*))

ВНИМАНИЕ!!! Данный вариант работает только если ваш сервер обслуживает один домен, на серверах где больше одного домена не тестировалось, скорей всего работать не будет так как на разных доменах могут быть одинаковые пользователи.

Установка нужных пакетов

Выполним следующую команду для установки Postfix, Dovecot, OpenSSL и MySQL:

В процессе установки появится несколько диалогов первоначальной настройки пакетов, вот основные шаги:

  • Во время установки сервера MySQL, если он не был установлен ранее, потребуется ввести пароль для пользователя root. Пароль следует выбрать надёжный;
  • Тип используемого Postfix сервера, — в одноимённом диалоге, — «Internet Site»;
  • В диалоге настройки Postfix следует определиться с почтовым именем. Имеется ввиду полное доменное имя сервера, в нашем примере это mysrv.example.com, его ещё называют FQDN (Fully Qualified Domain Name).

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

или, если недоступен первый вариант программы:

Итак мы установили все необходимые пакеты и готовы перейти к детальной настройке конфигурации.

Создание сертификатов для связи с LDAP

Для связи с LDAP сервером по защищённому соединению нам потребуются отдельные сертификаты.

Идём на наш LDAP сервер.
Создаём папку для сертификатов почтового сервера и заходим в неё

mkdir /etc/ssl/veles-ssl && cd /etc/ssl/veles-ssl

Создаём ключ для почтового сервера

certtool --generate-privkey > mail_server_ldap_key.pem

Создаём файл mail.info следующего содержания

country = US
state = North Carolina
locality = Winston-Salem
organization = Example Company
cn = mail.example.com
tls_www_client
encryption_key
signing_key

Первые пять значений меняйте на свои.

Создаём сертификат

certtool --generate-certificate --load-privkey mail_server_ldap_key.pem \
--load-ca-certificate /etc/ssl/certs/cacert.pem --load-ca-privkey /etc/ssl/private/cakey.pem \
--template mail.info --outfile mail_server_ldap_cert.pem

Копируем СА сертификат и переименовываем его

cp /etc/ssl/certs/cacert.pem . && mv  cacert.pem  mail_server_ldap_ca.pem

Теперь содержимое папки mail-ssl необходимо скопировать на почтовый сервер следующим образом
файлы mail_server_ldap_ca.pem и mail_server_ldap_cert.pem необходимо положить в папку /etc/ssl/certs на почтовом сервере
файл mail_server_ldap_key.pem необходимо положить в папку /etc/ssl/private на почтовом сервере.

Серверная почта на основе Postfix, Dovecot и MySQL для Debian

Postfix — очень мощный почтовый сервер, основанный на идеологии Open Source, его часто называют Postfix MTA — Postfix Mail Transfer Agent. В этом руководстве, собранном из разных источников и дополненных личными переживаниями, я расскажу как установить Postfix в связке с Dovecot (IMAP/POP3) и MySQL на сервер Apache под управлением OC Debian. Руководство было опробовано на Debian 5 Lenny и Debian 6 Squeeze.

Текст статьи достаточно объёмный, но выполнив все шаги, мы получим в своё распоряжение надёжный почтовый сервер с возможностью добавления почтовых доменов и ящиков прямо через интерфейс MySQL, а это многого стоит.

Аутентификация с помощью виртуальных пользователей

Теперь настроим проверку подлинности не с помощью системных учетных записей, а с помощью виртуальных. В данном примере это будут виртуальные пользователи только для аутентификации при отправке почты.

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

vi /etc/dovecot/conf.d/auth-system.conf.ext

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

passdb {
#  driver = pam
  driver = passwd-file
  args = scheme=SHA1 /etc/dovecot/passwd
  …
}

* в моем случае было закомментировано использование pam драйвера и добавлены опции driver и args. В данном примере они указывают на использование в качестве базы логинов и паролей — файл /etc/dovecot/passwd.

Создаем хэш для пароля первого пользователя:

doveadm pw -s sha1 | cut -d ‘}’ -f2

* система запросит пароль — вводим его дважды.

Полученный хэш имеет, примерно, такой вид:

tMoWsjKKoenYg7+SLRB8GXZQY38=

Копируем его и создаем файл:

vi /etc/dovecot/passwd

user@dmosk.ru:tMoWsjKKoenYg7+SLRB8GXZQY38=

* в данном примере user@dmosk.ru — имя виртуального пользователя; tMoWsjKKoenYg7+SLRB8GXZQY38= — хэш нашего пароля.

Задаем права на файл с базой логинов и паролей:

chown dovecot: /etc/dovecot/passwd

chmod 600 /etc/dovecot/passwd

Перезапускаем Dovecot:

systemctl restart dovecot

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

Перед тем, как мы нач­нем настрой­ку, убе­дим­ся, что для поч­то­во­го сер­ве­ра у нас откры­ты необ­хо­ди­мые пор­ты в бранд­мау­э­ре. В зави­си­мо­сти от исполь­зу­е­мой систе­мы управ­ле­ния 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.

Вывод

Хоть и конфиг Dovecot получился достаточно большой, в нем все предельно просто, а многие директивы оставлены просто на будущее. Достаточно подробная и внятная официальная документация упрощает процесс настройки, а также предлагает готовые примеры реализации функционала.

На этапе отладке включайте логи как можно более подробно, вплоть до дебагинга. Dovecot предоставляет на редкость информативные сообщения и, более того, в большинстве случаев сразу предлагает и решение проблемы.

Разбивать конфиг на части (в соответствующие файлы конфигурации в каталоге conf.d/) или сводить все в один dovecot.conf решать конечно же вам, но второй вариант лично для меня более удобен, информативен, прост в отладке.

Notes:

  1. Dovecot Logging
  2. Login processes
  3. Autocreate plugin (v2.0 and older)
  4. Mailbox settings

comments powered by HyperComments

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: