Настройка Postfix и Dovecot на Ubuntu
Базовая настройка Postfix и Dovecot
В статье будет рассмотрена базовая настройка Postfix и Dovecot с использованием системных учетных записей и хранением почтовых данных в их домашних каталогах.
Под «системными» имеются в виду не какие-либо сервисные учетные записи, а учетки обычных пользователей системы.
Это основной и при этом самый простой в настройке и обслуживании вариант развертывания функционала MTA (Postfix) и MAA (Dovecot).
При необходимости вы всегда сможете усложнить конфигурацию — развернуть виртуальных юзеров, организовать централизованное хранилище почтовых данных (а не использовать домашние каталоги) и пр.
Конфигурация программ, рассмотренная ниже, ориентирована больше на среду для тестирования, либо для «домашнего» использования. Если вам нужно что-то более серьезное, рекомендую обратиться к статье Настройка Postfix.
Найти больше информации о почтовых технологиях на UNIX-подобных системах вы можете в рубрике Unix Mail или в статье Настройка Postfix.
Вы также можете развернуть данную конфигурацию в контейнере Docker, у меня даже есть отдельный репозиторий для этого на GitHub, см. статью Postfix и Dovecot в контейнере DockerРазворачивать связку Postfix + Dovecot с системными пользователями я планирую на ОС Debian (дистрибутив debian-8.7.0-amd64-netinst.iso 1).
Базовая настройка
Для начала нужно создать хотя бы одного пользователя, который и будет получать/отправлять почту.
Создаем юзера командой:
useradd -m -d /home/bissquit -s /bin/false bissquit
useradd -m -d /home/bissquit -s /bin/false bissquit |
и сразу перенаправляем всю входящую почту root’a на него (это нужно для безопасности), добавив запись в /etc/aliases:
echo «root: bissquit» >> /etc/aliases
echo «root: bissquit» >> /etc/aliases |
Примечание: если решите отредактировать этот файл во время работы Postfix, не забудьте после этого выполнить команду newaliases, чтобы изменения вступили в силу.
На этом все. Более подробно базовую настройку системы я уже рассматривал ранее в статье Настройка Debian для Postfix.
Настройка DNS
К этому моменту уже должны быть созданы все основные записи у вашего DNS-провайдера. Как минимум вам необходимы:
- A-запись. Например запись mail.bissquit.ru, указывающая на ip-адрес почтового сервера;
- запись МХ. Для домена bissquit.ru, указывающая на запись mail.bissquit.ru.
А также второстепенные (но от этого не менее важные):
- PTR. Это обратная запись, которая ставит в соответствие ip-адресу какое-либо DNS-имя. Создать эту запись должен ваш интернет-провайдер, ведь он является владельцем публичных ip-адресов, которые вы используете;
Примечание: очень много серверов настроены таким образом, что проверяют наличие этой записи.
Сначала они смотрят имя, на которое указывает MX-запись, а потом сравнивают его с именем, которое возвращает PTR-запись и если эти имена отличаются (или PTR вообще отсутствует), то вся почта отклоняется как спам. В логах своего сервера вы увидите что-то подобное:
450 4.7.
1 Client host rejected: cannot find your reverse hostname
Такие жесткие настройки особенно любят устанавливать владельцы Postfix, указав в конфиге ограничения reject_unknown_reverse_client_hostname (для проверки просто существования PTR) или reject_unknown_client_hostname (а эта опция уже требует зеркального разрешения имен/адресов — name>address, address>name). На самом деле это очень жесткие ограничения и даже не все публичные сервисы, например Google, их требований придерживаются.
- SPF. На самом деле указывается внутри другой — TXT-записи — и помогает перечислить серверы, имеющие право отправлять почту от имени вашего домена.
Примечание: Если эта запись существует, то любые принимающие почтовые серверы будут на 100% уверены в том, что вы являетесь подлинным почтовым сервером и смогут отклонять спамеров, пытающихся представиться вами. Например для домена bissquit.ru spf-запись может иметь вид «v=spf1 mx a ip4:1.2.3.4 ~all», где 1.2.3.4 — адрес сервера. Есть много сервисов 2, помогающих сгенерировать эту запись.
Ну а теперь приступаем к развертыванию Postfix.
Конфигурация Postfix
Первым делом необходимо вычистить из системы MTA, используемый по умолчанию:
apt-get remove exim4 exim4-base exim4-config exim4-daemon-light
И удалить его конфигурацию:
Ну а далее ставим Postfix:
Когда вылезет окно с типом настройки, выбираем конфигурацию Интернет-сайт:
При выборе почтового имени предлагаю все оставить как есть (по умолчанию будет имя ОС), потом настройки мы все равно будем менять:
В общем ничего сложного, все это я подробно рассматривал ранее в статье Установка Postfix на Debian.
Безопасность
Если установка Postfix прошла по стандартному сценарию, то как минимум дефолтные сертификаты должны присутствовать. В том или ином виде конфиг будет содержать параметры:
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache smtpd_tls_security_level = may
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pemsmtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.keysmtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scachesmtp_tls_session_cache_database = btree:${data_directory}/smtp_scachesmtpd_tls_security_level = may |
Где первые два параметра — пути к файлу сертификата и закрытому ключу, следующие два — пути к кэшу. Менять эти значения по умолчанию не нужно.
Примечание: В этом куске конфига вы можете встретить параметр smtpd_use_tls=yes. Его можно безболезненно убрать, поскольку он устарел и предназначен для совместимости устаревших версий Postfix. Вместо него используется smtpd_tls_security_level, значение которого имеет приоритет.
Следующую секцию параметров, относящуюся к SASL, вам нужно добавить вручную:
smtpd_sasl_auth_enable = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yessmtpd_sasl_type = dovecotsmtpd_sasl_path = private/auth |
Ключ smtpd_sasl_auth_enable по умолчанию имеет значение no, то есть аутентификация не требуется. Именно поэтому нужно задать yes в явном виде. По умолчанию Postfix использует Cyrus SASL и чтобы он обратил свой взор в сторону Dovecot, нужно изменить параметр smtpd_sasl_type и указать путь до сокета в параметре smtpd_sasl_path.
Примечание: полный путь до сокета будет /var/spool/postfix/private/auth, просто параметр smtpd_sasl_path является составным и по умолчанию включает в себя путь до очереди — queue_directory = /var/spool/postfix .
Советую к прочтению официальные мануалы 3 4.
Ну и последний момент: проследите, чтобы в конфиге был определен параметр smtpd_relay_restrictions (иначе почта отправляться не будет). По умолчанию для только что установленного Postfix он будет иметь значения permit_mynetworks permit_sasl_authenticated defer_unauth_destination.
С настройками TLS и SASL разобрались, двигаемся дальше.
Хранилище
Postfix должен куда-то сохранять полученные/отправленные сообщения, а потому необходимо ему это объяснить, установив параметры:
home_mailbox = Maildir/ mailbox_command =
Первая запись означает, что информация будет сохраняться в папке Maildir домашнего каталога пользователя. Пример: если в системе есть пользователь bissquit, то все его почтовые данные будут храниться в /home/bissquit/Maildir/.
Примечание: если вы не установите параметр home_mailbox, то будет использоваться каталог, определенный по умолчанию в параметре mail_spool_directory, а это /var/mail/. Кроме того, данные будут храниться в одном файле, названным по имени пользователя.
В параметре mailbox_command важно выставлять слэш в конце строки, поскольку этот символ заставляет Postfix хранить данные в формате Maildir, то есть каждое письмо в отдельном файле.
Установка и настройка почтового сервера PostfixAdmin на Ubuntu 16.04
В этой статье мы покажем вам, как установить и настроить почтовый сервер с Postfix, Dovecot, Spamassassin, SQLite и PostfixAdmin на Ан Ubuntu 16.04 VPS с Nginx и PHP 7.0. Это руководство должно работать так же хорошо и на других системах Linux VPS, но была испытана и написана для Ubuntu 16.04 VPS.
Обновите систему и установите необходимые пакеты
sudo apt-get update && sudo apt-get -y upgradesudo apt-get -y install wget nano dbconfig-common sqlite3
Создайте системного пользователя
По соображениям безопасности, мы создадим нового пользователя системы, который будет владельцем всех почтовых ящиков.
sudo useradd -r -u 150 -g mail -d /var/vmail -s /sbin/nologin -c «Virtual Mail User» vmailsudo mkdir -p /var/vmailsudo chmod -R 770 /var/vmailsudo chown -R vmail:mail /var/vmail
Установка PHP 7.0 и PHP всех необходимых модулей
Если вы не установили PHP на вашем сервере, вы можете установить последнюю стабильную версию PHP 7.0 и все необходимые модули, с помощью следующей команды:
sudo apt-get -y install php-fpm php-cli php7.0-mbstring php7.0-imap php7.0-sqlite3
Установка и настройка Nginx
Если у вас нет веб-сервера, установленного на вашем компьютере, установите Nginx из официальных репозиториев Ubuntu:
sudo apt-get -y install nginx
Создание нового блока сервера Nginx со следующим содержанием:
sudo nano /etc/nginx/sites-available/postfixadmin.your_domain.ruserver { listen 80; server_name postfixadmin.your_domain.ru; return 301 https://$server_name$request_uri;} server { listen 443 ssl; server_name postfixadmin.your_domain.ru; root /var/www/postfixadmin-3.0; index index.php; charset utf-8; ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem; ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key; ssl_protocols TLSv1.2; ssl_ciphers «EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4»; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_ecdh_curve secp521r1; location / { try_files $uri $uri/ index.php; } location ~* .php$ { fastcgi_split_path_info (.+.php)(/.+)$; include fastcgi_params; fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_buffer_size 16k; fastcgi_buffers 4 16k; }}
Активируйте блок сервера, создав символическую ссылку:
sudo ln -s /etc/nginx/sites-available/postfixadmin.your_domain.ru /etc/nginx/sites-enabled/postfixadmin.your_domain.ru
Проверьте конфигурацию Nginx и перезапустите Nginx:
sudo nginx -tsudo service nginx restart
PostfixAdmin
PostfixAdmin является PHP на основе веб – интерфейса, который позволяет управлять базой данных, и использует postfix для виртуальных доменов и пользователей.
Последняя версия PostfixAdmin, 3 -й версии, поддерживает MySQL, PostgreSQL и базу данных SQLite. В этом руководстве мы будем использовать последнюю.
Скачайте архив PostfixAdmin из SourceForge и распакуйте его в каталог /var/www/:
wget -q -O — «http://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-3.0/postfixadmin-3.0.tar.gz» | sudo tar -xzf — -C /var/www
Откройте файл конфигурации почты и измените следующие значения:
sudo nano /var/www/postfixadmin-3.0/config.inc.php$CONF['configured'] = true;$CONF['database_type'] = 'sqlite';$CONF['database_name'] = '/var/vmail/postfixadmin.db';// $CONF['database_host'] = 'localhost';// $CONF['database_user'] = 'postfix';// $CONF['database_password'] = 'postfixadmin';// $CONF['database_name'] = 'postfix'; $CONF['domain_path'] = 'NO';$CONF['domain_in_mailbox'] = 'YES';sudo chown -R www-data: /var/www/postfixadmin-3.0
Создание базы данных SQLite:
sudo touch /var/vmail/postfixadmin.dbsudo chown vmail:mail /var/vmail/postfixadmin.dbsudo usermod -a -G mail www-data
Для заполнения базы данных перейдите к https://postfixadmin.your_domain.ru/setup.php и вы должны увидеть что – то вроде этого:
Testing database connection – OK – sqlite://:xxxxx@//var/vmail/postfixadmin.db
Создайте нового пользователя с правами администратора:
bash /var/www/postfixadmin-3.0/scripts/postfixadmin-cli admin add admin@your_domain.ru —password strong_password —password2 strong_password —superadmin 1 —active 1
Установите и настройте Postfix
Установите postfix с помощью команды ниже:
sudo apt-get install postfix
Создайте следующие файлы:
sudo nano /etc/postfix/sqlite_virtual_alias_maps.cfdbpath = /var/vmail/postfixadmin.dbquery = SELECT goto FROM alias WHERE address='%s' AND active = '1'sudo nano /etc/postfix/sqlite_virtual_alias_domain_maps.cfdbpath = /var/vmail/postfixadmin.dbquery = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = printf('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'sudo nano /etc/postfix/sqlite_virtual_alias_domain_catchall_maps.cfdbpath = /var/vmail/postfixadmin.dbquery = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = printf('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'sudo nano /etc/postfix/sqlite_virtual_domains_maps.cfdbpath = /var/vmail/postfixadmin.dbquery = SELECT domain FROM domain WHERE domain='%s' AND active = '1'sudo nano /etc/postfix/sqlite_virtual_mailbox_maps.cfdbpath = /var/vmail/postfixadmin.dbquery = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'sudo nano /etc/postfix/sqlite_virtual_alias_domain_mailbox_maps.cfdbpath = /var/vmail/postfixadmin.dbquery = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = printf('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1'
Отредактируйте файл main.cf:
postconf -e «myhostname = $(hostname -A)» postconf -e «virtual_mailbox_domains = sqlite:/etc/postfix/sqlite_virtual_domains_maps.cf»postconf -e «virtual_alias_maps = sqlite:/etc/postfix/sqlite_virtual_alias_maps.cf, sqlite:/etc/postfix/sqlite_virtual_alias_domain_maps.cf, sqlite:/etc/postfix/sqlite_virtual_alias_domain_catchall_maps.cf»postconf -e «virtual_mailbox_maps = sqlite:/etc/postfix/sqlite_virtual_mailbox_maps.cf, sqlite:/etc/postfix/sqlite_virtual_alias_domain_mailbox_maps.cf» postconf -e «smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem»postconf -e «smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key»postconf -e «smtpd_use_tls = yes»postconf -e «smtpd_tls_auth_only = yes» postconf -e «smtpd_sasl_type = dovecot»postconf -e «smtpd_sasl_path = private/auth»postconf -e «smtpd_sasl_auth_enable = yes»postconf -e «smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination» postconf -e «mydestination = localhost»postconf -e «mynetworks = 127.0.0.0/8″postconf -e «inet_protocols = ipv4» postconf -e «virtual_transport = lmtp:unix:private/dovecot-lmtp»
Откройте файл master.cf, найти разделы submission inet n и smtps inet n и отредактируйте следующим образом:
sudo nano /etc/postfix/master.cfsmtp inet n — y — — smtpd#smtp inet n — y — 1 postscreen#smtpd pass — — y — — smtpd#dnsblog unix — — y — 0 dnsblog#tlsproxy unix — — y — 0 tlsproxysubmission inet n — y — — smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes# -o smtpd_reject_unlisted_recipient=no -o smtpd_client_restrictions=permit_sasl_authenticated,reject# -o smtpd_helo_restrictions=$mua_helo_restrictions# -o smtpd_sender_restrictions=$mua_sender_restrictions# -o smtpd_recipient_restrictions=# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATINGsmtps inet n — y — — smtpd -o syslog_name=postfix/smtps# -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes# -o smtpd_reject_unlisted_recipient=no -o smtpd_client_restrictions=permit_sasl_authenticated,reject# -o smtpd_helo_restrictions=$mua_helo_restrictions# -o smtpd_sender_restrictions=$mua_sender_restrictions# -o smtpd_recipient_restrictions=# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING
Включите и перезапустите службу postfix
systemctl enable postfixsystemctl restart postfix
Установка и настройка Dovecot
Установить Dovecot с поддержкой SQLite, используя команду ниже:
sudo apt-get install dovecot-imapd dovecot-lmtpd dovecot-pop3d dovecot-sqlite
Откройте файл /etc/dovecot/conf.d/10-mail.conf и измените следующие значения:
mail_location = maildir:/var/vmail/%d/%nmail_privileged_group = mailmail_uid = vmailmail_gid = mailfirst_valid_uid = 150last_valid_uid = 150
Откройте файл /etc/dovecot/conf.d/10-auth.conf и измените следующие значения:
auth_mechanisms = plain login#!include auth-system.conf.ext!include auth-sql.conf.ext
Создайте новый файл dovecot-sql.conf.ext:
sudo nano /etc/dovecot/dovecot-sql.conf.extdriver = sqliteconnect = /var/vmail/postfixadmin.dbdefault_pass_scheme = MD5-CRYPTpassword_query = SELECT username as user, password, '/var/vmail/%d/%n' as userdb_home, 'maildir:/var/vmail/%d/%n' as userdb_mail, 150 as userdb_uid, 8 as userdb_gid FROM mailbox WHERE username = '%u' AND active = '1'user_query = SELECT '/var/vmail/%d/%n' as home, 'maildir:/var/vmail/%d/%n' as mail, 150 AS uid, 8 AS gid, printf('dirsize:storage=', quota) AS quota FROM mailbox WHERE username = '%u' AND active = '1'
В файле /etc/dovecot/conf.d/10-ssl.conf включите поддержку SSL:
ssl = yes
Откройте файл /etc/dovecot/conf.d/15-lda.conf и установите в параметре postmaster_address адрес электронной почты.
postmaster_address = postmaster@vps.your_domain.ru
Откройте файл /etc/dovecot/conf.d/10-master.conf, найдите раздел службы LMTP и изменить его на:
service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { mode = 0600 user = postfix group = postfix }}
Найдите раздел службы аутентификации и изменить его на:
service auth { unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix } unix_listener auth-userdb { mode = 0600 user = vmail #group = vmail } user = dovecot}
Измените раздел службы auth-worker к следующим функциям:
service auth-worker { user = vmail}
Установите разрешения:
chown -R vmail:dovecot /etc/dovecotchmod -R o-rwx /etc/dovecot
Включите и перезапустите службу dovecot
systemctl enable dovecot systemctl restart dovecot
SpamAssassin
SpamAssassin является инструментом с открытым кодом написанный на Perl, который помогает отфильтровать нежелательную почту. Если вы хотите включить и настроить SpamAssassin пожалуйста, продолжайте со следующими шагами.
Чтобы установить SpamAssassin, выполните следующую команду:
sudo apt-get install spamassassinsudo adduser spamd —disabled-login
Откройте файл /etc/default/spamassassin и внесите следующие изменения:
ENABLED=1OPTIONS=»—create-prefs —max-children 5 -d 127.0.0.1 —username spamd —helper-home-dir /home/spamd/ -s /home/spamd/spamd.log»PIDFILE=»/home/spamd/spamd.pid»CRON=1
Для интеграции SpamAssassin с Postfix, добавьте следующую строку в конце файла /etc/postfix/master.cf:
smtp inet n — — — — smtpd -o content_filter=spamassassin spamassassin unix — n n — — pipe user=nobody argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
Включите и перезапустите службу Spamassassin
systemctl enable spamassassinsystemctl restart spamassassinsystemctl restart postfix
Если все настроено правильно, то вы должны в состоянии войти в свой бэкэнд PostfixAdmin, перейдя по ссылке https://postfixadmin.your_domain.ru/и создать свой первый виртуальный домен и почтовый ящик.
, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Debian настройка почтового сервера (Postfix, Dovecot)
В Debian настройка почтового сервера чаще всего предполагает использование связки из Postfix — SMTP сервера, отвечающего за передачу писем и Dovecot, обеспечивающего их хранение.
Альтернативными Postfix вариантами являются Sendmail и Exim, но применяются они значительно реже ввиду меньшего удобства эксплуатации и меньших возможностей (в случае с Sendmail) и большей сложности настройки (в случае с Exim).
В распределенных системах Dovecot работает с сервером баз данных (чаще всего — MySQL) храня данные о ящиках и доменах в базе, письма хранятся на диске.
По умолчанию же Dovecot используем системных пользователей и хранит письма в их домашних каталогах. Поскольку рассматривать в рамках статьи довольно сложную конфигурацию почтового сервера, хранящего информацию в базе, будет разобрана настройка связки Postfix + Dovecot для случая когда последний использует системных пользователей.
Почтовый сервер будет работать по защищенному соединению, SSL сертификат и ключ сгенерируем самостоятельно.
Когда ключ и сертификат сгенерированы — начинаем настройку. Используется машина, созданная на основе дистрибутива Debian 8. Аутентификаиця пользователей будет осуществляться посредством SSL + TLS.
Настройка почтового сервера Debian Postfix + Dovecot
Убедимся в том, что для сервера используется статический IP-адрес (установлен параметр static)
mcedit /etc/network/interfaces
Если в настройки сети вносились изменения — перезагружаем серввер
reboot
Устанавливаем Postfix из репозитория
apt-get install postfix
В первом окне выбираем опцию Internet site
При запросе System mail name вводим имя домена
example.com
Те же параметры в любой момент можно изменить в конфиге пакета, также можно запустить реконфигуратор
dpkg-reconfigure postfix
Открываем при помощи текстового редактора основной конфигурационный файл postfix
mcedit /etc/postfix/main.cf
home_mailbox = Maildir/
mailbox_command =
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_enable = yes
myorigin=$mydomain
В конфиге указываем директорию, в которой будут храниться письма пользователя и задаем параметры аутентификации, которые будут применяться при работе почтовой системы.
SASL (Simple Authentication and Security Layer)
Если в файле присутствовала строка mailbox_command с определенным значением — комментируем ее.
Конфигурационный файл postfix можно не редактировать вручную, вместо этого можно вводить в консоль команды вида postconf -e «команда»
Продолжим конфигурацию именно этим способом. После ее завершения можно просмотреть конфиг чтобы убедиться в том, что нужная информация в него действительно записалась .
Будем использовать tls
postconf -e «smtpd_tls_auth_only=no»
postconf -e «smtpd_use_tls=yes»
postconf -e «smtp_use_tls=yes»
postconf -e «smtp_tls_note_starttls_offer=yes»
Задаем пути к ключу и сертификату SSL
postconf -e «smtp_tls_key_file=/etc/ssl/private/example.key»
postconf -e «smtp_tls_cert_file=/etc/ssl/private/example.crt»
postconf -e «smtp_tls_CAfile=/etc/ssl/certs/example.pem»
postconf -e «smtp_tls_loglevel=1»
postconf -e «smtp_tls_received_header=yes»
postconf -e «smtp_tls_session_timeout=3600s»
Ниже приведен минимальный, но полностью рабочий конфигурационный файл /etc/postfix/main.cf
mydomain = example.com
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no
readme_directory = no
smtpd_tls_cert_file=/etc/dovecot/dovecot.crt
smtpd_tls_key_file=/etc/dovecot/private/dovecot.
key
smtpd_use_tls = yes
smtp_use_tls = yes
smtpd_tls_auth_only = no
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_tls_note_starttls_offer = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_tls_received_header = yes
smtpd_tls_loglevel = 1
tls_random_source = dev:/dev/urandom
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = example.
com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = $mydomain
mydestination = example.com, localhost
mynetworks = 127.0.0.
0/8
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = ipv4
home_mailbox = Maildir/
mailbox_command =
Перезапускаем сервис
/etc/init.d/postfix restart
Устанавливаем dovecot, письма будем забирать по imapapt-get install dovecot-common dovecot-imapd
Добавляем в конфиг пути к файлам с ключом и сертификатом, а также указание на необходимость использования SSL
Установка Postfix Ubuntu с Dovecot
Postfix — это один из самых популярных почтовых серверов, который используется для отправки, приема и пересылки почты в различных системах. Очень часто Postfix используют в качестве почтового сервера по умолчанию для веб-сайтов, поскольку он поддерживает все необходимые функции и несложен в настройке, в отличие от SendMail.
В этой статье мы рассмотрим, как выполняется установка Postfix Ubuntu 16.04 с аутентификацией через Dovecot и базу данных. Хотя статья ориентирована именно на Ubuntu, но, вся информация может быть применена и для других дистрибутивов.
Что будет сделано?
Мы установим почтовый сервер Postfix и все необходимые компоненты для работы аутентификации пользователей. Учетные записи пользователей мы будем хранить в базе данных MySQL. Аутентификация на сервере для отправки почты будет выполняться по протоколу SMTP, за это отвечает Postfix.
Также, пользователи смогут получить свои письма по протоколам IMAP или POP3 с помощью Dovecot, которая тоже будет использовать базу данных. А теперь давайте перейдем к самой настройке почтового сервера.
Настройка DNS зоны
Вы не сможете заставить все это работать на локальной машине, без привязанного к ней домена. И на сервере со статическим IP нужно сначала правильно настроить доменную зону. Это очень важно.
Вам нужно чтобы A и MX записи вашего домена указывали на IP адрес вашего сервера. Обычно это можно настроить в панели управления доменом. На обновление доменной зоны может уйти 1-2 дня.
Дальше вам нужно правильно настроить доменное на вашем VPS. FQDN (Fully Qualified Domain Name) должно состоять из имени хоста и зарегистрированного доменного имени. Сначала установим имя хоста с помощью hostnamectl. Например:
sudo hostnamectl set-hostname vps
Затем нужно добавить строчку с именем домена FQDN в файл /etc/hosts. Здесь нужно указать ваш статический адрес, имя хоста и зарегистрированный домен:
sudo vi /etc/hosts
194.67.215.125 vps.losst.ru vps
Теперь у вас есть FQDN, который будет использоваться почтовым сервером. Переходим к установке ПО.
Установка Postfix и других программ
Перед тем как пойти дальше, нужно установить все необходимое программное обеспечение. Сначала обновите репозитории до самой новой версии:
sudo apt update
Затем выполните команду для установки программ:
sudo apt install postfix postfix-mysql dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-mysql mariadb-client mariadb-server
Установка займет некоторое время в зависимости от скорости вашего интернета. Во время установки вам предстоит ответить на несколько вопросов:
Здесь нажмите Ок, затем на следующем шаге выберите Интернет сайт:Дальше вам нужно ввести ваше доменное имя, например, losst.ru:
После завершения все сервисы запустятся автоматически, а мы можем перейти к дальнейшей настройке.
Настройка баз данных
Я не буду подробно описывать как настроить базу данных MySQL. Об этом вы можете прочитать в отдельной статье. Мы подготовим только нашу базу для Dovecot, создадим нужных пользователей и таблицы.
Подключитесь с помощью клиента к серверу баз данных:
sudo mysql -u root
Создадим новую базу данных:
> CREATE DATABASE EmailServer_db;
> USE EmailServer_db;
Затем создадим нового пользователя, который будет использоваться системой:
> CREATE USER 'dba'@'localhost' IDENTIFIED BY 'пароль';> GRANT ALL PRIVILEGES ON * .* TO 'dba'@'localhost';
> FLUSH PRIVILEGES;
Так мы даем пользователю все необходимые полномочия для доступа к базе данных dba. Создадим таблицу для настроек Postfix:
> CREATE TABLE `Domains_tbl` ( `DomainId` INT NOT NULL AUTO_INCREMENT , `DomainName` VARCHAR(50) NOT NULL , PRIMARY KEY (`DomainId`)) ENGINE = InnoDB;
Дальше нам нужно создать таблицу, в которой будут храниться данные аутентификации пользователей нашего почтового сервера:
> CREATE TABLE `Users_tbl` (`UserId` INT NOT NULL AUTO_INCREMENT,`DomainId` INT NOT NULL,`password` VARCHAR(100) NOT NULL,`Email` VARCHAR(100) NOT NULL,PRIMARY KEY (`UserId`),UNIQUE KEY `Email` (`Email`),FOREIGN KEY (DomainId) REFERENCES Domains_tbl(DomainId) ON DELETE CASCADE
) ENGINE = InnoDB;
И таблицу, в которой будут находиться псевдонимы, дополнительные почтовые ящики для пользователей:
> CREATE TABLE `Alias_tbl` (`AliasId` INT NOT NULL AUTO_INCREMENT,`DomainId` INT NOT NULL,`Source` varchar(100) NOT NULL,`Destination` varchar(100) NOT NULL,PRIMARY KEY (`AliasId`),FOREIGN KEY (DomainId) REFERENCES Domains_tbl(DomainId) ON DELETE CASCADE
) ENGINE = InnoDB;
Сейчас у вас должна получиться такая структура базы данных:
Все действия можно выполнить в PhpMyAdmin, возможно, вам будет так проще.
Создание пользователей
Дальше, перейдем к созданию пользователей, который смогут получать и отправлять письма. Создадим пользователя losst@losst.ru и admin@losst.ru. Для этого, нужно добавить две записи в таблицу Users_tbl, а также по записи в Domains_tbl и Aliases_tbl:
> INSERT INTO Domains_tbl (DomainName) VALUES ('losst.ru');> INSERT INTO Users_tbl (DomainId, password, Email) VALUES (1, ENCRYPT('пароль1', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), 'losst@losst.
ru');> INSERT INTO Users_tbl (DomainId, password, Email) VALUES (1, ENCRYPT('пароль2', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), 'admin@losst.ru');
> INSERT INTO Alias_tbl (DomainId, Source, Destination) VALUES (1, 'info@losst.
ru', 'losst@losst.ru');
Пользователи готовы, дальше рассмотрим как заставить все это работать в Dovecot и Postfix. У нас есть два пользователя, которые относятся к одному домену и один из них имеет один псевдоним.
Настройка Postfix
Все настройки почтового сервера Postfix находятся в каталоге /etc/postfix. Здесь они могут быть разделены на несколько файлов. Основные из них два файла:
- /etc/postfix/main.cf — основные настройки Postfix;
- /etc/postfix/master.cf — настройки сервиса Postfix;
Теперь рассмотрим как выполняется настройка postfix ubuntu. Имя хоста устанавливается переменными myhostname и mydestination в файле main.cf:
sudo vi /etc/postfix/main.cf
myhostname = vps
mydestination = $myhostname losst.ru vps.losst.ru localhost localhost.localdomain
Вам нужно найти и добавить такие строки в main.cf для работы с dovecot и smtp. Все строки, которые совпадают с этими из оригинального конфигурационного файла нужно закомментировать:
append_dot_mydomain = nobiff = noconfig_directory = /etc/postfixmessage_size_limit = 4194304readme_directory = nosmtp_tls_session_cache_database = btree:${data_directory}/smtp_scachesmtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)smtpd_tls_cert_file = /etc/pki/dovecot/certs/dovecot.pemsmtpd_tls_key_file = /etc/pki/dovecot/private/dovecot.pemsmtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scachesmtpd_use_tls = yesvirtual_transport = dovecotsmtpd_sasl_type = dovecotsmtpd_sasl_path = private/auth
Дальше добавим наши файлы с настройками для работы с ранее созданными таблицами в базе данных. По отдельному файлу на таблицу:
virtual_mailbox_domains = mysql:/etc/postfix/mariadb-vdomains.cfvirtual_mailbox_maps = mysql:/etc/postfix/mariadb-vusers.cf
virtual_alias_maps = mysql:/etc/postfix/mariadb-valias.cf
Вы можете выбирать и другие имена файлов, но старайтесь называть их так, чтобы потом могли понять о чем идет речь. Закройте этот файл и перейдем к созданию файлов настройки таблиц, вот они:
sudo vi /etc/postfix/mariadb-vdomains.cf
user = dbapassword = парольhosts = 127.0.0.1dbname = EmailServer_db
query = SELECT 1 FROM Domains_tbl WHERE DomainName='%s'
sudo vi /etc/postfix/mariadb-vusers.cf
user = dbapassword = парольhosts = 127.0.0.1dbname = EmailServer_db
query = SELECT 1 FROM Users_tbl WHERE Email='%s'
sudo vi /etc/postfix/mariadb-valias.cf
user = dbapassword = парольhosts = 127.0.0.1dbname = EmailServer_db
query = SELECT Destination FROM Alias_tbl WHERE Source='%s'
Синтаксис каждого из файлов предельно простой. Мы указываем пользователя базы данных, его пароль, хост и имя базы. Последний параметр — запрос, которым postfix может получить простой список нужных ему данных — доменов, пользователей для домена, алиасов для пользователя.
Дальше установим правильные права на файлы:
sudo chmod 640 /etc/postfix/mariadb-vdomains.cf$ sudo chmod 640 /etc/postfix/mariadb-vusers.cf
$ sudo chmod 640 /etc/postfix/mariadb-valias.cf
sudo chown root:postfix /etc/postfix/mariadb-vdomains.cf$ sudo chown root:postfix /etc/postfix/mariadb-vusers.cf
$ sudo chown root:postfix /etc/postfix/mariadb-valias.cf
Мы сделали их доступными только для пользователя и группы, а также сменили группу на postfix. Дальше нужно изменить конфигурацию master.cf:
submission inet n — n — — smtpd-o syslog_name=postfix/submission-o smtpd_tls_security_level=encrypt-o smtpd_sasl_auth_enable=yes-o smtpd_reject_unlisted_recipient=no-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject-o milter_macro_daemon_name=ORIGINATINGpickup unix n — n 60 1 pickupcleanup unix n — n — 0 cleanupqmgr unix n — n 300 1 qmgrtlsmgr unix — — n 1000? 1 tlsmgrrewrite unix — — n — — trivial-rewritebounce unix — — n — 0 bouncedefer unix — — n — 0 bouncetrace unix — — n — 0 bounceverify unix — — n — 1 verifyflush unix n — n 1000? 0 flushproxymap unix — — n — — proxymapproxywrite unix — — n — 1 proxymapsmtp unix — — n — — smtprelay unix — — n — — smtpshowq unix n — n — — showqerror unix — — n — — errorretry unix — — n — — errordiscard unix — — n — — discardlocal unix — n n — — local#virtual unix — n n — — virtuallmtp unix — — n — — lmtpanvil unix — — n — 1 anvilscache unix — — n — 1 scacheНастройка Postfix почти завершена и вам осталось проверить ее корректность:
sudo postfix check
Если все прошло хорошо, можем идти дальше, если же нет — проверяйте настройки, возможно, где-то, что-то упустили. После этого откройте тот же файл и добавьте строчку:
dovecot unix — n n — — pipe
flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}
Если это сделать раньше, то вы получите ошибку bad field count.
sudo systemctl restart postfix
Еще нам нужно проверить имеет ли Postfix доступ к созданным базам данных. Для этого будем использовать команду postmap:
sudo postmap -q losst.ru mysql:/etc/postfix/mariadb-vdomains.cf$ sudo postmap -q test.ru mysql:/etc/postfix/mariadb-vdomains.cf$ sudo postmap -q losst@losst.ru mysql:/etc/postfix/mariadb-vusers.
cf$ sudo postmap -q admin@losst.ru mysql:/etc/postfix/mariadb-vusers.cf$ sudo postmap -q none@losst.ru mysql:/etc/postfix/mariadb-vusers.cf
$ sudo postmap -q info@losst.
ru mysql:/etc/postfix/mariadb-valias.cf
Необязательно использовать правильных пользователей. Мы просто проверяем может ли программа работать с базой данных. Если вы получаете ошибку, проверьте пользователя и пароль к базе данных.
Настройка Dovecot
Установка Postfix Dovecot в связке используется чаще всего для веб-сайтов. Dovecot — это IMAP/POP3 сервер, который позволяет пользователям работать с почтой через такие клиенты, как Thunderbird. Для начала нам нужно создать группу и пользователя для обработки электронных адресов, поскольку наши ящики не привязаны к системе:
sudo groupadd -g 5000 vmail
$ sudo useradd -g vmail -u 5000 vmail -d /home/vmail -m
Настройки Dovecot распределены по нескольким файлам. Сначала приведите файл /etc/dovecot/dovecot.conf к такому виду:
sudo vi /etc/dovecot/dovecot.conf
!include_try /usr/share/dovecot/protocols.d/*.protocolprotocols = imap pop3 lmtp!include conf.d/*.conf
!include_try local.conf
Затем разрешим аутентификацию пользователей через базу данных MySQL в файле /etc/dovecot/conf.d/10-auth.conf:sudo vi /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = yesauth_mechanisms = plain login
!include auth-sql.conf.ext
В следующем файле укажем параметры доступа к базе данных:
sudo vi /etc/dovecot/conf.d/auth-sql.conf.ext
passdb {driver = sqlargs = /etc/dovecot/dovecot-sql.conf.ext}userdb {driver = staticargs = uid=vmail gid=vmail home=/home/vmail/%d/%n/Maildir
}
Мы будем сохранять почту в папке /home/vmail/домен/имя/Maildir. Вам нужно создать папку для домена, если она не существует:
mkdir /home/vmail/losst.ru
Дальше, скажем программе, что для каждого пользователя нужно создавать отдельные почтовые ящики:
sudo vi /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:/home/vmail/%d/%n/Maildirnamespace inbox {inbox = yes}mail_privileged_group = mail
mbox_write_locks = fcntl
И наконец, приведите базовые настройки в 10-master.conf к такому виду:
sudo vi /etc/dovecot/conf.d/10-master.conf
service imap-login {inet_listener imap {port = 143}inet_listener imaps {}}service pop3-login {inet_listener pop3 {port = 110}inet_listener pop3s {}}service lmtp {unix_listener /var/spool/postfix/private/dovecot-lmtp {mode = 0600user = postfixgroup = postfix}}service auth {unix_listener /var/spool/postfix/private/auth {mode = 0666user = postfixgroup = postfix}unix_listener auth-userdb {mode = 0600user = vmail}user = dovecot}service auth-worker {user = vmail}service dict {unix_listener dict {}
}
Для шифрования будем использовать самоподписанный сертификат:
Установка почтового сервера Postfix на Ubuntu в связке Postfix + Dovecot + MySQL
В данной статье продемонстрирована базовая настройка связки Postfix + Dovecot + MySQL с поддержкой безопасных соединений.Статья написана с учетом того, что вы работаете с правами суперпользователя (root).
Большую часть пакетов в процессе настройки мы будем устанавливать с помощью Aptitude с загрузкой из сети. Для начала, нам нужно обновить базу данных пакетов:
# apt-get update
1. Установка MySQL-сервера и средств администрирования (phpMyAdmin)
Поскольку управлять доменами и почтовыми ящиками удобнее с помощью Postfix Admin, требуется поставить Web-сервер Apache и PHP. Плюс — работать с базами данных MySQL удобнее с использованием phpMyAdmin. Соответственно, ставим необходимые пакеты:
# apt-get install apache2 php5 mysql-server
# apt-get install phpmyadmin
В итоге, будут установлены требуемые пакеты с учетом зависимостей.
Лучше соблюдать приведенную последовательность команд, поскольку в некоторых версиях Linux при одновременной установке apache2 и phpmyadmin, последний — не регистрировался в хосте по-умолчанию.
2. Установка PostfixAdmin
В используемом мной дистрибутиве в списке стандартных пакетов Aptitude отсутствует PostfixAdmin, поэтому качаем его с сайта производителя и устанавливаем вручную. На момент написания статьи последняя версия 2.3.
Устанавливаем скачанный пакет:
# dpkg -i postfixadmin-2.3.2_all.deb
Если установщик выдаст ошибку зависимостей, т.е. не хватает пакетов, нужно просто дать еще одну команду:
# apt-get -f install
В результате будут установлены все зависимые пакеты, включая и Postfixadmin. В процессе настройки надо отметить apache2 для запуска Postfixadmin.В ходе настройки базы данных необходимо задать пароль администратора MySQL, который был задан на первом этапе (см.п.1), а потом задать пароль для пользователя postfixadmin. Для примера я использовал 123456.
3. Настройка PostfixAdmin
На данном этапе наша задача настроить подключение PostfixAdmin к базе данных, зарегистрировать домен и несколько почтовых ящиков для нового домена.
Проверяем создала ли конфигурационная утилита базу данных и пользователя для нашего PostfixAdmin. Для этого заходим через phpMyAdmin на сервер MySQL. При установке по-умолчанию phpMyAdmin работает по адресу http://ВашХост/phpmyadmin. В списке баз данных должна быть БД postfixadmin.
Не пугайтесь, что она пустая. Структура таблиц будет создана позже во время настройки подключения к БД самого PostfixAdmin. Так же в списке пользователей должен быть пользователь с идентификатором postfixadmin.
Если этого нет, то необходимо создать БД и пользователя с максимальными правами доступа к этой БД.
К сожалению, конфигурационная утилита установки пакета не изменяет параметров файла config.inc.php, даже если с ее помощью создается БД. Конфигурационный файл PostfixAdmin находится в каталоге /etc/postfixadmin/config.inc.php. Изменяем параметры в данном файле в соответствии с приведенным ниже кодом:
$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = '123456';
$CONF['database_name'] = 'postfixadmin';
$CONF['database_prefix'] = '';
Изменим алгоритм шифрования пароля заданный по-умолчанию в PostfixAdmin:
$CONF['encrypt'] = 'md5';
Обращаемся к процедуре настройки http://ВашХост/postfixadmin/setup.php. Если ошибок не обнаружено, внизу страницы появится запрос на создание пароля установки. Этот пароль используется для создания администраторов. После указания пароля и нажатия на кнопку Generate password hash, должна появится строка вида:
$CONF['setup_password'] = '272aa1a6bdc0…283ac11e57';
В файле config.inc.php необходимо найти соответствующий параметр и заменить этой строкой, только после этого можно будет создать администратора.
4. Установка и настройка Postfix
Устанавливаем:
# apt-get install postfix postfix-mysql dovecot-common dovecot-imapd dovecot-pop3d openssl
После установки, чтоб предотвратить мешанину из конфигурационных файлов, в папке /etc/postfix создаем подпапку mysql. В ней будут храниться файлы запросов почтового сервера к БД. В этой папке создадим три конфигурационных файла:
4.1. virtual-alias-maps.cf
user = postfixadmin
password = 123456
hosts = 127.0.0.1
dbname = postfixadmin
query = select `goto` from `alias` where `address` = '%s'
user = postfixadmin
password = 123456
hosts = 127.0.0.1
dbname = postfixadmin
query = select 1 from `domain` where `domain` = '%s'
user = postfixadmin
password = 123456
hosts = 127.0.0.1
dbname = postfixadmin
query = select 1 from `mailbox` where `username` = '%s'
Создаем пользователя и группу, которые будут отвечать за почту, точнее за почтовые ящики:
# groupadd -g 5000 vmail
# useradd -g vmail -u 5000 vmail -d /home/vmail -m
Postfix имеет удобный скрипт для управления конфигурационным файлом. Этот скрипт избавляет от необходимости искать директивы вручную. Теперь, используя этот скрипт, зададим конфигурацию для Postfix. Обычно для настройки параметров, дабы не вводить это все каждый раз вручную, я создаю отдельный скрипт. Назовем его postfix-myconf.sh:
#!/bin/sh
postconf -e virtual_mailbox_domains=mysql:/etc/postfix/mysql/virtual-mailbox-domains.cf
postconf -e virtual_mailbox_maps=mysql:/etc/postfix/mysql/virtual-mailbox-maps.cf
postconf -e virtual_alias_maps=mysql:/etc/postfix/mysql/virtual-alias-maps.cf
postconf -e virtual_uid_maps=static:5000
postconf -e virtual_gid_maps=static:5000
postconf -e virtual_transport=dovecot
postconf -e dovecot_destination_recipient_limit=1
postconf -e smtpd_tls_cert_file=/etc/ssl/cert/postfix.pem
postconf -e smtpd_tls_key_file=/etc/ssl/private/postfix.pem
postconf -e smtpd_use_tls=yes
postconf -e smtpd_sasl_type=dovecot
postconf -e smtpd_sasl_path=private/auth
postconf -e smtpd_sasl_auth_enable=yes
postconf -e smtpd_recipient_restrictions=permit_sasl_authenticated,reject_unauth_destinationЗаключительным аккордом настройки Postfix будет добавление Dovecot интерфейса. Для этого в файл /etc/postfix/master.cf добавляем две строки:
dovecot unix — n n — — pipe
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}
На данном этапе мы создаем ключи и сертификаты для Postfix и Dovecot. Процедура проста, как гвоздь: даем пару команд и отвечаем на заданные вопросы:
# openssl req -new -x509 -days 3650 -nodes -out /etc/ssl/certs/dovecot.pem -keyout /etc/ssl/private/dovecot.pem
# chmod o= /etc/ssl/private/dovecot.pem
# openssl req -new -x509 -days 3650 -nodes -out /etc/ssl/certs/postfix.pem -keyout /etc/ssl/private/postfix.pem
# chmod o= /etc/ssl/private/postfix.pem
В результате должны появится 4 файла: /etc/ssl/certs/dovecot.pem, /etc/ssl/private/dovecot.pem, /etc/ssl/certs/postfix.pem и /etc/ssl/private/postfix.pem. И не забываем дать права доступа на полученные файлы.
6. Настройка Dovecot
Конфигурационные файлы Dovecot находятся в /etc/dovecot.
6.1. dovecot.conf
Находим перечисленные ниже директивы и приводим их к заданному виду:
protocols = imap imaps pop3 pop3s
disable_plaintext_auth = no
mail_location = maildir:/home/vmail/%d/%n
namespace private {
separator = .
prefix = INBOX.
inbox = yes
}
mechanisms = plain login
passdb sql {
args = /etc/dovecot/dovecot-sql.conf
}
userdb static {
args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes
}
socket listen {
master {
path = /var/run/dovecot/auth-master
mode = 0600
user = vmail
}
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}
protocol lda {
postmaster_address = postmaster@ВашДомен.ru
auth_socket_path = /var/run/dovecot/auth-master
mail_plugins = sieve
log_path = /home/vmail/dovecot-deliver.log
global_script_path = /home/vmail/globalsieverc
}
Настраиваем связку Dovecot с MySQL. Точно так же находим перечисленные ниже директивы и приводим их к заданному виду:
driver = mysql
connect = host=127.0.0.1
dbname=postfixadmin user=postfixadmin password=123456
default_pass_scheme = PLAIN-MD5
password_query = SELECT username as user, password FROM mailbox WHERE username = '%u'
Postfix и Dovecot настроены. Перезапускаем:
# /etc/init.d/dovecot restart
# postfix reload
Если все сделано без ошибок, то в файле /var/log/mail.log должны появиться строки:
mail dovecot: Dovecot v1.0.15 starting up
mail dovecot: auth-worker(default):
mysql: Connected to 127.0.0.1 (postfixadmin)
Журналы ошибок и вообще результаты деятельности почтовой системы лежат в файлах:
- /var/log/mail.log
- /var/log/mail.err
- /var/log/mail.info
- /var/log/mail.warn
Тема настройки почтовой системы далее будет расширена подключением Web-интерфейса почты, подключение антивирусной программы, борьба со спамом.
Удачной настройки.
8. Возможные проблемы и способы их решения
В логах ошибка: postfix fatal: open database /etc/aliases.db: no such file or directory
Решение:
Генерируем aliases.db с использованием скрипта postalias:
# postalias /etc/aliases /etc/aliases.db
В результате создадутся необходимые файлы.