Установка почтового сервера Postfix и Dovecot на Debian 10 Buster
Недавно разбирался как поднять почтовый сервер на Postfix в связке с Dovecot, для памяти опишу как поднять такой сервер на Debian 10. Все действия ниже будут выполняться от root.
Настройка DNS записей
# Добавляем DNS-записи для вашего почтового сервера:
@ MX 10 mail.example.com. mail A 192.168.1.10
Настройка системы
# Задаем имя системы (mail
) в файле (/etc/hostname
):
echo mail > /etc/hostname
# Указываем в файле (/etc/hosts
) строку содержащую IP-адрес с полным доменным именем (FQDN).
127.0.0.1 localhost 192.168.1.10 mail.example.com mail
[stextbox id=’info’]ИНФОРМАЦИЯ: В приведенном выше примере 192.168.1.10
— это IP-адрес машины, mail
— это имя локального хоста, а mail.example.com
это полное доменное имя.[/stextbox]
Настройка MySQL
Данные о пользователях почтового сервера (адреса электронной почты), доменах и псевдонимах будут хранится в базе данных MySQL.
# Устанавливаем MySQL сервер.
apt-get install mariadb-server -y
# Выполняем базовую настройку безопасности MySQL сервера и входим на сервер.
mysql_secure_installation mariadb
# Создаем базу данных для работы почтового сервера, пользователя для работы с базой данных и делегируем права на созданную базу данных.
CREATE DATABASE postfix; CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'postfix'; GRANT SELECT ON postfix.* TO 'postfix'@'localhost'; FLUSH PRIVILEGES;
# Переключаемся на созданную базу данных, для создания необходимых таблиц.
use postfix;
# Создаем таблицу для доменов, которые будут получать почту:
CREATE TABLE `virtual_domains` ( `id` int(11) NOT NULL auto_increment, `name` varchar(50) NOT NULL, PRIMARY KEY (`id`) );
# Создаем таблицу для всех адресов электронной почты и паролей:
CREATE TABLE `virtual_users` ( `id` int(11) NOT NULL auto_increment, `domain_id` int(11) NOT NULL, `password` varchar(106) NOT NULL, `email` varchar(100) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `email` (`email`), FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE );
# Создаем таблицу для псевдонимов электронной почты:
CREATE TABLE `virtual_aliases` ( `id` int(11) NOT NULL auto_increment, `domain_id` int(11) NOT NULL, `source` varchar(100) NOT NULL, `destination` varchar(100) NOT NULL, PRIMARY KEY (`id`), FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE );
# Создаем таблицу для запрет на подключение к ehlo для внешних хостов:
CREATE TABLE IF NOT EXISTS `helo_access` ( `id` int(11) NOT NULL AUTO_INCREMENT, `domain` varchar(50) NOT NULL, `response` varchar(10) NOT NULL, `message` varchar(200) NOT NULL, PRIMARY KEY (`id`) );
# Создаем таблицу для блокировки внешних отправителей:
CREATE TABLE IF NOT EXISTS `sender_access` ( `id` int(11) NOT NULL AUTO_INCREMENT, `email` varchar(50) NOT NULL, `response` varchar(10) NOT NULL, `message` varchar(200) NOT NULL, PRIMARY KEY (`id`) );
# Создаем таблицу для блокировки внутренних отправителей:
CREATE TABLE IF NOT EXISTS `client_access` ( `id` int(11) NOT NULL AUTO_INCREMENT, `ip_address` varchar(50) NOT NULL, `response` varchar(10) NOT NULL, `message` varchar(200) NOT NULL, PRIMARY KEY (`id`) );
Добавление домена
INSERT INTO virtual_domains(name) VALUES ('example.com');
Добавление адреса электронной почты
INSERT INTO virtual_users (domain_id, password , email) VALUES ('1', ENCRYPT('password', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), 'user@example.com');
[stextbox id=’info’]ИНФОРМАЦИЯ: Значение domain_id (в настоящее время установлено равным ‘1’) ссылается на значение идентификатора таблицы virtual_domain. Если вы добавили более одного домена, замените это значение, чтобы оно соответствовало желаемому домену. Заменить user@example.com с адресом электронной почты, который вы хотите настроить на почтовом сервере. Замените password на безопасный пароль для пользователя почты.[/stextbox]
Так же можно альтернативным способом сгенерировать хэш пароля с использованием схемы шифрования SHA512-CRYPT при помощи doveadm (в случае если пакет dovecot-core был ранее уставлен).
# Сгенерируем хэш, используя схему шифрования SHA512-CRYPT, командой:
doveadm pw -s SHA512-CRYPT -p "password" -r 5000
Результат:
{SHA512-CRYPT}$6$Np738E66vzahbman$f8dS11Mx3rIhS2/VhhsPybSjwf9Exo74ebTDJ5csRXFpnYXF6.l4POdBleftqiw4mK6QvD0JWbZjltbPTpJZ/.
Скопируем вывод начиная с $6$, игнорируя первые 14 символов {SHA512-CRYPT} и добавляем адрес электронной почты и скопированный хэш пароля в таблицу virtual_users базы данных postfix:
INSERT INTO postfix.virtual_users (domain_id, password , email) VALUES ('1', '$6$Np738E66vzahbman$f8dS11Mx3rIhS2/VhhsPybSjwf9Exo74ebTDJ5csRXFpnYXF6.l4POdBleftqiw4mK6QvD0JWbZjltbPTpJZ/.', 'user@example.com');
Изменение пароля адреса электронной почты
update virtual_users set password = '$6$csAuE9s5s14sha6f$ZJEC0JO6/Hqjipxdajups5OcZ0WJcGmLuvPal0gsehakQPei5lVCQoLdawM/g6EgUeWT91g9HShwAppVWXJK.1' where email = 'user@example.com';
Удаление адреса электронной почты
delete from virtual_users where email = 'user@example.com';
Добавление псевдонима (Alias)
Псевдоним электронной почты пересылает все письма, которые он получает, на другой адрес электронной почты.
# Добавление псевдонима электронной почты:
INSERT INTO virtual_aliases (domain_id, source, destination) VALUES ('1', 'alias@example.com', 'user@example.com');
[stextbox id=’info’]ИНФОРМАЦИЯ: Значение domain_id (в настоящее время установлено равным ‘1’) ссылается на значение идентификатора таблицы virtual_domain. Если вы добавили более одного домена, замените это значение, чтобы оно соответствовало желаемому домену. Заменить alias@example.com с желаемым псевдонимом. Заменить user@example.com с адресом электронной почты, на который вы хотите переслать электронное письмо.[/stextbox]
Добавление ограничений (по необходимости)
# Блокировка внешних отправителей (таблица sender_access)
INSERT INTO sender_access (email, response, message) VALUES ('spammer@spam.bad', 'REJECT', 'You are banned');
[stextbox id=’info’]ИНФОРМАЦИЯ: Любой адрес электронной почты, который вы введете в эту таблицу, будет отклонен и отправитель получит ответное электронное письмо c заданным сообщением.[/stextbox]
# Блокировка внутренних отправителей (таблица client_access)
INSERT INTO client_access (ip_address, response, message) VALUES ('192.168.1.1', 'REJECT', 'Your IP is banned. Please contact with system administrator.');
# Запрет на подключение к ehlo для внешних хостов (таблица helo_access)
INSERT INTO helo_access (domain, response, message) VALUES ('xxx.xxx.xxx.xxx', 'REJECT', 'You are not allowed to connect to the mail server'), ('example.1.com', 'REJECT', 'You are not allowed to connect to the mail server'), ('mail.example1.com', 'REJECT', 'You are not allowed to connect to the mail server');
[stextbox id=’info’]ИНФОРМАЦИЯ: Любой, кто попытается подключиться к ehlo с одним из имен хостов, которые указаны в таблице, получят отказ и увидят заданное сообщение.[/stextbox]
Postfix
# Устанавливаем все необходимые пакеты (включая Dovecot):
apt-get install postfix postfix-mysql postfix-pcre postfix-ldap dovecot-core dovecot-mysql dovecot-gssapi dovecot-imapd dovecot-lmtpd dovecot-ldap dovecot-sieve dovecot-managesieved dovecot-pop3d opendkim opendkim-tools mailutils -y
При появлении запроса выберите Internet Site в качестве типа почтового сервера, который должен быть настроен установщиком Postfix и на следующем экране имя системной почты должно быть присвоено домену, через который будет отправляться и приниматься электронная почта.
Настройка main.cf
# Создаем копию файла конфигурации (main.cf) на всякий случай:
cp /etc/postfix/main.cf /etc/postfix/main.cf.orig
Приводим файл конфигурации (/etc/postfix/main.cf) к виду:
# See /usr/share/postfix/main.cf.dist for a commented, more complete version # Debian specific: Specifying a file name will cause the first # line of that file to be used as the name. The Debian default # is /etc/mailname. #myorigin = /etc/mailname smtpd_banner = $myhostname ESMTP $mail_name biff = no # appending .domain is the MUA's job. append_dot_mydomain = no # Uncomment the next line to generate "delayed mail" warnings #delay_warning_time = 4h readme_directory = no # See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on # fresh installs. compatibility_level = 2 # TLS parameters smtpd_tls_cert_file=/etc/letsencrypt/live/mail.example.com/fullchain.pem smtpd_tls_key_file=/etc/letsencrypt/live/mail.example.com/privkey.pem smtpd_use_tls=yes smtpd_tls_auth_only = yes smtp_tls_security_level = may smtpd_tls_security_level = may smtpd_sasl_security_options = noanonymous, noplaintext smtpd_sasl_tls_security_options = noanonymous smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache # SMTP-Auth settings smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes # Restrictions smtpd_helo_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_invalid_helo_hostname, reject_unknown_helo_hostname, reject_non_fqdn_helo_hostname, check_helo_access mysql:/etc/postfix/mysql_helo_access.cf smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unlisted_recipient, reject_unauth_destination, check_client_access mysql:/etc/postfix/mysql_client_access.cf smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unknown_reverse_client_hostname, reject_non_fqdn_sender, reject_unknown_sender_domain, reject_rhsbl_helo dbl.spamhaus.org, reject_rhsbl_reverse_client dbl.spamhaus.org, reject_rhsbl_sender dbl.spamhaus.org, reject_rbl_client zen.spamhaus.org, check_sender_access mysql:/etc/postfix/mysql_sender_access.cf smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, defer_unauth_destination # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for # information on enabling SSL in the smtp client. myhostname = mail.example.com alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases mydomain = example.com myorigin = $mydomain mydestination = localhost relayhost = mynetworks = 127.0.0.0/8 mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all inet_protocols = ipv4 maximal_queue_lifetime = 1d bounce_queue_lifetime = 1d queue_run_delay=5m # Handing off local delivery to Dovecot's LMTP, and telling it where to store mail virtual_transport = lmtp:unix:private/dovecot-lmtp # Virtual domains, users, and aliases virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf, mysql:/etc/postfix/mysql-virtual-email2email.cf # Even more Restrictions and MTA params disable_vrfy_command = yes strict_rfc821_envelopes = yes smtpd_etrn_restrictions = reject smtpd_reject_unlisted_sender = yes smtpd_reject_unlisted_recipient = yes smtpd_delay_reject = yes smtpd_helo_required = yes smtp_always_send_ehlo = yes #smtpd_hard_error_limit = 1 smtpd_timeout = 30s smtp_helo_timeout = 15s smtp_rcpt_timeout = 15s smtpd_recipient_limit = 40 minimal_backoff_time = 180s maximal_backoff_time = 3h # Reply Rejection Codes invalid_hostname_reject_code = 550 non_fqdn_reject_code = 550 unknown_address_reject_code = 550 unknown_client_reject_code = 550 unknown_hostname_reject_code = 550 unverified_recipient_reject_code = 550 unverified_sender_reject_code = 550
[stextbox id=’info’]ИНФОРМАЦИЯ: в конфигурационном файле указано использование Let’s Encrypt SSL-сертификата, как его выпустить можно почитать в этой статье — https://sysos.ru/?p=586[/stextbox]
[stextbox id=’warning’]ВНИМАНИЕ: обращаю внимание что вместо example.com (строки помечены), указываем свой домен.[/stextbox]
# Создаем объявленные в main.cf файлы конфигурации содержание информацию о подключении к таблицам поиска MySQL. Postfix будет использовать эти данные для идентификации всех доменов, соответствующих почтовых ящиков и действительных пользователей.
cat << EOF > /etc/postfix/mysql-virtual-mailbox-domains.cf user = postfix password = postfix hosts = 127.0.0.1 dbname = postfix query = SELECT 1 FROM virtual_domains WHERE name='%s' EOF
cat << EOF > /etc/postfix/mysql-virtual-mailbox-maps.cf user = postfix password = postfix hosts = 127.0.0.1 dbname = postfix query = SELECT 1 FROM virtual_users WHERE email='%s' EOF
cat << EOF > /etc/postfix/mysql-virtual-alias-maps.cf user = postfix password = postfix hosts = 127.0.0.1 dbname = postfix query = SELECT destination FROM virtual_aliases WHERE source='%s' EOF
cat << EOF > /etc/postfix/mysql-virtual-email2email.cf user = postfix password = postfix hosts = 127.0.0.1 dbname = postfix query = SELECT email FROM virtual_users WHERE email='%s' EOF
cat << EOF > /etc/postfix/mysql_helo_access.cf user = postfix password = postfix hosts = 127.0.0.1 dbname = postfix query = SELECT CONCAT(response, ' ', message) AS 'Postfix Response' FROM helo_access WHERE domain='%s' EOF
cat << EOF > /etc/postfix/mysql_client_access.cf user = postfix password = postfix hosts = 127.0.0.1 dbname = postfix query = SELECT CONCAT(response, ' ', message) AS 'Postfix Response' FROM client_access WHERE ip_address='%s' EOF
cat << EOF > /etc/postfix/mysql_sender_access.cf user = postfix password = postfix hosts = 127.0.0.1 dbname = postfix query = SELECT CONCAT(response, ' ', message) AS 'Postfix Response' FROM sender_access WHERE email='%s' EOF
Можно протестировать конфигурацию Postfix с помощью команды postmap, которая может запрашивать таблицы поиска Postfix.
# Для проверки существования домена example.com в таблице virtual_domains (команда должна вернуть 1, если она выполнена успешно):
postmap -q example.com mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
Настройка master.cf
В конфигурационном файле master.cf перечислены все программы и информация о том, как их следует запускать.
# Создаем копию файла конфигурации (master.cf) на всякий случай:
cp /etc/postfix/master.cf /etc/postfix/master.cf.orig
Приводим файл конфигурации (/etc/postfix/master.cf), чтобы он содержал значения в приведенном ниже отрывке. Остальную часть файла оставляем без изменений:
# # Postfix master process configuration file. For details on the format # of the file, see the master(5) manual page (command: "man 5 master" or # on-line: http://www.postfix.org/master.5.html). # # Do not forget to execute "postfix reload" after editing this file. # # ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) # ========================================================================== smtp inet n - n - - smtpd -v #smtp inet n - - - 1 postscreen #smtpd pass - - - - - smtpd #dnsblog unix - - - - 0 dnsblog #tlsproxy unix - - - - 0 tlsproxy submission inet n - y - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth -o smtpd_reject_unlisted_recipient=no -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING smtps inet n - - - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING ...
Dovecot
Dovecot — это сервер POP3 и IMAP, который предоставляет почтовым клиентам доступ к электронной почте на сервере. Он также действует как локальный агент доставки (LDA), который принимает электронные письма из Postfix (или другого программного обеспечения MTA / почтового сервера) и сохраняет их.
# Создаем копии всех файлов конфигурации с которыми будем работать ниже:
cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.orig cp /etc/dovecot/conf.d/10-mail.conf /etc/dovecot/conf.d/10-mail.conf.orig cp /etc/dovecot/conf.d/10-auth.conf /etc/dovecot/conf.d/10-auth.conf.orig cp /etc/dovecot/conf.d/auth-sql.conf.ext /etc/dovecot/conf.d/auth-sql.conf.ext.orig cp /etc/dovecot/dovecot-sql.conf.ext /etc/dovecot/dovecot-sql.conf.ext.orig cp /etc/dovecot/conf.d/10-master.conf /etc/dovecot/conf.d/10-master.conf.orig cp /etc/dovecot/conf.d/10-ssl.conf /etc/dovecot/conf.d/10-ssl.conf.orig cp /etc/dovecot/conf.d/15-mailboxes.conf /etc/dovecot/conf.d/15-mailboxes.conf.orig cp /etc/dovecot/conf.d/15-lda.conf /etc/dovecot/conf.d/15-lda.conf.orig cp /etc/dovecot/conf.d/10-logging.conf /etc/dovecot/conf.d/10-logging.conf.orig
Настройка dovecot.conf
В файле (/etc/dovecot/dovecot.conf) указываем какие протоколы будут использоваться (в моем случае я использую только imap, lmtp), указываем электронный адрес postmaster и указываем что слушать будем только IPv4. Остальные параметры оставляем без изменений.
## Dovecot configuration file ... # Enable installed protocols !include_try /usr/share/dovecot/protocols.d/*.protocol protocols = imap lmtp postmaster_address = postmaster@example.com # A comma separated list of IPs or hosts where to listen in for connections. # "*" listens in all IPv4 interfaces, "::" listens in all IPv6 interfaces. # If you want to specify non-default ports or anything more complex, # edit conf.d/master.conf. listen = * ...
Настройка 10-mail.conf
В файле (/etc/dovecot/conf.d/10-mail.conf) указываем как и в каком формате хранить сообщения. Остальные параметры оставляем без изменений.
... mail_location = maildir:/var/mail/vhosts/%d/%n/ ... mail_privileged_group = mail ...
# Создайте каталог для домена, заменив example.com с вашим доменным именем. Этот каталог будет служить хранилищем для почты, отправляемой на ваш домен.
mkdir -p /var/mail/vhosts/example.com
# Создаем системного пользователя и группу который будет читать почту с сервера и применяем необходимые права доступа на каталог хранения почты (/var/mail).
groupadd -g 5000 vmail useradd -g vmail -u 5000 vmail -d /var/mail chown -R vmail:vmail /var/mail
Настройка 10-auth.conf
В файле (/etc/dovecot/conf.d/10-auth.conf) указываем тип аутентификации пользователя и раскомментируем две переменные. Остальные параметры оставляем без изменений.
... disable_plaintext_auth = yes ... auth_mechanisms = plain login ... !include auth-system.conf.ext ... !include auth-sql.conf.ext ...
Настройка auth-sql.conf.ext
В файле (/etc/dovecot/conf.d/auth-sql.conf.ext) раскомментируем раздел passdb, раздел userdb, который использует статический (static) драйвер, раскомментирован и обновлен с правильным аргументом. Затем закомментируйте раздел userdb, в котором используется драйвер sql:
... passdb { driver = sql args = /etc/dovecot/dovecot-sql.conf.ext } ... #userdb { # driver = sql # args = /etc/dovecot/dovecot-sql.conf.ext #} ... userdb { driver = static args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n } ...
Настройка dovecot-sql.conf.ext
В файле (/etc/dovecot/dovecot-sql.conf.ext) указываем данные для подключения к MySQL.
... driver = mysql ... connect = host=127.0.0.1 dbname=postfix user=postfix password=postfix ... default_pass_scheme = SHA512-CRYPT ... password_query = SELECT email as user, password FROM virtual_users WHERE email='%u'; ...
[stextbox id=’warning’]ИНФОРМАЦИЯ. В случае если имя базы данных, пользователь и пароль задавался отличный от тех что описан выше, то замените dbname, user и password вашими значениями базы данных MySQL.[/stextbox]
Настройка 10-master.conf
В файле (/etc/dovecot/conf.d/10-master.conf) находим секцию service imap-login иservice pop3-login, отключаем незашифрованный IMAP и отключаем полностью POP3:
... service imap-login { inet_listener imap { port = 0 } inet_listener imaps { port = 993 ssl = yes } ... } ... service pop3-login { inet_listener pop3 { port = 0 } inet_listener pop3s { port = 0 ssl = yes } } ...
Находим секцию service lmtp и приводим к виду:
... service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { # mode = 0666i mode = 0600 user = postfix group = postfix } ... }
Находим секцию service auth и приводим к виду:
... service auth { ... unix_listener /var/spool/postfix/private/auth { mode = 0660 user = postfix group = postfix } unix_listener auth-userdb { mode = 0600 user = vmail } ... user = dovecot } ...
В секции service auth-worker, раскомментируем параметр user и укажем в нем — vmail:
... service auth-worker { ... user = vmail }
Настройка 10-ssl.conf
В файле (/etc/dovecot/conf.d/10-ssl.conf) указываем расположение SSL сертификатов (в моем случае указан Let’s Encrypt SSL-сертификат). Остальные параметры оставляем без изменений.
# PEM encoded X.509 SSL/TLS certificate and private key. They're opened before # dropping root privileges, so keep the key file unreadable by anyone but # root. Included doc/mkcert.sh can be used to easily generate self-signed # certificate, just make sure to update the domains in dovecot-openssl.cnf ssl_cert = </etc/letsencrypt/live/mail.example.com/cert.pem ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pem ssl_client_ca_file = /etc/letsencrypt/live/mail.example.com/fullchain.pem ...
Настройка 15-mailboxes.conf
В файле (/etc/dovecot/conf.d/15-mailboxes.conf) укажем какие папки почтового языка добавлять автоматически в учетные записи пользователей.
... # NOTE: Assumes "namespace inbox" has been defined in 10-mail.conf. namespace inbox { # These mailboxes are widely used and could perhaps be created automatically: mailbox Drafts { auto = subscribe special_use = \Drafts } mailbox Junk { auto = subscribe special_use = \Junk } mailbox Trash { auto = subscribe special_use = \Trash } mailbox Archive { special_use = \Archive auto = subscribe } # For \Sent mailboxes there are two widely used names. We'll mark both of # them as \Sent. User typically deletes one of them if duplicates are created. mailbox Sent { auto = subscribe special_use = \Sent } mailbox "Sent Messages" { special_use = \Sent } # If you have a virtual "All messages" mailbox: #mailbox virtual/All { # special_use = \All # comment = All my messages #} # If you have a virtual "Flagged" mailbox: #mailbox virtual/Flagged { # special_use = \Flagged # comment = All my flagged messages #} }
Настройка 10-logging.conf
В файле (/etc/dovecot/conf.d/10-logging.conf) укажем параметры логирования.
... log_path = /var/log/dovecot.log ... auth_verbose = yes ... mail_debug = yes ... # mail_log plugin provides more event logging for mail processes. plugin { # Events to log. Also available: flag_change append #mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename # Available fields: uid, box, msgid, from, subject, size, vsize, flags # size and vsize are available only for expunge and copy events. #mail_log_fields = uid box msgid size mail_log_events = delete undelete expunge } ... mail_log_prefix = "%s(%u):(%r): "
# Создаем правило ротации логов (/etc/logrotate.d/dovecot).
cat << EOF > /etc/logrotate.d/dovecot /var/log/dovecot.log { weekly rotate 4 missingok notifempty compress delaycompress sharedscripts postrotate doveadm log reopen endscript } EOF
# Запускаем утилиту logrotate, чтобы обработался текущий файл и убедится что все в порядке.
logrotate -f -v /etc/logrotate.d/dovecot
# Добавляем в автозапуск Postfix & Dovecot, перезапускаем службы для применения всех внесенных изменений и проверяем их статус после запуска.
systemctl enable postfix systemctl enable dovecot systemctl restart postfix systemctl restart dovecot systemctl status postfix systemctl status dovecot
Проверка работоспособности
Отправим тестовое электронное письмо на адрес электронной почты за пределами вашего почтового сервера:
echo "Email body text" | sudo mail -s "Email subject line" recipient@gmail.com -aFrom:user@example.com
Отправим тестовое электронное письмо на свой почтовый сервер с внешнего адреса электронной почты:
mail -f /var/mail/vhosts/example.com/user "/var/mail/vhosts/example.com/": 2 messages 2 new 2 unread U 1 John Doe Wed Jun 27 16:00 57/2788 Test email 1 U 2 John Doe Wed Jun 27 16:02 56/2761 Test email 2 ?
Обсуждение
Нет комментариев.