Home » Linux » CentOS » Настройка postfix + dovecot + mysql база + postfixadmin + roundcube + dkim на CentOS 7

Настройка postfix + dovecot + mysql база + postfixadmin + roundcube + dkim на CentOS 7

Некоторое время назад я рассказывал, как настроить почтовый сервер на базе готовой сборки iredmail. Я подробно разобрал все актуальные вопросы почтового сервера на linux на базе postfix. Сейчас хочу настроить похожий функционал, но с нуля, за основу взяв postfix + dovecot. Я расскажу про установку и настройку postfix на centos 7, причем только тех модулей и дополнений, которые сам считаю нужными и полезными на почтовом сервере.

Онлайн-курс по устройству компьютерных сетей

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Данная статья является частью единого цикла статьей про сервер Centos.

Вышла обновленная версия этой статьи для системы Centos 8 - Настройка postfix + dovecot + mysql база + postfixadmin + roundcube + dkim

Введение

Я буду настраивать почтовый сервер на ОС linux, а точнее на CentOS 7. За основу будет взят postfix, который присутствует в этой системе из коробки. Инструкция получится универсальной, можно использовать и для других дистрибутивов. Все основные конфиги легко переносятся на разные системы, требуя минимальной правки, в основном путей.

Я напишу статью на самом что ни на есть реальном примере, без какой-либо правки доменов, ip и прочего, чтобы не ошибиться и показать максимально возможный реальный пример. У меня есть технический домен zeroxzed.ru. Я буду использовать его в своей работе. Почтовый сервер будет иметь имя mail.zeroxzed.ru. Всю теорию по подготовке dns к установке и настройке почтового сервера я рассказывал в предыдущей статье о почтовом сервере. Не хочу здесь повторяться. Уточню только список действий, которые вам нужно проделать c ДНС:

  1. Создаем A запись в DNS - mail.zeroxzed.ru.
  2. Добавляем или редактируем MX запись, указывая в качестве почтового сервера mail.zeroxzed.ru.
  3. Просим провайдера прописать PTR для внешнего ip адреса, который будет использовать почтовый сервер. В качестве ptr записи просим установить имя нашего сервера - mail.zeroxzed.ru.

Настройка dns записей для почтового сервера

Я предпочитаю в качестве dns хостинга использовать сервера яндекса, даже если не прикрепляю его почту к домену. На картинке показан минимально необходимый набор записей, кроме PTR. Этими записями управляете не вы, а провайдер, который вам выдает ip. Пока с днс все. Позже мы вернемся к этому вопросу, когда будем добавлять dkim и spf записи. Но обо всем по порядку.

Подготовим систему centos к установке и настройке почтового сервера postfix. Если у вас еще нет готовой системы, то рекомендую воспользоваться моими статьями по установке и настройке centos. Отдельно потратьте время на настройку iptables. Я не буду касаться этого вопроса в данной статье, чтобы не раздувать ее второстепенными вещами. Удобнее, когда все по отдельности рассказано и описано с должной глубиной. Сваливать все в одну кучу не хочется.

По вступлению вроде все, основное рассказал. Приступим к настройке нашего почтового сервера.

Сразу хочу сделать предупреждение. Настройка почтового сервера достаточно трудоемкий процесс, требует определенных навыков, знаний и понимания принципов работы используемых средств. Я не ставлю для себя цель расписать максимально подробно так, чтобы было понятно даже неподготовленному администратору linux. Вы должны быть так или иначе подготовлены, либо запаситесь терпением и разбирайтесь внимательно сами в нюансах. Эта статья на полный копипаст не подходит, что-то остается за кадром для самостоятельного выполнения. Иначе нельзя, получится очень большой и громоздкий материал.

Установка postfixadmin

Начнем с установки и настройки панели управления почтовым сервером postfix - postfixadmin. Без него начинать что-то делать неудобно, так как управлять пользователями, ящиками, алиасами будет нечем. По своей сути postfixadmin - набор php скриптов для управления записями в mysql базе данных, которую использует сервер postfix во время своей работы. Соответственно, для работы postfixadmin нам нужен web сервер. Подробно о настройке web сервера на centos читайте отдельно. Сейчас же мы быстро установим все необходимое. Привожу только команды, без комментариев. Все подробности по приведенной выше ссылке.

# yum install httpd php phpmyadmin mariadb mariadb-server php-imap

Этих пакетов со всеми зависимостями будет достаточно для установки всех необходимых компонентов веб сервера. Я специально ставлю phpmyadmin, с ним удобно работать с базой. В нашем случае все пользователи будут храниться в mysql, иногда может понадобиться туда заглянуть. Подробнее с установкой и настройкой phpmyadmin можете ознакомиться отдельно.

Запускаем httpd и mariadb и добавляем их в автозагрузку.

# systemctl start httpd
# systemctl enable httpd
# systemctl start mariadb
# systemctl enable mariadb

Задаем пароль root для mysql.

# /usr/bin/mysql_secure_installation

Проверяем работу web сервера. Заходим по ip адресу сервера - http://188.35.19.125/, а также проверяем работу phpmyadmin - http://188.35.19.125/phpmyadmin/. Его нужно настроить, об этом рассказано в статье, которую я привел чуть выше. По-умолчанию в phpmyadmin доступ закрыт. Если все сделали правильно, то увидите примерно следующее.

Вход в phpmyadmin

Сразу создадим тут пользователя postfix и одноименную базу данных. Запомните учетные данные, они нам далее понадобятся.

Веб сервер готов, продолжаем настройку почтового сервера. Скачиваем последнюю версию postfixadmin.

# cd /usr/src
# wget https://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-3.0.2/postfixadmin-3.0.2.tar.gz
Скорее всего во время вашей установки версия postfixadmin изменится и ссылка может быть неактуальной. Но даже если она будет актуальна, возможно выйдет более новая версия. Проверьте ее по ссылке https://sourceforge.net/projects/postfixadmin/ и скачайте самую свежую версию.

Распаковываем архив и копируем в директорию веб сервера.

# tar -xvzf postfixadmin-*
# mv /usr/src/postfixadmin-3.0.2 /var/www/html/postfixadmin

Назначаем владельцем пользователя веб сервера:

# chown -R apache. /var/www/html/postfixadmin/

Дальше редактируем конфигурационный файл postfixadmin.

# mcedit /var/www/html/postfixadmin/config.inc.php

Приводим параметры к следующему виду:

$CONF['configured'] = true;
$CONF['default_language'] = 'ru';
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = '12345678';
$CONF['database_name'] = 'postfix';
$CONF['admin_email'] = 'root@zeroxzed.ru';
$CONF['encrypt'] = 'md5crypt';
$CONF['default_aliases'] = array (
 'abuse' => 'root',
 'hostmaster' => 'root',
 'postmaster' => 'root',
 'webmaster' => 'root'
);
$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'YES';

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

К примеру, у пользователя несколько устройств подключены к почте и он забыл свой пароль. Админ при создании почему-то тоже его никуда не записал, или забыл, или потерял. Вам придется сбросить пароль и перенастроить все устройства. Если же у вас пароль хранится в открытом виде, вы просто смотрите в базу и говорите пользователю пароль. Пароли в открытом виде удобно просто выгрузить дампом из базы, если понадобится кому-то все учетки передать. Но тут как посмотреть :) С одной стороны плюс, с другой минус - кто-то очень просто может спереть все ваши пароли. В общем, тут от ситуации зависит, решайте сами, как вам удобнее хранить пароли.

У меня распространены ситуации, когда я удаленно администрирую сервера, а на месте эникеи работают с пользователями. Чаще всего это не очень аккуратные и ответственные люди, иначе они бы работали с серверами :) Они часто забывают записать пароль, путают что-то и т.д. В итоге, когда один человек увольняется и приходит другой, оказывается, что найти пароли на некоторые ящики просто невозможно. Тут очень выручает возможность посмотреть пароль в базе. Я новому админу либо пароль говорю, либо весь дамп сразу отдаю, пусть работает.

Если вы сами работаете с сервером и все аккуратно ведете, записываете, например, в keepass все пароли от почтовых ящиков, то смело шифруйте все пароли, так будет спокойнее.

Последние 2 параметра domain_path и domain_in_mailbox указывайте по своему усмотрению. В файле конфигурации в комментариях расписано, за что они отвечают и в чем отличие. Мне кажется, удобно хранить директории именно в таком виде, как я указал. Получится следующий путь до ящика, если у вас архив почты будет жить, к примеру, в директории /mnt/mail - /mnt/mail/zeroxzed.ru/root@zeroxzed.ru.

С параметрами разобрались. Сохраняем конфиг. Идем по адресу http://188.35.19.125/postfixadmin/setup.php и начинаем установку postfixadmin. Первым делом идет проверка всех необходимых для установки и работы компонентов. Для продолжения установки у вас должна быть такая картинка.

Установка postfixadmin

Если чего-то не хватает, разбирайтесь по месту. Если делаете по моей инструкции, то все должно быть в порядке. Указывайте пароль установки и продолжайте. Вы должны получить строку с хэшем этого пароля.

Добавление пароля установки

Добавляем полученную строку в файл конфигурации postfixadmin.

# mcedit /var/www/html/postfixadmin/config.inc.php
$CONF['setup_password'] = '67e46bdcc7aeb431f7af9a6d02f43352:30672e5a9deacaf505d32807b967caf9fd0c32ef';

Используя этот пароль, можно создать учетную запись администратора панели управления. Делаем это, учитывая, что пароль должен содержать не менее двух цифр. Если все сделали правильно, то увидите сообщение.

Добавление администратора postfixadmin

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

Главная страница postfixadmin

Теперь нам нужно добавить домен в панель управления. Идем в раздел Список доменов -> Новый домен и добавляем свой домен.

Создание нового домена

При создании домена были добавлены стандартные алиасы, получателя для которых мы указали еще в конфиге - ящик root@zeroxzed.ru. Создание таких алиасов требование стандартов, но по факту, кроме спама, вы скорее всего ничего не будете получать по этим адресам. Так что их создание оставляйте на свое усмотрения. Я обычно их не делаю, так как ящик для этих алиасов все равно не читаю.

Далее создадим почтовый ящик администратора - root@zeroxzed.ru. Для этого идем в раздел Обзор -> Создать ящик и заполняем поля.

Добавление почтового ящика

Непосредственно ящик на диске создан не будет, так как у нас еще не настроена почтовая система, но запись в базе данных появится. Это можно проверить через phpmyadmin.

Проверка нового ящика в mysql базе

Как мы видим, пароль указан в зашифрованном виде. На этом установку и настройку postfixadmin завершаем. Интерфейс для управления почтовым сервером мы подготовили. Теперь можно заняться непосредственно настройкой postfix.

Настройка postfix

Сердце нашего почтового сервера на linux - postfix. В дистрибутиве centos он уже установлен, можно сразу переходить к настройке. Рисуем следующий конфиг.

# mcedit /etc/postfix/main.cf
soft_bounce = no
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
mail_owner = postfix

myhostname = mail.zeroxzed.ru
mydomain = zeroxzed.ru
myorigin = $myhostname

inet_interfaces = all
inet_protocols = ipv4

mydestination = localhost.$mydomain, localhost
unknown_local_recipient_reject_code = 550
mynetworks = 127.0.0.0/8

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

smtpd_banner = $myhostname ESMTP $mail_name

debug_peer_level = 2
# Строки с PATH и ddd должны быть с отступом в виде табуляции от начала строки
debugger_command =
         PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
         ddd $daemon_directory/$process_name $process_id & sleep 5

sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.10.1/samples
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES

relay_domains = mysql:/etc/postfix/mysql/relay_domains.cf
virtual_alias_maps = mysql:/etc/postfix/mysql/virtual_alias_maps.cf,
 mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql/virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql/virtual_mailbox_maps.cf

smtpd_discard_ehlo_keywords = etrn, silent-discard
smtpd_forbidden_commands = CONNECT GET POST
broken_sasl_auth_clients = yes
smtpd_delay_reject = yes
smtpd_helo_required = yes
smtp_always_send_ehlo = yes
disable_vrfy_command = yes

smtpd_helo_restrictions = permit_mynetworks,
 permit_sasl_authenticated,
 reject_non_fqdn_helo_hostname,
 reject_invalid_helo_hostname

smtpd_data_restrictions = permit_mynetworks,
 permit_sasl_authenticated,
 reject_unauth_pipelining,
 reject_multi_recipient_bounce,

smtpd_sender_restrictions = permit_mynetworks,
 permit_sasl_authenticated,
 reject_non_fqdn_sender,
 reject_unknown_sender_domain

smtpd_recipient_restrictions = reject_non_fqdn_recipient,
 reject_unknown_recipient_domain,
 reject_multi_recipient_bounce,
 permit_mynetworks,
 permit_sasl_authenticated,
 reject_unauth_destination,

smtp_tls_security_level = may
smtpd_tls_security_level = may
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
smtp_tls_session_cache_database = btree:$data_directory/smtp_tls_session_cache
smtpd_tls_key_file = /etc/postfix/certs/key.pem
smtpd_tls_cert_file = /etc/postfix/certs/cert.pem
tls_random_source = dev:/dev/urandom

# Ограничение максимального размера письма в байтах
message_size_limit = 20000000
smtpd_soft_error_limit = 10
smtpd_hard_error_limit = 15
smtpd_error_sleep_time = 20
anvil_rate_time_unit = 60s
smtpd_client_connection_count_limit = 20
smtpd_client_connection_rate_limit = 30
smtpd_client_message_rate_limit = 30
smtpd_client_event_limit_exceptions = 127.0.0.0/8
smtpd_client_connection_limit_exceptions = 127.0.0.0/8

maximal_queue_lifetime = 1d
bounce_queue_lifetime = 1d

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/dovecot-auth

# Директория для хранения почты
virtual_mailbox_base = /mnt/mail
virtual_minimum_uid = 1000
virtual_uid_maps = static:1000
virtual_gid_maps = static:1000
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1

sender_bcc_maps = hash:/etc/postfix/sender_bcc_maps
recipient_bcc_maps = hash:/etc/postfix/recipient_bcc_maps

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

# mkdir /etc/postfix/mysql && cd /etc/postfix/mysql
# mcedit relay_domains.cf

hosts = localhost
user = postfix
password = 12345678
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '1'
# mcedit  virtual_alias_domain_maps.cf

hosts = localhost
user = postfix
password = 12345678
dbname = postfix
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1
# mcedit virtual_alias_maps.cf

hosts = localhost
user = postfix
password = 12345678
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
# mcedit virtual_mailbox_domains.cf
hosts = localhost
user = postfix
password = 12345678
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' AND active = '1'
# mcedit virtual_mailbox_maps.cf

hosts = localhost
user = postfix
password = 12345678
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'

Редактируем файл /etc/postfix/master.cf. Нам надо добавить строки, касающиеся настройки Submission для того, чтобы почтовый сервер работал на 587 порту. Смартфоны очень часто при настройке используют этот порт по-умолчанию, где-то даже без возможности изменить эту настройку. Приводим секцию, отвечающую за эту работу к следующему виду.

submission inet n - n - - smtpd
 -o syslog_name=postfix/submission
 -o smtpd_tls_wrappermode=no
 -o smtpd_tls_security_level=encrypt
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
 -o smtpd_relay_restrictions=permit_mynetworks,permit_sasl_authenticated,defer_unauth_destination
 -o milter_macro_daemon_name=ORIGINATING

Обращаю внимание на пробел в начале строки, начиная со второй. Его надо обязательно оставить. Добавляем еще настройки для того, чтобы наш сервер поддерживал протокол SSL/TLS и слушал порт 465

smtps inet n - n - - smtpd
 -o syslog_name=postfix/smtps
 -o smtpd_tls_wrappermode=yes
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
 -o smtpd_relay_restrictions=permit_mynetworks,permit_sasl_authenticated,defer_unauth_destination
 -o milter_macro_daemon_name=ORIGINATING

В этот же файл добавляем еще одну настройку, которая будет указывать postfix, что доставкой почты у нас будет заниматься dovecot, который мы настроим следом. Добавляем в master.cf в самый конец.

dovecot unix - n n - - pipe
 flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}

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

Создаем директорию и сами сертификаты:

# mkdir /etc/postfix/certs
# openssl req -new -x509 -days 3650 -nodes -out /etc/postfix/certs/cert.pem -keyout /etc/postfix/certs/key.pem

Для генерации вам зададут несколько вопросов по поводу данных о сертификате. В принципе, можете там писать все, что угодно. Вот мои данные.

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

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

# mcedit /etc/postfix/recipient_bcc_maps
@zeroxzed.ru all_in@zeroxzed.ru
# mcedit /etc/postfix/sender_bcc_maps
@zeroxzed.ru all_out@zeroxzed.ru

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

# postmap /etc/postfix/recipient_bcc_maps /etc/postfix/sender_bcc_maps

Теперь создайте два почтовых ящика all_in@zeroxzed.ru и all_out@zeroxzed.ru через postfixadmin.

Немного поясню по этим ящикам - для чего они нужны. Изначально я их делал, когда пользователи использовали протокол pop3 без сохранения писем на сервере. Это позволяло организовать бэкап всей переписки. Эти ящики очень быстро заполняются и занимают огромный объем, поэтому их обязательно надо чистить. Я просто скриптами регулярно собирал всю почту в архивы с именами в виде дат. Если нужно было какое-то письмо найти, то просто распаковывал нужный архив.

В случае с imap роль бэкапа отпадает, так как вся почта хранится на сервере. Но эти ящики все равно бывают полезны, когда пользователь, к примеру, удалил какое-то важное письмо и потом делает вид, что его и не было. Если это письмо пришло только сегодня и еще не успело улететь в бэкап, то кроме записи в логах об этом письме, вы не увидите само содержимое. А с такими ящиками все сразу будет понятно, и вопросы отпадут. Последнее применение - служба безопасности. Если у вас есть кто-то, кому положено читать всю переписку, то реализовать этот функционал можно таким простым способом.

Все основные настройки для postfix мы сделали. Некоторые из них завязаны на работу с dovecot, который мы еще не настроили. Поэтому больше postfix не трогаем, не перезапускаем. Идем настраивать dovecot - imap сервер нашей почтовой системы.

Настройка dovecot

Займемся настройкой dovecot - сервер доставки почты пользователю по протоколам pop3 и imap. Я не вижу причин использовать pop3. Он неудобен по сравнению с imap. Чаще всего pop3 отключаю вовсе. Но это уже на ваше усмотрение. Приведу пример с настройкой обоих протоколов. Помимо основного функционала по доставке почты, я настрою несколько полезных плагинов. Расскажу о них поподробнее:

  • Sieve - выполняет фильтрацию почты по заданным правилам в момент локальной доставки на почтовом сервере. Удобство такого подхода в том, что вы один раз можете настроить правило сортировки, и оно будет работать во всех клиентах, которыми вы будете получать почту по imap. Правила создаются, хранятся и исполняются на самом сервере.
  • Acl - позволяет пользователям расшаривать папки в своем почтовом ящике и предоставлять доступ к этим папкам другим пользователям. Не часто видел, чтобы этот функционал настраивали и использовали. Думаю, просто по незнанию. По мне так очень удобный и полезный функционал.

Часто вижу, что люди настраивают плагин quota, который позволяет ограничивать максимальный размер почтового ящика. Я лично в своей работе его не использую. Возможно, когда у тебя клиентов сотни и тысячи это имеет значение и надо обязательно настроить ограничение. Когда же ящиков меньше, нет смысла напрягать людей постоянной чисткой. Сейчас диски стоят не так дорого. Мне кажется, проще и дешевле увеличить место на сервере, нежели постоянно беспокоить пользователей необходимостью чистки ящика. Лучше ограничить максимальный размер письма, скажем 20-ю мегабайтами. Тогда сильно забить ящик даже при большом желании быстро не получится. А почта все-таки важный инструмент в работе. Мне кажется, ее лучше хранить как можно дольше.

Есть еще один полезный плагин expire, который позволяет удалять устаревшие письма в определенных папках. Например, удалять все письма старше 30-ти дней в корзине и папке со спамом. Но реально пользоваться им не получается по простой причине. Разные почтовые клиенты создают различные папки для корзины и спама. Thunderbird создает папки с латинскими именами trash и spam, outlook с русскими, которые на почтовом сервере преобразуются в кодировку UTF7, мобильные клиенты тоже используют разные имена папок. В итоге нет единообразия, плагин полноценно не работает.

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

Небольшую теорию я дал, теперь переходим к практике. Устанавливаем необходимые для dovecot пакеты.

# yum install dovecot dovecot-mysql dovecot-pigeonhole

Изначально конфиг dovecot разбит на отдельные сегменты и лежат в директории /etc/dovecot/conf.d. Каждый файл - отдельный функционал. Мне не нравится прыгать по файлам, поэтому я храню все в едином общем файле конфигурации /etc/dovecot/dovecot.conf. С ним мы и будем работать. Приводим его к следующему виду.

# mcedit /etc/dovecot/dovecot.conf
listen = * [::]

mail_plugins = mailbox_alias acl

protocols = imap pop3 sieve lmtp

mail_uid = 1000
mail_gid = 1000

first_valid_uid = 1000
last_valid_uid = 1000

log_path = /var/log/dovecot/main.log
info_log_path = /var/log/dovecot/info.log
debug_log_path = /var/log/dovecot/debug.log

ssl_protocols = !SSLv2 !SSLv3
ssl = required
verbose_ssl = no
ssl_cert = </etc/postfix/certs/cert.pem
ssl_key = </etc/postfix/certs/key.pem

ssl_cipher_list = ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
ssl_dh_parameters_length = 2048
ssl_prefer_server_ciphers = yes

disable_plaintext_auth = yes

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

auth_default_realm = zeroxzed.ru

auth_mechanisms = PLAIN LOGIN

service auth {
 unix_listener /var/spool/postfix/private/dovecot-auth {
 user = postfix
 group = postfix
 mode = 0666
 }
unix_listener auth-master {
 user = vmail
 group = vmail
 mode = 0666
 }

unix_listener auth-userdb {
 user = vmail
 group = vmail
 mode = 0660
 }
}

service lmtp {
 unix_listener /var/spool/postfix/private/dovecot-lmtp {
 user = postfix
 group = postfix
 mode = 0600
 }

 inet_listener lmtp {
 address = 127.0.0.1
 port = 24
 }
}

userdb {
 args = /etc/dovecot/dovecot-mysql.conf
 driver = sql
 }

passdb {
 args = /etc/dovecot/dovecot-mysql.conf
 driver = sql
 }

auth_master_user_separator = *
 
plugin {
 auth_socket_path = /var/run/dovecot/auth-master

 acl = vfile
 acl_shared_dict = file:/mnt/mail/shared-folders/shared-mailboxes.db
 sieve = /mnt/mail/sieve/%u.sieve
 mailbox_alias_old = Sent
 mailbox_alias_new = Sent Messages
 mailbox_alias_old2 = Sent
 mailbox_alias_new2 = Sent Items
}

protocol lda {
 mail_plugins = $mail_plugins sieve
 auth_socket_path = /var/run/dovecot/auth-master
 deliver_log_format = mail from %f: msgid=%m %$
 log_path = /var/log/dovecot/lda-errors.log
 info_log_path = /var/log/dovecot/lda-deliver.log
 lda_mailbox_autocreate = yes
 lda_mailbox_autosubscribe = yes
 postmaster_address = root
}

protocol lmtp {
 info_log_path = /var/log/dovecot/lmtp.log
 mail_plugins = quota sieve
 postmaster_address = postmaster
 lmtp_save_to_detail_mailbox = yes
 recipient_delimiter = +
}

protocol imap {
 mail_plugins = $mail_plugins imap_acl
 imap_client_workarounds = tb-extra-mailbox-sep
 mail_max_userip_connections = 30
}

protocol pop3 {
 mail_plugins = $mail_plugins
 pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
 pop3_uidl_format = %08Xu%08Xv
 mail_max_userip_connections = 30
}

service imap-login {
 service_count = 1
 process_limit = 500
 }

service pop3-login {
 service_count = 1
 }

service managesieve-login {
 inet_listener sieve {
 port = 4190
 }
}

namespace {
 type = private
 separator = /
 prefix =
 inbox = yes

 mailbox Sent {
 auto = subscribe
 special_use = \Sent
 }
 mailbox "Sent Messages" {
 auto = no
 special_use = \Sent
 }
 mailbox "Sent Items" {
 auto = no
 special_use = \Sent
 }
 mailbox Drafts {
 auto = subscribe
 special_use = \Drafts
 }
 mailbox Trash {
 auto = subscribe
 special_use = \Trash
 }
 mailbox "Deleted Messages" {
 auto = no
 special_use = \Trash
 }
 mailbox Junk {
 auto = subscribe
 special_use = \Junk
 }
 mailbox Spam {
 auto = no
 special_use = \Junk
 }
 mailbox "Junk E-mail" {
 auto = no
 special_use = \Junk
 }
 mailbox Archive {
 auto = no
 special_use = \Archive
 }
 mailbox Archives {
 auto = no
 special_use = \Archive
 }
}

namespace {
 type = shared
 separator = /
 prefix = Shared/%%u/
 location = maildir:%%h:INDEX=%h/shared/%%u
 subscriptions = yes
 list = children
}

Создаем группу и пользователя с указанными в конфиге uid 1000.

# groupadd  -g 1000 vmail
# useradd -d /mnt/mail/ -g 1000 -u 1000 vmail
# chown vmail. /mnt/mail

Создаем конфигурационные файлы для доступа к mysql базе.

# mcedit /etc/dovecot/dovecot-mysql.conf
driver = mysql
default_pass_scheme = CRYPT
connect = host=127.0.0.1 dbname=postfix user=postfix password=12345678
user_query = SELECT '/mnt/mail/%d/%u' as home, 'maildir:/mnt/mail/%d/%u' as mail, 1000 AS uid, 1000 AS gid, concat('*:bytes=', quota) AS quota_rule FROM mailbox WHERE username = '%u' AND active = '1'
password_query = SELECT username as user, password, '/mnt/mail/%d/%u' as userdb_home, 'maildir:/mnt/mail/%d/%u' as userdb_mail, 1000 as userdb_uid, 1000 as userdb_gid, concat('*:bytes=', quota) AS userdb_quota_rule FROM mailbox WHERE username = '%u' AND active = '1'

Создадим директорию и файлы для логов.

# mkdir /var/log/dovecot
# cd /var/log/dovecot && touch main.log info.log debug.log lda-errors.log lda-deliver.log lmtp.log
# chown -R vmail:dovecot /var/log/dovecot

Создаем пару служебных папок для плагинов sieve и acl.

# mkdir /mnt/mail/sieve && mkdir /mnt/mail/shared-folders
# chown -R vmail. /mnt/mail

И небольшой штрих в завершении настройки.

# chown vmail. /var/run/dovecot/auth-master

Уже не помню, зачем это было нужно, запись осталась в черновиках. Знаю только, что какая-то ошибка всплывала без этого.

На этом основная настройка почтового сервера на базе postfix и dovecot завершена. Можно перезапускать службы и проверять работу системы.

# systemctl restart postfix
# systemctl start dovecot
# systemctl enable dovecot

Проверка работы почтового сервера

Самаый простой и быстрый способ проверить работу почтового сервера - отправить на него письмо. Я буду отправлять со своего почтового адреса zeroxzed@gmail.com на адрес root@zeroxzed.ru. Вот что должно быть в логе, если у вас все правильно настроено и почтовый сервер нормально работает.

# cat /var/log/maillog
Mar 10 21:56:27 mail postfix/smtpd[28075]: connect from mail-yw0-f172.google.com[209.85.161.172]
Mar 10 21:56:28 mail postfix/smtpd[28075]: Anonymous TLS connection established from mail-yw0-f172.google.com[209.85.161.172]: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)
Mar 10 21:56:28 mail postfix/smtpd[28075]: D4263420BB7B: client=mail-yw0-f172.google.com[209.85.161.172]
Mar 10 21:56:29 mail postfix/cleanup[28086]: D4263420BB7B: message-id=<CAHWPLcOeqf6uNHRg34+wuppDUGPDLY=fp8s-E=o9fmxYMS48cQ@mail.gmail.com>
Mar 10 21:56:29 mail postfix/qmgr[28042]: D4263420BB7B: from=<zeroxzed@gmail.com>, size=2533, nrcpt=2 (queue active)
Mar 10 21:56:29 mail postfix/pipe[28089]: D4263420BB7B: to=<all_in@zeroxzed.ru>, relay=dovecot, delay=0.39, delays=0.33/0.02/0/0.05, dsn=2.0.0, status=sent (delivered via dovecot service)
Mar 10 21:56:29 mail postfix/pipe[28090]: D4263420BB7B: to=<root@zeroxzed.ru>, relay=dovecot, delay=0.4, delays=0.33/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Mar 10 21:56:29 mail postfix/qmgr[28042]: D4263420BB7B: removed
Mar 10 21:56:29 mail postfix/smtpd[28075]: disconnect from mail-yw0-f172.google.com[209.85.161.172]

Пояснять тут нечего, по логу все понятно. Письмо было доставлено в указанный ящик и в общий ящик для сбора всей входящей почты. В директории /mnt/mail была создана директория с именем домена zeroxzed.ru, а в ней созданы 3 папки с именами ящиков:

  • all_in@zeroxzed.ru
  • all_out@zeroxzed.ru
  • root@zeroxzed.ru

Директории с почтовыми ящиками создаются в момент получения первого письма в ящик. Непрочитанное письмо помещается в директорию /new в почтовом ящике. После прочтения переносится в /cur.

Попробуем теперь подключиться к почтовому ящику по imap, прочитать письмо и отправить ответ. Настроим любой почтовый клиент для проверки работы настроенного почтового сервера. Я для этих целей буду использовать Thunderbird. Из всех почтовых клиентов мне он нравится больше всего. В основном из-за его портированной версии. Указываем следующие настройки.

Настройка подключения к почтовому серверу

Так как мы используем самоподписанный сертификат ssl, почтовый клиент предупредит нас о том, что серверу нельзя доверять.

Добавление ssl сертификата в исключения

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

Я подключился к почтовому ящику и увидел тестовые письма. Отвечу на одно из них и посмотрю в логе, как прошла отправка. У меня еще раз выскочило окно с предупреждением о небезопасном сертификате. Еще раз добавляю его в исключения. Это нормально, сертификат проверяется во время получения почты в dovecot, а во время отправки в postfix. Так что нужны 2 подтверждения. Отправляю письмо еще раз и смотрю лог.

# cat /var/log/maillog
Mar 10 22:10:12 mail postfix/smtpd[28764]: connect from broadband-75-37-235-139.moscow.gw.ru[75.37.235.139]
Mar 10 22:10:12 mail postfix/smtpd[28764]: Anonymous TLS connection established from broadband-75-37-235-139.moscow.gw.ru[75.37.235.139]: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)
Mar 10 22:10:12 mail postfix/smtpd[28764]: B24C2420BB70: client=broadband-75-37-235-139.moscow.gw.ru[75.37.235.139], sasl_method=PLAIN, sasl_username=root@zeroxzed.ru
Mar 10 22:10:12 mail postfix/cleanup[28779]: B24C2420BB70: message-id=<aaac96c3-197e-c6bd-4dfe-85d09bce216a@zeroxzed.ru>
Mar 10 22:10:12 mail postfix/qmgr[28042]: B24C2420BB70: from=<root@zeroxzed.ru>, size=955, nrcpt=2 (queue active)
Mar 10 22:10:12 mail postfix/smtpd[28764]: disconnect from broadband-75-37-235-139.moscow.gw.ru[75.37.235.139]
Mar 10 22:10:12 mail postfix/pipe[28784]: B24C2420BB70: to=<all_out@zeroxzed.ru>, relay=dovecot, delay=0.14, delays=0.07/0.01/0/0.06, dsn=2.0.0, status=sent (delivered via dovecot service)
Mar 10 22:10:13 mail postfix/smtp[28783]: B24C2420BB70: to=<zeroxzed@gmail.com>, relay=gmail-smtp-in.l.google.com[64.233.163.26]:25, delay=0.62, delays=0.07/0.01/0.28/0.26, dsn=2.0.0, status=sent (250 2.0.0 OK 1489173013 13si2106703ljv.3 - gsmtp)
Mar 10 22:10:13 mail postfix/qmgr[28042]: B24C2420BB70: removed

Все в порядке. Видно подключение с моего ip, успешную sasl авторизацию, формирование письма на сервере, присваивание ему message-id, отправка копии письма в ящик для сбора исходящей почты и отправка оригинала в ящик получателя. Все этапы прошли без ошибок.

Расскажу, куда еще надо смотреть для отладки почтовой системы. Да и не только отладки, во время работы периодически придется разбираться, куда ушло то или иное письмо, кто и когда подключался к ящику. Разные ситуации бывают. В файле /var/log/dovecot/lda-deliver.log содержится информация обо всех пришедших письмах - когда, от кого и в какой ящик было положено.

Mar 10 22:25:29 lda(all_in@zeroxzed.ru): Info: mail from zeroxzed@gmail.com: msgid=<CAHWPLcNG=WMOoWW2Y_Lw4qn9+V4TOrbxZpwtA=O+CSEBaiwuBg@mail.gmail.com> saved mail to INBOX
Mar 10 22:25:29 lda(root@zeroxzed.ru): Info: mail from zeroxzed@gmail.com: msgid=<CAHWPLcNG=WMOoWW2Y_Lw4qn9+V4TOrbxZpwtA=O+CSEBaiwuBg@mail.gmail.com> saved mail to INBOX
Mar 10 22:25:49 lda(all_out@zeroxzed.ru): Info: mail from root@zeroxzed.ru: msgid=<75358e4d-7c8e-24c2-a21f-7ee0df2a4704@zeroxzed.ru> saved mail to INBOX

В /var/log/dovecot/info.log информация о подключениях к почтовым ящикам - кто, когда, откуда и каким способом авторизовывался на сервере.

Mar 10 22:10:20 imap-login: Info: Login: user=<root@zeroxzed.ru>, method=PLAIN, rip=75.37.235.139, lip=188.35.19.125, mpid=28790, TLS, session=<3tDeHGVKpQBNJeCL>
Mar 10 22:19:39 imap-login: Info: Login: user=<root@zeroxzed.ru>, method=PLAIN, rip=75.37.235.139, lip=188.35.19.125, mpid=29248, TLS, session=<7VY8PmVKbwBNJeCL>

Остальное уже не так полезно. Сами посмотрите, что собирается в остальных лог файлах.

На текущий момент сервер полностью работоспособен. В таком виде им без проблем можно пользоваться. Но функционал полностью не раскрыт. Использовать плагины sieve и acl через удаленные почтовые клиенты неудобно. Проще всего их настроить через web почту roundcube. Установим эту web панель на наш почтовый сервер.

Установка web интерфейса roundcube

Установим и настроим самый популярный web интерфейс для postfix - roundcube. Скачиваем исходники.

# cd /usr/src
# wget https://github.com/roundcube/roundcubemail/releases/download/1.2.9/roundcubemail-1.2.3-complete.tar.gz
Не забудьте проверить в момент установки, какая версия является самой свежей на текущий момент. Нет необходимости устанавливать устаревшую версию. Рекомендую ставить самую последнюю на момент настройки.
# yum install php-pear php-mcrypt php-intl php-ldap php-pear-Net-SMTP php-pear-Net-IDNA2 php-pear-Mail-Mime php-pear-Net-Sieve
# tar -xzvf roundcubemail-*
# mv roundcubemail-1.2.9 /var/www/html/webmail
# chown -R apache. /var/www/html/webmail

Переходим в браузер по следующей ссылке для установки roundcube - http://188.35.19.125/webmail/installer/. Вы увидите несколько незначительных замечаний. На них можно не обращать внимание, если установщик позволяет нажать кнопку NEXT. Единственное, рекомендую установить правильный часовой пояс в /etc/php.ini и перезапустить после этого httpd.

На следующем этапе нам надо указать настройки подключения к mysql базе. Предварительно ее следует создать через phpmyadmin. Я создал пользователя roundcube и такую же базу с полными правами пользователя на нее. Эти параметры указал в настройках.

Установка roundcube

Так же на этой странице нужно будет указать несколько параметров:

  • smtp_server - пусто (ничего не пишем)
  • language - ru_RU
  • Выбираем плагины - managesieve, userinfo, acl. Остальные на свое усмотрение.

Жмем CREATE CONFIG. Должны увидеть сообщение:

The config file was saved successfully into RCMAIL_CONFIG_DIR directory of your Roundcube installation.

Жмем CONTINUE. Открывается страница с проверкой настроек. Тут проверять неудобно, можно этого не делать. Зайдем в почтовый ящик и там все проверим. Если что, конфиг потом все равно можно вручную отредактировать. Папку /var/www/html/webmail/installer удаляем. Заходим в почтовый ящик через roundcube - http://188.35.19.125/webmail/ Набирать нужно полное имя ящика и пароль. Если все сделали правильно, должны попасть в свой почтовый ящик.

Вход в почтовый ящик через roundcube

Ну вот и все. Можно пользоваться web интерфейсом для почтового сервера. У меня есть статья по настройке мобильной версии roundcube. Рекомендую ее настроить, если есть необходимость. Тема качественная и добротная. Пользоваться удобно.

Дальше рассмотрим настройку и использование плагинов acl и sieve с помощью roundcube.

Настройка фильтра почты sieve

Sieve очень удобная штука, но вот хорошего интерфейса для управления через почтовый клиент я не знаю. Существует плагин для thunderbird, который так и называется sieve. Но лично мне он не понравился вообще, так как предлагает писать правила определенным кодом. Для этого надо знать синтаксис, тратить время. Можете сами на него посмотреть - https://github.com/thsmi/sieve.

К счастью, есть удобный способ писать правила фильтрации для sieve через roundcube. Там это реализовано отдельным плагином managesieve, который мы активировали во время установки. Для создания правила фильтрации, зайдите в свой почтовый ящик через roundcube. Переходите в раздел Настройки -> Фильтры и создавайте новое правило.

Настройка фильтра почты в roundcube

После этого письма будут обрабатываться правилом сразу после поступления в почтовый сервер, в независимости от вашего подключения к ящику. В папке /mnt/mail/sieve появилась запись с настроенным правилом. Можете познакомиться с синтаксисом написания правил. Он не сложный.

Настройка автоответчика

В roundcube есть замечательная возможность настроить автоответчик в почтовом ящике. Это актуально, к примеру, если вы уходите в отпуск. Вы можете сами настроить автоответчик, который будет отправлять письмо с указанной вами информацией всем, от кого будут приходить письма в ваш ящик. Возможность эта реализована на базе того же плагина managesieve. По-умолчанию она отключена. Активировать ее нужно вручную.

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

# mcedit /var/www/html/webmail/plugins/managesieve/config.inc.php

Изменяем там параметр:

$config['managesieve_vacation'] = 1;

После этого достаточно просто обновить веб интерфейс roundcube, и появятся новые настройки по адресу Настройки -> Отпуск

Настройка автоответчика

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

Общие папки по imap

Рассмотрим настройку необычного и полезного функционала в виде общих папок. С их помощью один пользователь почтового ящика может предоставить другому пользователю доступ к папке внутри своего почтового ящика. Где и как использовать этот функционал, каждый может придумать сам, в зависимости от своих потребностей. Мне кажется это удобным в том случае, когда создан какой-то общий ящик, на который только поступает информация и нет необходимости писать ответ от его имени. То есть по сути работает как обычный почтовый алиас. Но в случае с алиасом и несколькими почтовыми ящиками, письмо падает в каждый ящик. Если таких писем и получателей много, то идет большое дублирование одного и того же письма в рамках почтового сервера. Если сделать ящик и расшарить на нем папку, подключить ее всем пользователям, то дублирования почты не будет. Каждый сможет прочитать письмо, без необходимости его доставки в каждый конкретный ящик.

Настроим общую папку imap. Хотя настраивать нам, по сути, нечего. Мы уже все настроили ранее. Добавили соответствующие настройки в dovecot и активировали плагин acl в roundcube. Теперь нужно просто сделать папку и открыть ее для другого пользователя. Для этого идем в раздел Настройки -> Папки. Создаем там любую папку. В моем случае это папка с названием Общая.

Настройка общей папки imap

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

  • чтение
  • запись
  • удаление

Права доступа на общую папку imap

Заходим в ящик, которому добавили общий доступ и проверяем.

Проверка общей папки

Все в порядке, общая папка imap настроена и подключена. В папке /mnt/mail/shared-folders появился файл с настроенным выше правилом.

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

Настройка dkim и spf

Напишу своими словами как я понимаю работу dkim. С помощью dkim вся исходящая почта сервера подписывается электронной цифровой подписью, связанной с именем домена. Открытый ключ шифрования с помощью DNS публикуется в txt записи. Таким образом, удаленный сервер, при получении письма от вас, сравнивает цифровую подпись с опубликованным в dns открытым ключом вашего домена. Если все в порядке, то считает, что ваше письмо в самом деле пришло от вас, а не от мошенников. То есть с помощью этой технологии можно однозначно идентифицировать отправителя.

Некоторые считают, что эта технология помогает бороться со спамом. Не знаю, насколько это верно. Спамеру не составит большого труда настроить на своем сервере dkim и отправлять спам, но подписанный электронной цифровой подписью. Теоретически, dkim помогает защититься от подделки адреса отправителя, когда письмо якобы от вас шлет совсем другой сервер. Но с этим можно бороться и другими способами. В общем, я до конца не понимаю, зачем это надо. Прошу поделиться в комментариях тем, к кого есть бОльший опыт. Я только недавно стал шагать в ногу со временем и настраивать dkim. Раньше всегда без него обходился.

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

Для настройки dkim устанавливаем соответствующий пакет:

# yum install opendkim

Создаем директорию для хранения ключей:

# mkdir -p /etc/postfix/dkim && cd /etc/postfix/dkim

Генерируем ключи для домена:

# opendkim-genkey -D /etc/postfix/dkim/ -d zeroxzed.ru -s mail
zeroxzed.ru имя почтового домена
mail непосредственно имя сервера

На выходе получаете пару файлов - закрытый (приватный) и открытый ключ. Закрытый останется на сервере, открытый будет опубликован в dns. Переименуем их сразу, чтобы не путаться, если у вас будет несколько доменов. Ключи нужно будет делать для каждого домена.

# mv mail.private mail.zeroxzed.ru.private
# mv mail.txt mail.zeroxzed.ru.txt

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

# mcedit keytable
mail._domainkey.zeroxzed.ru zeroxzed.ru:mail:/etc/postfix/dkim/mail.zeroxzed.ru.private

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

# mcedit signingtable
*@zeroxzed.ru mail._domainkey.zeroxzed.ru

Выставляем права доступа на все файлы:

# chown root:opendkim *
# chmod u=rw,g=r,o= *

Рисуем конфиг службы.

# mcedit /etc/opendkim.conf
AutoRestart Yes
AutoRestartRate 10/1h
PidFile /var/run/opendkim/opendkim.pid
Mode sv
Syslog yes
SyslogSuccess yes
LogWhy yes
UserID opendkim:opendkim
Socket inet:8891@localhost
Umask 022
Canonicalization relaxed/relaxed
Selector default
MinimumKeyBits 1024
KeyFile /etc/postfix/dkim/mail.zeroxzed.ru.private
KeyTable /etc/postfix/dkim/keytable
SigningTable refile:/etc/postfix/dkim/signingtable

Добавляем в конфигурационный файл postfix в самый конец следующие параметры:

# mcedit /etc/postfix/main.cf
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
milter_protocol = 2

Перезапускаем postfix и dkim, последний добавляем в автозагрузку.

# systemctl restart postfix
# systemctl restart opendkim.service
# systemctl enable opendkim.service

Теперь нам надо добавить открытый ключ в dns. Идем в консоль управления dns и добавляем новую txt запись. Ее содержание берем из файла /etc/postfix/dkim/mail.zeroxzed.ru.txt

cat /etc/postfix/dkim/mail.zeroxzed.ru.txt
mail._domainkey IN TXT ( "v=DKIM1; k=rsa; "
 "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQClZX2xWRDISlVLF4b4pUiinY5N9WN7VXEHeyPw8smHTamXh35wJoh+j0+MIQDWG/KtdCcETeawTuypXbvtbneXniYR0iiv6kt754T2WXBjz7O/uHL+vK58LhJsm4TGyhUN6ZBit+w22jG92zdeybSZeU/g7hQdkaAAi0I+0nIkUwIDAQAB" ) ; ----- DKIM key mail for zeroxzed.ru

Убираем кавычки, лишние проблемы и вставляем. Должно получиться вот так:

Настройка dkim записи в dns

Проверяю работу. Отправляю письмо на gmail и смотрю лог почтового сервера:

# cat /var/log/maillog
Mar 17 17:40:26 mail postfix/smtpd[22352]: connect from localhost[127.0.0.1]
Mar 17 17:40:26 mail postfix/smtpd[22352]: BB1794195584: client=localhost[127.0.0.1]
Mar 17 17:40:26 mail postfix/cleanup[22364]: BB1794195584: message-id=<baf63dcec016594d49f2d80f815e5d26@zeroxzed.ru>
Mar 17 17:40:26 mail opendkim[21744]: BB1794195584: DKIM-Signature field added (s=mail, d=zeroxzed.ru)
Mar 17 17:40:26 mail postfix/qmgr[21990]: BB1794195584: from=<root@zeroxzed.ru>, size=593, nrcpt=2 (queue active)
Mar 17 17:40:26 mail postfix/pipe[22369]: BB1794195584: to=<all_out@zeroxzed.ru>, relay=dovecot, delay=0.14, delays=0.11/0.02/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Mar 17 17:40:26 mail postfix/smtpd[22352]: disconnect from localhost[127.0.0.1]
Mar 17 17:40:27 mail postfix/smtp[22370]: BB1794195584: to=<zeroxzed@gmail.com>, relay=gmail-smtp-in.l.google.com[64.233.163.26]:25, delay=0.84, delays=0.11/0.02/0.31/0.4, dsn=2.0.0, status=sent (250 2.0.0 OK 1489761627 185si4568435lfa.398 - gsmtp)

Все в порядке, электронная цифровая подпись установлена. Проверим, как гугл отреагировал на нашу подпись:

Проверка dkim

Тоже все в порядке. Подпись выполнена корректно, проверку прошла. Дополнительно, проверить корректность dkim записи в dns можно онлайн сервисом - http://dkimcore.org/c/keycheck.

Настроим еще одно средство для повышения доверия к нашей почте со стороны других серверов - spf. Расскажу опять своими словами для чего это нужно. Spf запись добавляется в виде txt записи в dns вашего домена. С помощью этой записи вы указываете, какие ip адреса имеют право отправлять почту от вашего имени. Если кто-то из спамеров будет использовать ваше имя домена при рассылке спама, он не пройдет проверку по spf и скорее всего будет идентифицирован как спам.

Можно указать конкретные ip адреса в записи, а можно сказать, чтобы ip адреса проверялись по спискам A и MX записей. У нас простой случай и только 1 сервер с одним ip, поэтому укажем конкретно этот ip адрес. Идем в панель управления dns и добавляем новую txt запись.

zeroxzed.ru. TXT v=spf1 ip4:188.35.19.125 ~all

Добавление spf записи в dns

Больше ничего делать не надо. Снова отправляем письмо на gmail и смотрим логи.

Проверка spf записи

Обращаю внимание на прошлый скрин, когда мы проверяли dkim и еще не настроили spf, и этот. Видно, что запись работает, гугл определил наш ip, как доверенный для отправки писем с этого домена.

Дополнительный функционал почтового сервера postfix

Я рассмотрел и настроил наиболее актуальный с моей точки зрения функционал почтового сервера. В статье я основывался исключительно на своем опыте работы с почтой в малых и средних организациях, поэтому не претендую на истину в последней инстанции. Рекомендую осмысленно подходить к настройке своего сервера и решать, что нужно именно вам. Будет хорошо, если кто-то укажет на мои ошибки или подскажет какие-то более удобные и эффективные приемы для решения затронутых задач.

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

  1. Защиту от подбора паролей с помощью fail2ban.
  2. Мониторинг почтового сервера postfix с помощью zabbix.
  3. Сбор статистики с помощью pflogsumm или чего-то подобного.
  4. Просмотр и анализ логов с помощью webmin.
  5. Использование бесплатных сертификатов let's encrypt.
  6. Регулярную очистку служебных почтовых ящиков.
  7. Бэкап всей почтовой базы.

Расскажу еще почему я не настраиваю некоторые популярные программы, которые использую на почтовых серверах:

  1. Clamav - известный антивирус. Считаю, что сейчас он не актуален, так как вирусов, от которых он способен защитить, я уже давно не видел. Сейчас вирусная эпидемия шифровальщиков. От них он не защищает.
  2. Spamassasin - популярный бесплатный антиспам фильтр. Скажу честно, работал с ним очень мало и могу быть не объективен. Насколько я видел его настройку и работу - он требует к себе некоторого внимания, калибровки, особенно на начальном этапе. Мне обычно не хочется этим заниматься.
  3. Graylist - эффективное средство борьбы со спамом. Я уже подробно его рассматривал, когда писал про iredmail, так что не буду повторяться. Скажу лишь, что режет спам очень эффективно и бесплатно, но есть существенные неудобства, которые по моему мнению не перекрывают плюсы. Поэтому я не использую.

В качестве антиспама я предпочитаю коммерческое решение - Kaspersky Anti-Spam. Я знаю этот продукт уже лет 8. Он действительно отлично фильтрует спам. Ложных срабатываний вообще не припоминаю, 95% спама фильтрует, может больше. С ним вопрос спама отпадает вообще. Стоит он недорого, можно купить лицензию на меньшее количество ящиков, чем реально используется в системе. Этот вопрос никак не отслеживается и на качество работы не влияет. Но нужно понимать, что это уже нарушение лицензионного соглашения. Но можно всякие хитрости придумать, чтобы и фильтровать и не нарушать.

Борьба со спамом средствами postfix

Сначала хотел сразу все настройки postfix разместить в соответствующем разделе в едином конфиге, но потом передумал и решил все же вынести этот вопрос на отдельное рассмотрение. Возможно, не каждому захочется сразу в эту тему углубляться. Все, что рассказано выше, позволит настроить полноценный почтовый сервер, который будет успешно принимать почту и доставлять ее пользователям. Но в таком виде он будет принимать слишком много спама, но зато не будет проблем с тем, что от кого-то что-то не придет. Как ни крути, но все средства борьбы со спамом так или иначе несут накладные расходы в виде ложных срабатываний с той или иной вероятностью. Если вы решите не заморачиваться и купить Kaspersky Anti-Spam, можете этот раздел не читать. Он сам реализует все те проверки, что мы будем делать. Если же хотите своими силами бороться со спамом средствами postfix, то давайте дальше разбираться.

Я буду использовать штатные возможности postfix, позволяющие отсеять спам по тем или иным параметрам еще до получения письма. Это очень эффективный способ с точки зрения производительности. Благодаря этому, правильно настроенный на отсев спама postfix часто ставят перед exchange, чтобы снизить на него нагрузку. Сразу дам ссылки на официальную документацию с описанием параметров, которые я буду использовать:

  1. smtpd_helo_restrictions
  2. smtpd_sender_restrictions
  3. smtpd_recipient_restrictions
  4. smtpd_data_restrictions
  5. smtpd_client_restrictions

Есть еще парочка - smtpd_etrn_restrictions и smtpd_end_of_data_restrictions, но я ими не пользуюсь.

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

Долго думал, как лучше всего представить информацию по этому разделу. В итоге решил просто написать часть конфига, которая отвечает за restrictions с комментариями. Более подробную информацию по каждой настройке вы можете найти в официальной документации postfix, ссылки я привел выше, либо в гугле. Данные настройки это моя многолетняя калькуляция различных параметров, собранных из черновиков и рабочих серверов. Не везде все было настроено именно в таком виде, так как ситуации бывают разные. Сейчас я постарался все собрать в одном месте и аккуратно описать. Те проверки в борьбе со спамом, что вам не нужны, просто закомментируйте. В конце я еще пройдусь по некоторым из них и поделюсь своим опытом.

#Описание списков исключений
smtpd_restriction_classes = white_client_ip,
                            black_client_ip,
                            block_dsl,
                            white_client,
                            white_helo,
                            black_client,
                            mx_access

# IP адреса, которые нужно пропускать всегда
white_client_ip		= check_client_access hash:/etc/postfix/lists/white_client_ip

# IP адреса, которые нужно блокировать всегда
black_client_ip		= check_client_access hash:/etc/postfix/lists/black_client_ip

# E-mail, которые нужно пропускать всегда
white_client		= check_sender_access hash:/etc/postfix/lists/white_client

# E-mail, которые нужно блокировать всегда
black_client		= check_sender_access hash:/etc/postfix/lists/black_client

# Неправильные значения HELO, которые мы тем не менее принимаем
white_helo = check_sender_access hash:/etc/postfix/lists/white_helo
# Правила для блокировки различных динамических ip.
block_dsl 		= check_client_access regexp:/etc/postfix/lists/block_dsl

# Список приватных сетей, которые не могут быть использованы в качестве IP для MX записей
mx_access		= check_sender_mx_access cidr:/etc/postfix/lists/mx_access

# Проверки на основе данных, переданных в HELO/EHLO hostname
smtpd_helo_restrictions =	permit_mynetworks,
		permit_sasl_authenticated,
		white_client_ip,
                white_helo,
		black_client_ip,
		block_dsl,
		# Отказываем серверам, у которых в HELO несуществующий или не FQDN адрес 
		reject_invalid_helo_hostname,
		reject_non_fqdn_helo_hostname,
		# Запрещаем приём писем от серверов, представляющихся адресом, для которого не существует A или MX записи.
		reject_unknown_helo_hostname

# Проверки клиентского компьютера или другого почтового сервера, который соединяется с сервером postfix для отправки письма
smtpd_client_restrictions = 	permit_mynetworks,
		permit_sasl_authenticated,
		# Отвергает запрос, когда клиент отправляет команды SMTP раньше времени, еще не зная, поддерживает ли Postfix конвейерную обработку команд ESMTP
		reject_unauth_pipelining,
		# Блокируем клиентов с адресами from, домены которых не имеют A/MX записей
		reject_unknown_address,
		reject_unknown_client_hostname

# Проверки исходящей или пересылаемой через нас почты на основе данных MAIL FROM
smtpd_sender_restrictions =	permit_mynetworks,
		permit_sasl_authenticated,
		white_client,
		black_client,
		# Запрет отправки писем, когда адрес MAIL FROM не совпадает с логином пользователя
		reject_authenticated_sender_login_mismatch,
		# Отклоняем письма от несуществующих доменов
		reject_unknown_sender_domain,
		# Отклоняем письма от доменов в не FQDN формате
		reject_non_fqdn_sender,
		# Отклонение писем с несуществующим адресом отправителя
		reject_unlisted_sender,
		reject_unauth_destination,
		# Отклонять сообщения от отправителей, ящики которых не существуют, использовать аккуратно
		#reject_unverified_sender,
		mx_access

# Правила приема почты нашим сервером на основе данных RCPT TO
smtpd_recipient_restrictions =  permit_mynetworks,
		permit_sasl_authenticated,
		# Отклоняет всю почту, что адресована не для наших доменов
		reject_unauth_destination,
		# Отклонение писем с несуществующим адресом получателя
		reject_unlisted_recipient,
		# Отклоняет сообщения на несуществующие домены
		reject_unknown_recipient_domain,
		# Отклоняет сообщения если получатель не в формате FQDN
		reject_non_fqdn_recipient,
		# Отклоняем прием от отправителя с пустым адресом письма, предназначенным нескольким получателям.
		reject_multi_recipient_bounce

У меня во всех ограничениях первыми правилами стоят разрешения для mynetworks и авторизовавшихся пользователей. Важно понимать, что это значит и для чего сделано. Ограничения читаются последовательно в порядке их перечисления. Таким образом, мы своих пользователей пускаем мимо ограничений, а для всех остальных выполняются проверки.

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

  • reject_invalid_helo_hostname и reject_unknown_helo_hostname - под эти правила иногда попадают почтовые серверы клиентов, которые не очень хорошо настроены. У них бывают неправильные адреса, кривые записи dns, отсутствие обратных зон и т.д. Их не много, но попадаются. Это не страшно, если вы регулярно следите за сервером. Отправитель получит сразу сообщение о том, что его письмо не дошло до вас. Если он как-то сообщит вам о проблеме, вы легко добавите его в белый список и все будет нормально. Если вам не хочется следить за сервером, лучше не указывайте эти ограничения. Но спам они отсекают не плохо. Сюда попадают все завирусованные компьютеры и сервера без нормальных настроек dns (а их чаще всего и нет).
  • reject_unverified_sender - специально его закомментировал. Я тестировал этот параметр. В принципе, работает нормально, но есть, как обычно, нюансы. Поясню, что делает этот параметр. Когда вам кто-то шлет письмо, ваш сервер обращается к серверу отправителю и спрашивает его стандатрной командой, есть ли на сервере такой отправитель. Если удаленный сервер отвечает, что есть, то никаких проблем - письмо принимается. Если удаленный сервер не отвечает или говорит, что такого адресата нет - письмо отклоняем. Очевидно, что такие проверки создают дополнительную постоянную нагрузку. Это нужно учитывать. К тому же, у вас почтовый лог постоянно будет забит этими проверками, особенно, если вам приходит много спама. На каждое спамовое письмо будет идти проверка, а сервера отправителя скорее всего либо нет, либо он неправильный, либо не отвечает и т.д. Все это будет постоянно проверяться и фиксироваться. В общем, я не использую.

На время отладки ограничений, рекомендую пользоваться параметром:

soft_bounce = yes

Когда он включен, все ответы сервера с кодами ошибок 5XX, заменяются на 4ХХ. То есть постоянная ошибка, которая сразу отклоняет письмо, заменяется на временную, которая предлагает повторить отправку позже. Таким образом, вы увидите работу всех ограничений, но письма не будут отклонены навсегда. Сервер отправителя через некоторое время снова придет к вам с новой попыткой доставки почты. Письмо безвозвратно не отклоняется. Вы можете проанализировать работу фильтра и решить, ставить его на постоянную работу или с ним что-то не так.

Создадим теперь файлы с белыми и черными списками.

cd /etc/postfix/lists && touch white_client_ip black_client_ip white_client black_client white_helo block_dsl mx_access

Ниже пример содержания этих файлов. Вы можете менять по своему усмотрению.

# cat white_client_ip
195.28.34.162 OK
141.197.4.160 OK
# cat black_client_ip
205.201.130.163 REJECT You IP are blacklisted!
198.2.129.162 REJECT You IP are blacklisted!
# cat white_client
# Принимать всю почту с домена яндекс
yandex.ru OK
# Разрешить конкретный ящик
spammer@mail.ru OK
# cat black_client
# Блокировать всю почту с домена mail.ru
mail.ru REJECT You domain are blacklisted!
# Блокировать конкретный ящик
spam@rambler.ru REJECT You e-mail are blacklisted!
# cat white_helo
# Могут попадаться вот такие адреса, которые не пройдут наши проверки
ka-s-ex01.itk.local     OK
exchange.elcom.local    OK
# cat block_dsl
/^dsl.*\..*\..*/i                               553 AUTO_DSL spam
/dsl.*\..*\..*/i                                553 AUTO_DSL1 spam
/[ax]dsl.*\..*\..*/i                            553 AUTO_XDSL spam
/client.*\..*\..*/i                             553 AUTO_CLIENT spam
/cable.*\..*\..*/i                              553 AUTO_CABLE spam
/pool.*\..*\..*/i                               553 AUTO_POOL spam
/dial.*\..*\..*/i                               553 AUTO_DIAL spam
/ppp.*\..*\..*/i                                553 AUTO_PPP spam
/dslam.*\..*\..*/i                              553 AUTO_DSLAM spam
/node.*\..*\..*/i                               553 AUTO_NODE spam
/([0-9]*-){3}[0-9]*(\..*){2,}/i                 553 SPAM_ip-add-rr-ess_networks
/([0-9]*\.){4}(.*\.){3,}.*/i                    553 SPAM_ip-add-rr-ess_networks
/.*\.pppool\..*/i                               553 SPAM_POOL
/[0-9]*-[0-9]*-[0-9]*-[0-9]*-tami\.tami\.pl/i   553 SPAM_POOL
/pool-[0-9]*-[0-9]*-[0-9]*-[0-9]*\..*/i         553 SPAM_POOL
/.*-[0-9]*-[0-9]*-[0-9]*-[0-9]*\.gtel.net.mx/i  553 SPAM_POOL
/dhcp.*\..*\..*/i                               553 SPAM_DHCP
# cat mx_access
127.0.0.1      DUNNO 
127.0.0.2      550 Domains not registered properly
0.0.0.0/8      REJECT Domain MX in broadcast network 
10.0.0.0/8     REJECT Domain MX in RFC 1918 private network 
127.0.0.0/8    REJECT Domain MX in loopback network 
169.254.0.0/16 REJECT Domain MX in link local network 
172.16.0.0/12  REJECT Domain MX in RFC 1918 private network 
192.0.2.0/24   REJECT Domain MX in TEST-NET network 
192.168.0.0/16 REJECT Domain MX in RFC 1918 private network 
224.0.0.0/4    REJECT Domain MX in class D multicast network 
240.0.0.0/5    REJECT Domain MX in class E reserved network 
248.0.0.0/5    REJECT Domain MX in reserved network

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

После редактирования файлов обязательно выполняем команду на перестроение базы данных. Я перестрою сразу все файлы:

cd /etc/postfix/lists && postmap white_client_ip black_client_ip white_client black_client white_helo block_dsl mx_access

Еще упомяну о таком популярном явлении в спамерских письмах, как подделка адреса отправителя. Причем не просто подделка на абы кого, а именно на ваше имя домена. Пользователь получает спам письмо и в почтовом клиенте видит, что оно отправлено с вашего домена. Только по заголовкам можно определить реального отправителя. Такой подход позволяет обходить некоторые антиспам системы, которые не фильтруют письма внутреннего домена. Бороться с подменой адреса отправителя в нашем случае очень просто. Для этого в black_client добавим следующую запись:

zeroxzed.ru 554 Stop spam from my name

Отправка с нашего домена осуществляется только с SASL авторизацией, а она во всех ограничениях стоит первой, поэтому письма реальных пользователей без проблем будут уходить. А всех тех, кто только притворяется нашим доменом, мы будет отфильтровывать этим правилом.

Приведу в завершении описания методов борьбы со спамом простой пример. Добавим в black_client почтовый адрес и отправим с него письмо.

# cat black_client
zeroxzed@gmail.com REJECT Your e-mail was banned!
# postmap black_client

Отправляем сообщение и проверяем почтовый лог.

# cat /var/log/maillog
Mar 20 02:21:34 mail postfix/smtpd[10816]: connect from mail-yw0-f177.google.com[209.85.161.177]
Mar 20 02:21:35 mail postfix/smtpd[10816]: Anonymous TLS connection established from mail-yw0-f177.google.com[209.85.161.177]: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)
Mar 20 02:21:35 mail postfix/smtpd[10816]: NOQUEUE: reject: RCPT from mail-yw0-f177.google.com[209.85.161.177]: 554 5.7.1 <zeroxzed@gmail.com>: Sender address rejected: Your e-mail was banned!; from=<zeroxzed@gmail.com> to=<root@zeroxzed.ru> proto=ESMTP helo=
Mar 20 02:21:35 mail postfix/smtpd[10816]: disconnect from mail-yw0-f177.google.com[209.85.161.177]

Вот и результат. На этом по борьбе со спамом все.

Заключение

Проверить настроенный почтовый сервер можно с помощью онлайн сервиса https://www.mail-tester.com. Не факт, что получите максимальный бал, но все недочеты будут указаны. Критичное нужно исправить (например, если обратная зона неправильная), некритичное можно пропустить (если dkim, к примеру, не настраивали).

Кажется все написал, что знал по поводу почтового сервера на linux в небольших и средних организациях. У некоторых может возникнуть вопрос, а зачем свой почтовый сервер? Почему бы не воспользоваться средствами корпоративной почты, которую представляют популярные почтовые сервисы бесплатно? Я планирую написать по этому поводу отдельную заметку (в итоге написал - выбор почтового сервера). У меня тоже есть определенный опыт на этот счет. И если некоторое время назад я считал, что свои почтовые серверы в небольших организациях уже не актуальны, то сейчас я так не думаю, поэтому и появилась эта статья.

Буду рад замечаниям по делу и советам в комментариях. Напоминаю, что данная статья является частью единого цикла статьей про сервер Centos.

Углубленный онлайн-курс по MikroTik.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

655 комментариев

  1. Приветствую!
    Из-за чего может не работать обшие папки ,фильтры не пересылают почту в roundcube

  2. Сергей

    Здравствуйте. Все делаю по вашей инструкции, осталось настроить dkim. При отправке письма выходит ошибка "key data is not secure: opendkim is in group 0 which has multiple users (e.g., "sync")"

    • В тексте ошибки всё написано. К ключу есть доступ у группы, в которую в том числе входит пользователь sync. Почему это так у вас, я не знаю. По умолчанию так быть не должно. В статье пользователя sync и не создают, и не используют.

  3. Николай

    Здравствуйте, подскажите пожалуйста возникла ошибка с добавлением Add Superadmin Account - root@transinfo.tech
    уже все перепробовал , добавил в hosts, transinfo.tech

    [root@mail httpd]# ping transinfo.tech
    PING mail.transinfo.tech (10.33.33.5) 56(84) bytes of data.
    64 bytes from mail.transinfo.tech (10.33.33.5): icmp_seq=1 ttl=64 time=0.043 ms
    64 bytes from mail.transinfo.tech (10.33.33.5): icmp_seq=2 ttl=64 time=0.042 ms
    64 bytes from mail.transinfo.tech (10.33.33.5): icmp_seq=3 ttl=64 time=0.042 ms

    [Fri Apr 07 12:19:36.466359 2023] [php:notice] [pid 2308] [client 10.33.33.1:62482] failed to add admin - [1,"",{"0":"\\u041d\\u0435\\u043a\\u043e\\u0440\\u0440\\u0435\\u043a\\u0442\\u043d\\u044b\\u0439 \\u0434\\u043e\\u043c\\u0435\\u043d transinfo.tech, \\u0438\\/\\u0438\\u043b\\u0438 \\u043d\\u0435 \\u043e\\u0431\\u043d\\u0430\\u0440\\u0443\\u0436\\u0438\\u0432\\u0430\\u0435\\u0442\\u0441\\u044f \\u0432 DNS","username":"\\u041d\\u0435\\u043a\\u043e\\u0440\\u0440\\u0435\\u043a\\u0442\\u043d\\u044b\\u0439 \\u0430\\u0434\\u0440\\u0435\\u0441 \\u0430\\u0434\\u043c\\u0438\\u043d\\u0438\\u0441\\u0442\\u0440\\u0430\\u0442\\u043e\\u0440\\u0430!"}], referer: http://10.33.33.5/postfixadmin/public/setup.php

    • Николай

      после добавления нданного параметра заработало
      $CONF['emailcheck_resolve_domain']='NO';

  4. Добрый день, подскажите, пожалуйста, возникла проблема с roundcube
    всё установилось, настроилось вроде норм, однако, после входа в веб-интерфейс roundcube, в списке нет писем, а в правом поле, там где тело письма, написано "сайт ... не позволяет установить соединение."
    поставил альтернативу, squirellmail, однако и там тоже самое...
    я так понимаю, что проблема в апаче, но куда копать - не понимаю
    алиасы в httpd.conf прописаны, права на директории выданы
    при этом postfixadmin, phpmyadmin на этом же хосте работают без проблем
    centos7 apache24 postfix mysql dovecot roundcube

    • Тут явно ошибка в настройках и работе веб сервера. Посмотрите для начала его лог ошибок. Возможно там будут подсказки. Так заочно трудно что-то посоветовать. Возможно у вас не установлен модуль php для imap. Именно он отвечает за загрузку писем. Возможно именно из-за него не работают оба веб интерфейса именно в окне со списком писем.

  5. Добрый день. Возникла проблема с некоторыми письмами. В частности госуслуги и росказна не принимаются. Остальные письма принимаются/отправляются, никаких проблем.

    Feb 12 13:23:16 mx postfix/smtpd[5523]: connect from mx5.roskazna.ru[94.25.26.187]
    Feb 12 13:23:16 mx postfix/smtpd[5523]: SSL_accept error from mx5.roskazna.ru[94.25.26.187]: lost connection
    Feb 12 13:23:16 mx postfix/smtpd[5523]: lost connection after STARTTLS from mx5.roskazna.ru[94.25.26.187]
    Feb 12 13:23:16 mx postfix/smtpd[5523]: disconnect from mx5.roskazna.ru[94.25.26.187] ehlo=1 starttls=0/1 commands=1/2

    Ковырял конфиги, менял политики smtpd tsl - не помогает. Не могу понять в чем дело. Не подскажете? Спасибо!

    • У вас какая минимальная версия TLS разрешена в ваших настройках? За это отвечает параметр smtp_tls_mandatory_protocols. Возможно у roskazna.ru используется более старая и поэтому не получается установить соединение по SSL.

      Также имеет смысл поднять уровень логирования для TLS соединений, чтобы получить более подробную информацию. За это отвечает параметр smtp_tls_loglevel.

      • Изменил конфиг. Добавил:
        smtp_tls_security_level = may
        smtpd_tls_security_level = may
        smtpd_tls_mandatory_ciphers = low
        smtpd_tls_ciphers = low
        smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3,!TLSv1,!TLSv1.1
        smtp_tls_mandatory_protocols = !SSLv2,!SSLv3,!TLSv1,!TLSv1.1
        smtp_tls_ciphers = low
        smtp_tls_mandatory_ciphers = low
        smtp_tls_protocols = !SSLv2,!SSLv3

        В итоге все равно получаю такую ошибку (это с повышенным логированием)

        Feb 16 12:01:37 mx postfix/smtpd[22770]: read from 555E17F439E0 [555E17F59BE3] (5 bytes => -1 (0xFFFFFFFFFFFFFFFF))
        Feb 16 12:01:37 mx postfix/smtpd[22770]: read from 555E17F439E0 [555E17F59BE3] (5 bytes => 0 (0x0))
        Feb 16 12:01:37 mx postfix/smtpd[22770]: SSL_accept:error in SSLv3/TLS write server done
        Feb 16 12:01:37 mx postfix/smtpd[22770]: SSL_accept error from mx5.roskazna.ru[94.25.26.187]: lost connection
        Feb 16 12:01:37 mx postfix/smtpd[22770]: lost connection after STARTTLS from mx5.roskazna.ru[94.25.26.187]
        Feb 16 12:01:37 mx postfix/smtpd[22770]: disconnect from mx5.roskazna.ru[94.25.26.187] ehlo=1 starttls=0/1 commands=1/2

        • А вы с какой целью его меняли и что изменили? У вас запрещены все TLS версии ниже 1.2. Но среди почтовых серверов полно с версиями 1.0 и 1.1. А вы их запрещаете. Разрешите. Или настройте исключение для сервера mx5.roskazna.ru, разрешив ему любую версию TLS. Пример того, как это можно сделать, можно посмотреть в моей свежей статье: https://serveradmin.ru/nastrojka-postfix-dovecot-postfixadmin-roundcube-dkim-na-debian Искать по слову tls_policy_maps.

          • Аноним

            Я изменил его по вашему комментарию. Дело в том, что до этого у меня вообще не было указано в конфиге какие версии принимать. TLSv1 и TLSv1.1 я добавил уже потом, когда не помогло добавление smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3. Прочитал на каком-то сайте. Добавил исключение по вашему совету. Посмотрим сработает ли. Спасибо!

            • А система какая, на которой этот почтовый сервер работает? Многие современные ОС не поддерживают по умолчанию TLS ниже 1.2. Нужно уточнить этот момент и включить поддержку вручную.

              • Аноним

                Debian 10

                • Если все обновления стоят, то TLS 1.0 там не поддерживается. Нужно это учесть. И не забывать, что про версию TLS это только предположение. Я не знаю точно, в чём причина проблем. Но сам сталкивался с подобной историей. Вот статья о ней - https://serveradmin.ru/centos-8-tls-v1_0/

                  • Я посмотрел через nmap -script ssl-enum-ciphers -p, TLS 1.0 включен. Если я добавил в исключения адрес сервера по вашей статье https://serveradmin.ru/nastrojka-postfix-dovecot-postfixadmin-roundcube-dkim-na-debian, то это должно исключать вариант с неподдерживаемым TLS? И может ли быть такое, что их сервер использует SSLv3? Если используют, то исключение должно пропускать их письма по SSLv3 или все равно нет? Спасибо!

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

  6. Здравствуйте! Все настроено по инструкции. Возник вопрос, где настраивается автоматическое сообщение при создании аккаунта?

  7. Ростислав

    Привет. Спасибо полезные статьи.
    Помогите пожалуйста разобраться.
    Настроен postfix , dovecot , сделаны все записи в dns. Почта отлично бегает по всем направлениям.
    Единственное уже неделю бьюсь не могу заставить работать PHPList(не отправляет тестовое письмо). Почтовый сервер и PHPList на одной машине. Так же у меня проблема с подключением почтового клиента в этой же сети. Если я настраиваю клиента из другой сети все замечательно , если из локальной там где и сам почтовый сервер, начинаются проблемы. Клиент видит сервер , начинает авторизовываться и вываливается с ошибкой не правильное имя и пароль. Возможно эти две проблемы связаны между собой. Может подскажите куда смотреть ?Больше всего волнует проблема с отправка из phplist .

    Лог при отправке тестового письма из PHPList.

    Aug  9 15:23:16 mailer postfix/smtpd[4565]: connection established
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: master_notify: status 0
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: name_mask: resource
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: name_mask: software
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: connect from mailer.domain.su[192.168.88.201]
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: match_list_match: mailer.domain.su: no match
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: match_list_match: 192.168.88.201: no match
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: match_list_match: mailer.domain.su: no match
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: match_list_match: 192.168.88.201: no match
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: smtp_stream_setup: maxtime=300 enable_deadline=0
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: match_hostname: smtpd_client_event_limit_exceptions: mailer.domain.su ~? 192.168.88.0/24
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: match_hostaddr: smtpd_client_event_limit_exceptions: 192.168.88.201 ~? 192.168.88.0/24
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: > mailer.domain.su[192.168.88.201]: 220 mailer.domain.su ESMTP Postfix
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: xsasl_dovecot_server_create: SASL service=smtp, realm=(null)
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: name_mask: noanonymous
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: xsasl_dovecot_server_mech_filter: keep mechanism: PLAIN
    Aug  9 15:23:16 mailer postfix/smtpd[4565]:  mailer.domain.su[192.168.88.201]: 250-mailer.domain.su
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: > mailer.domain.su[192.168.88.201]: 250-PIPELINING
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: > mailer.domain.su[192.168.88.201]: 250-SIZE 10240000
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: > mailer.domain.su[192.168.88.201]: 250-VRFY
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: > mailer.domain.su[192.168.88.201]: 250-ETRN
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: > mailer.domain.su[192.168.88.201]: 250-STARTTLS
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: > mailer.domain.su[192.168.88.201]: 250-ENHANCEDSTATUSCODES
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: > mailer.domain.su[192.168.88.201]: 250-8BITMIME
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: > mailer.domain.su[192.168.88.201]: 250-DSN
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: > mailer.domain.su[192.168.88.201]: 250-SMTPUTF8
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: > mailer.domain.su[192.168.88.201]: 250 CHUNKING
    Aug  9 15:23:16 mailer postfix/smtpd[4565]:  mailer.domain.su[192.168.88.201]: 220 2.0.0 Ready to start TLS
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: send attr request = seed
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: send attr size = 32
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: private/tlsmgr: wanted attribute: status
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: input attribute name: status
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: input attribute value: 0
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: private/tlsmgr: wanted attribute: seed
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: input attribute name: seed
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: input attribute value: o6pN+c39ruFVdiDg1GRhykXgWy84DOqFc2sqCmnowb8=
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: private/tlsmgr: wanted attribute: (list terminator)
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: input attribute name: (end)
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: xsasl_dovecot_server_create: SASL service=smtp, realm=(null)
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: name_mask: noanonymous
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: xsasl_dovecot_server_mech_filter: keep mechanism: PLAIN
    Aug  9 15:23:16 mailer postfix/smtpd[4565]:  mailer.domain.su[192.168.88.201]: 250-mailer.domain.su
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: > mailer.domain.su[192.168.88.201]: 250-PIPELINING
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: > mailer.domain.su[192.168.88.201]: 250-SIZE 10240000
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: > mailer.domain.su[192.168.88.201]: 250-VRFY
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: > mailer.domain.su[192.168.88.201]: 250-ETRN
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: > mailer.domain.su[192.168.88.201]: 250-ENHANCEDSTATUSCODES
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: > mailer.domain.su[192.168.88.201]: 250-8BITMIME
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: > mailer.domain.su[192.168.88.201]: 250-DSN
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: > mailer.domain.su[192.168.88.201]: 250-SMTPUTF8
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: > mailer.domain.su[192.168.88.201]: 250 CHUNKING
    Aug  9 15:23:16 mailer postfix/smtpd[4565]:  mailer.domain.su[192.168.88.201]: 221 2.0.0 Bye
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: match_hostname: smtpd_client_event_limit_exceptions: mailer.domain.su ~? 192.168.88.0/24
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: match_hostaddr: smtpd_client_event_limit_exceptions: 192.168.88.201 ~? 192.168.88.0/24
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: disconnect from mailer.domain.su[192.168.88.201] ehlo=2 starttls=1 quit=1 commands=4
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: master_notify: status 1
    Aug  9 15:23:16 mailer postfix/smtpd[4565]: connection closed
    • Даже не знаю, что сказать. в приведённом логе не вижу никаких ошибок.

      • Ростислав

        Вот печаль. А можно логи более детальные включить на dovecot.
        Сейчас phplist авторизуется без tls/ssl просто обычным текстом. Если использовать tls , в логе при авторизации появляется строчка
        starttls=1 quit=1 commands=4 . Может она о чем то говорит ?

        • С tls чаще всего проблемы с тем, что софт использует одну версию tls, чаще всего старую, например 1.0 или 1.1, а сервер настроен на поддержку версий tls 1.2 или 1.3 и более младшие не принимает. Все современные системы сейчас по дефолту не будут работать с tls ниже 1.2.

          • Ростислав

            Да, но на phplist 1.3 вроде как. Я нашел корень проблем.
            Локально сервер не использует авторизацию , нужно Postfix крутить. В phplist закомментировал логин и пароль. Почта полетела.
            Спасибо )

  8. Сергей

    Здравствуйте, настроил по вашей инструкции, всё отлично работало.
    Появилась необходимость перенести почтовый сервер на другой ip в другую локальную подсеть. В настройках везде прописал новый локальный ip, на хостинге A записи поменял, у провайдера запросил привязку PTR к новому внешнему ip-адресу. При запросе prt по новому ipтеперь отображается mail.mydomain.ru, но при проверке mail.mydomain.ru отображается ip старого провайдера.
    Почта работает, но при получении автоматических настроек отдает сервер mydomain.ru, а не mail.mydomain.ru.
    Подскажите пожалуйста, где может быть ошибка?

    • Сергей

      Вопрос снят, извините. На хостинге исправил А запись для mydomain.ru, но не исправил для mail.mydomain.ru

  9. Дмитрий

    Здравствуйте. Почитал несколько ваших статей по postfix и не где не нашел упоминания про функцию Catch-All.

    • А что вы хотели о неё услышать? Я лично сам нигде не использую её. А если нужно, то через postfixadmin такой ящик очень просто создаётся.

  10. You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'from where = limit 1' at line 1

    Подскажите как исправить

    • Ошибка в конфигах, параметры подключения к базе или выборке необходимых данных из базы

    • Где вы эту ошибку получаете? Явно проблема в синтаксисе sql. Об этом прямо говорится.

  11. добрый день
    подскажите при попытки добавить возможность ящика gmail забирать почту из аккаунта моего сервера при подключении выдается ошибка
    Ошибка сервера: "Missing +OK response upon connecting to the server: * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE STARTTLS LOGINDISABLED] Dovecot ready."
    что она означает и как исправить что бы все добавилось,подключаю по порту 143

  12. Добрый день. Ваши статьи просто супер. Когда что то делаю то смотрю на них как на шпаргалку. Единственно вопрос. При установке postfixadmin когда в браузере перехожу на public/setup.php то страница пустая и есть только изображение почтовой коробки. Куда что копать или может направит. Спасибо

  13. Алескандр

    Все вроде настроил, но DKIM проверяет подписи внешней почты, если они есть, а свои письма не хочет подписывать

    Aug 5 12:55:08 mail opendkim[267993]: D673D2018F3F8: averianov.office [172.16.1.17] not internal
    Aug 5 12:55:08 mail opendkim[267993]: D673D2018F3F8: not authenticated
    Aug 5 12:55:08 mail opendkim[267993]: D673D2018F3F8: no signature data

    логи opendim можно поразвернутее включить, не нашел в конфиге

  14. добрый день
    подскажите,все настроил по инструкции,все заработало как нужно кроме одного,
    внутри сети почта приходит и уходит,а вот с внешними ресурсами проблме отправить письмо могу,оно доходит а вот
    письма из вне на серве не приходят,в чем может быть проблема?

    • Самая очевидная проблема это сеть. К вам в принципе доступ на 25-й порт сервера есть? Если есть, то подключения к нему должны быть отражены в логе postfix. Он хорошо все логирует и проблемы видно. Если подключений нет, разбирайтесь с фаерволом, пробросом портов, если он настроен.

      • к порту нет подключения не из вне не из сети,хотя проброс сделан,в firewall я открыл прт он числится открытым,
        но подключения нет как из вне так и изсети и с самого сервера тоже сама на себя по порту 25 не подключается

        • Отключите firewall полностью и проверьте. Если без него заработает, значит разбирайтесь с его настройкой.

  15. Вопрос по dovecot снят. Причина сбоев при его запуске нашлась в файле конфигурации с помощью команды
    doveconf -n

    Только так и не понял связи между dovecot и polkit, который ссылался на freedesktop!

  16. В продолжении к моему прошлому вопросу.
    В /var/log/secure имеется запись:

    mail polkitd[836]: Unregistered Authentication Agent for unix-process:1847:19044 (system bus name :1.23, object path /org/
    freedesktop/PolicyKit1/AuthenticationAgent, locale ru_RU.UTF-8) (disconnected from bus)

    Каким образом появляется данная ошибка на серверном варианте операционки, где нет графического интерфейса?
    Прошу подсказки!

    • Polkit (прежнее название: PolicyKit) — библиотека для UNIX-подобных операционных систем. API библиотеки используется для предоставления непривилегированным процессам возможности выполнения действий, требующих прав администратора. Использование Polkit противопоставляется использованию таких систем, как sudo, но не наделяет процесс пользователя правами администратора, а позволяет точно контролировать, что разрешено, а что запрещено.

  17. Здравствуйте.
    Пытался поставить почтовый сервер по вашей статье. Но при первом запуске doveсot получил ошибку:

    #systemctl start dovecot
    A dependency job for dovecot.service failed. See 'journalctl -xe' for details.
    #
    # journalctl -xe
    -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
    --
    -- Начат процесс запуска юнита dovecot-init.service.
    фев 24 08:18:48 xxx.yyy.vvvvv.dd systemd[1]: dovecot-init.service: main process exited, code=exited, status=
    фев 24 08:18:48 xxx.yyy.vvvvv.dd systemd[1]: Failed to start One-time Dovecot init service.
    -- Subject: Ошибка юнита dovecot-init.service
    -- Defined-By: systemd
    -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
    --
    -- Произошел сбой юнита dovecot-init.service.
    --
    -- Результат: failed.
    фев 24 08:18:48 xxx.yyy.vvvvv.dd systemd[1]: Dependency failed for Dovecot IMAP/POP3 email server.
    -- Subject: Ошибка юнита dovecot.service
    -- Defined-By: systemd
    -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
    --
    -- Произошел сбой юнита dovecot.service.
    --
    -- Результат: dependency.
    фев 24 08:18:48 xxx.yyy.vvvvv.dd systemd[1]: Job dovecot.service/start failed with result 'dependency'.
    фев 24 08:18:48 xxx.yyy.vvvvv.dd polkitd[805]: Unregistered Authentication Agent for unix-process:8250:16575
    фев 24 08:18:48 xxx.yyy.vvvvv.dd systemd[1]: Unit dovecot-init.service entered failed state.
    фев 24 08:18:48 xxx.yyy.vvvvv.dd systemd[1]: dovecot-init.service failed.

    Прошу помощи. Если не ошибаюсь, ошибка в polkitd.

    • Смотрите системный лог или лог самого dovecot. В статусах службы systemd, которые вы посмотрели, ошибки не видно.

    • Вы слишком "перемудрили с безопасностью" пляшите от этой печки.

  18. Альберт

    Здравствуйте!!! У меня очень важный вопрос назрел.Я разворачиваю почту у себя в локалке и так сложилось что у нас не все юезры должны иметь доступ к внешней почте, т.е они могут переписываться только в локалке а на вешние почтовые адреса они не имеют права отправлять почты из-за сооброжений инф.безопасности. Как можно настроить чтобы конкретные юзеры не могли отправлять письма на внешние адреса?
    Буду очень признателен за ответ!!!

  19. @Zerox Приветствую !
    до сих пор не могу решить вопрос с задержкой писем на внеш адрес , задержка почти 12 часов , подскажите пожалуйста, данные настройки на какую нагрузку рассчитана ? у меня 3000 пользователей , подходит ли данная настройка на такой поток пользователей ?

    • Скажу так, на работе более 50К пользователей, два принимающих, два отправляющих сервера, держат нагрузку особо не напрягаясь. В первую очередь смотрите логи, не помогут логи снимайте дамп с порта и анализируйте трафик.

      • Мой мастер , можете глянуть может тут что то не правильно ?

        # ==========================================================================
        smtp inet n - n - - smtpd
        -o smtpd_tls_security_level=may
        -o smtpd_sasl_auth_enable=yes
        -o receive_override_options=no_address_mappings
        submission inet n - n - - smtpd
        -o syslog_name=postfix/submission
        -o smtpd_tls_wrappermode=yes
        -o smtpd_tls_security_level=encrypt
        -o smtpd_sasl_type=dovecot
        -o content_filter=spamassassin
        -o smtpd_sasl_auth_enable=yes
        -o smtpd_reject_unlisted_recipient=no
        -o smtpd_tls_security_level=may
        -o smtpd_client_restrictions=permit_sasl_authenticated,reject
        -o milter_macro_daemon_name=ORIGINATING

        # наш сервер поддерживал протокол SSL/TLS и слушал порт 465
        smtps inet n - n - - smtpd
        -o smtpd_tls_security_level=encrypt
        -o syslog_name=postfix/smtps
        -o smtpd_tls_wrappermode=yes
        -o smtpd_sasl_auth_enable=yes
        -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
        -o milter_macro_daemon_name=ORIGINATING

        pickup unix n - n 60 1 pickup
        cleanup unix n - n - 0 cleanup
        qmgr unix n - n 300 1 qmgr
        tlsmgr unix - - n 1000? 1 tlsmgr
        rewrite unix - - n - - trivial-rewrite
        bounce unix - - n - 0 bounce
        defer unix - - n - 0 bounce
        trace unix - - n - 0 bounce
        verify unix - - n - 1 verify
        flush unix n - n 1000? 0 flush
        proxymap unix - - n - - proxymap
        proxywrite unix - - n - 1 proxymap
        smtp unix - - n - - smtp
        relay unix - - n - - smtp
        showq unix n - n - - showq
        error unix - - n - - error
        retry unix - - n - - error
        discard unix - - n - - discard
        local unix - n n - - local
        virtual unix - n n - - virtual
        lmtp unix - - n - - lmtp
        anvil unix - - n - 1 anvil
        scache unix - - n - 1 scache
        #
        dovecot unix - n n - - pipe
        flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}
        ~
        ~

    • Прочитал ваш вопрос от 5го ноября, если вечером у вас становиться все нормально, тогда смотрите загрузку канала днем. И если есть возможность настраивайте QoS (quality of service) на шлюзе.

  20. @Zerox приветствую!
    уже не знаю что смотреть , до сих пор почта не уходит на внешние адреса скажем mail.ru gmail.com, вот кусочек лога

    Nov 17 21:26:57 mail postfix/smtp[15194]: B1B0E361E5E: host mxs.mail.ru[94.100.180.104] said: 421 Service not available (in reply to end of DATA command)
    Nov 17 21:26:57 mail postfix/smtp[15194]: B1B0E361E5E: enabling PIX workarounds: disable_esmtp delay_dotcrlf for mxs.mail.ru[94.100.180.31]:25

    • Если на другие хосты уходит, а mail.ru нет - то он вас забанил.
      - Если что, вы тащить можно по заявке https://help.mail.ru/ennotspam-support/ip_block
      Если и на другие не уходит - то проблема в вашем конфиге. Сервер не знает куда релеить трафик, чтобы отправить его наружу (настройка mynetworks).
      Также нужно убедиться, что у ISP не заблокирован 25 порт для релеея

  21. Добрый день!
    Спасибо за отличный сайт!
    Подскажите пожалуйста куда копать?
    Второй день бьюсь с
    fatal: open dictionary: expecting "type:name" form instead of "virtual_mailbox_domains"
    и
    warning: /usr/libexec/postfix/cleanup: bad command startup -- throttling
    в логах /var/log/maillog

    должен ли что-либо возвращать из БД запрос описанный в /etc/postfix/mysql/virtual_mailbox_domains.cf ?
    если выполнить его в phpmyadmin, то вывод будет пустой.

    • Запрос должен выдавать имя домена. Собственно, у вас и ошибка означает то, что запрос ничего не возвращает. Где-то ошиблись по этой теме.

      • Да, так и получилось. Ошибся пробелом в /etc/postfix/main.cf в строке с vurtual_mailbox_domains
        Спасибо Вам большое!

  22. Владимир

    Добрый день , наверное глупый вопрос, а как сбросить пароль на постфикс администратора ?

    • Простого способа не знаю. Наверно, надо зайти в базу mysql и вручную сбросить пароль в соответствующем поле.

  23. Приветсвую ! настроил postfix по вашему посту , сейчас столкнулся с проблемой , что письма не уходят на внешние адреса , попадает в очередь и там висят , помогает только перезагрузка dovecot , в чем может быть проблема ?

    • Dovecot с отправкой никак не связан. Смотрите лог postfix в момент отправки. Там будет ответ, почему не отправляется.

      • Nov 5 11:39:11 mx1 postfix/smtps/smtpd[13754]: BC4E9361CC5: client=unknown[10.10.11.46], sasl_method=CRAM-MD5, sasl_username=rhel89@test.gov.com
        Nov 5 11:39:11 mx1 postfix/qmgr[13508]: BC4E9361CC5: from=, size=821, nrcpt=1 (queue active)

        Вот что в логах , после этого ничего , он попадет в очередь и все.

      • и есть такое , в рабочие время почта на внеш адреса не работает , как только вечер , юзеров мало , письма летают на внеш норм , куда смотреть ? из чего это может быть ?

      • Nov 5 15:02:51 mx1 postfix/smtps/smtpd[1370]: 5013B3618C9: client=unknown[10.10.11.46], sasl_method=CRAM-MD5, sasl_username=rhel89@test.gov.com
        Nov 5 15:02:51 mx1 postfix/cleanup[21122]: 5013B3618C9: message-id=
        Nov 5 15:02:51 mx1 opendkim[26942]: 5013B3618C9: DKIM-Signature field added (s=mail, d=test.gov.com)
        Nov 5 15:02:51 mx1 postfix/qmgr[32226]: 5013B3618C9: from=, size=825, nrcpt=1 (queue active)
        Nov 5 15:02:51 mx1 postfix/smtps/smtpd[1370]: disconnect from unknown[10.10.11.46]

        Вот кусок лога когда я отправляю письмо на внешний адрес

  24. Добрый день ,
    возник вопрос, как правильно записать открытый ключ dkim в dns ? файл зоны храню на своем днс сервере
    просто скопировать все что у нас имеется в конфиге /etc/postfix/dkim/mail.zeroxzed.ru.txt (в моем случае мой ключ) без изменений и всавить в самый конец конфигурационного фаила ?

    • Не знаю, что у вас за сервер dns, но формат записи стандартный - txt запись. Можно легко нагуглить, как ее корректно прописывать. В статье у меня есть пример.

  25. vladimir|_ma

    Добрый день делалвсе как написнно в статье, все 2 перепроверил выдает такое в локах

    [root@mail ~]# tail -f /var/log/maillog
    Sep 30 13:19:34 mail postfix/smtpd[1452]: CC1FD1809CA: client=mail-ed1-f51.google.com[209.85.208.51]
    Sep 30 13:19:34 mail postfix/cleanup[1467]: warning: hash:/etc/postfix/sender_bcc_maps is unavailable. open database /etc/postfix/sender_bcc_maps.db: No such file or directory
    Sep 30 13:19:34 mail postfix/cleanup[1467]: warning: hash:/etc/postfix/sender_bcc_maps lookup error for "mamisashvili@gmail.com"
    Sep 30 13:19:34 mail postfix/cleanup[1467]: warning: CC1FD1809CA: sender_bcc_maps lookup problem
    Sep 30 13:19:35 mail postfix/cleanup[1467]: 0F1EB1809CA: message-id=
    Sep 30 13:19:35 mail postfix/smtpd[1452]: disconnect from mail-ed1-f51.google.com[209.85.208.51]
    Sep 30 13:19:35 mail postfix/qmgr[1275]: 0F1EB1809CA: from=, size=1358, nrcpt=1 (queue active)
    Sep 30 13:19:35 mail postfix/smtp[1471]: 0F1EB1809CA: to=, orig_to=, relay=none, delay=0.05, delays=0.02/0.02/0/0, dsn=5.4.6, status=bounced (mail for mail.coscoshipping.ge loops back to myself)
    Sep 30 13:19:35 mail postfix/bounce[1472]: warning: 0F1EB1809CA: undeliverable postmaster notification discarded
    Sep 30 13:19:35 mail postfix/qmgr[1275]: 0F1EB1809CA: removed

    • Прямым текстом написано, что невозможно открыть файл:
      /etc/postfix/sender_bcc_maps.db: No such file or directory
      Проверяйте, почему его нет. Возможно, просто в названии файла ошиблись.

      • да его нет , так как мне не нужно собирать почту , пропустил этот шаг ,
        поиду дальше копать

        • Тогда из настроек убирайте на него указание.

          • Аноним

            конфиг поправил, в трундербирде почту получил, но не могу отправить, пишет что сертификат , как его его заставить получить исходящий сертификат

            • Добрый день, почту запустил, все работает , спасибо вам за статью, но возник вопрос
              интерфейс роундкуба принимает и отправляет почту вообще без нареканий
              но вот с почтовыми клиентами все плохо,

              принимаем почту по 110 порту с зашитой starttls и обычный пароль
              а вот отправить как у вас показано на скриншоте не получается
              вышло только указано в 25 порт и пароль, без никакой зашиты ,
              я так понял, что при подключений первый раз на прием мы получаем сертификат и добавляем его в иключение , а вот на отправку уже не можем добавить сретификат

              • При отправке тоже должен выходить отдельный запрос на подтверждение сертификата. Выглядит так же, как и при получении.

                • Есть подозрение что в новых версиях эту функцию переделали

                  • Да, может такое быть. Сейчас везде тренд работать только с подтвержденными сертификатами.

                    • Да вы правы, пришлось отдельно генерировать отедьлные сертфикаты от letsencrypta ? и указывать их везде,
                      заработало,

                      шас разбираюсь postfix-sasl.conf не хочет работать,
                      выдает такое

                      [root@mail ~]# fail2ban-regex /var/log/maillog /etc/fail2ban/filter.d/postfix-sasl.conf

                      Running tests
                      =============

                      Use failregex filter file : postfix-sasl, basedir: /etc/fail2ban
                      Use datepattern : Default Detectors
                      ERROR: No failure-id group in '^(?:\[\])?\s*(?:\s+)?(?:\S+\s+)?(?:kernel:\s?\[ *\d+\.\d+\]:?\s+)?(?:@vserver_\S+\s+)?(?:(?:(?:\[\d+\])?:\s+[\[\(]?\S*(?:\(\S+\))?[\]\)]?:?|[\[\(]?\S*(?:\(\S+\))?[\]\)]?:?(?:\[\d+\])?:?)\s+)?(?:\[ID \d+ \S+\]\s+)?warning: [-._\w]+\[\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed(: [ A-Za-z0-9+/]*={0,2})?\s*$'
                      [root@mail ~]#

  26. Веб морда в roundcubemail, как только загружается, сразу даёт ошибку неверный запрос информация не сохранена. При этом при настройке в installer по imap подключение проходит. В какую сторону копать?

    • Копать в сторону логов )))))) В правильно заданном вопросе, половина ответа. Какая ошибка? Какой запрос?

      • если бы я увидел, что нить в логах. При заходе на веб морду, ещё не успел ввести лог и пароль. Уже даёт такую ошибку :(

  27. @Zerox Добрый день! не подскажете , настроил все по вашему методу , есть такая проблема , отправляю со своей настроенной почты в mail.ru и gmail.com . проверяю там они в спаме, потом отправил на yandex , а там норм , письмо во входящих . В чем может быть причина ?

    • Скорее всего в настройках ptr, dkim и spf. А вообще спам фильтры оценивают письмо в том числе и по содержимому. Так что даже технически идеально настроенный сервер не гарантирует отсутствие попадания в спам.

  28. Добрый день!

    Судя по логам почта в почтовый ящик попадает, но в RoundCube в папке Входящие пусто. Куда копать?

    • Зайти напрямую в ящик через консоль и посмотреть, есть ли там реально входящее письмо или нет.

    • Аноним

      После долгих страданий заработало (как и почему не понял).

  29. Не доставляется почта.
    В логах:

    warning: do not list domain mail.test in BOTH virtual_alias_domains and virtual_mailbox_domains

    NOQUEUE: reject: RCPT from другой_почтовый_сервер: 550 5.1.1 : Recipient address rejected: User unknown in virtual alias table

    CentOS 7

    Где чего не хвататет или не сделалось?

  30. Всем доброго времени суток!
    Столкнулся с такой задачей. Допустим есть ящик vasya@domen.ru надо сделать так, чтобы на этот ящик в час приходило не более 150 писем, остальных в очередь. плюс оповещении на ящик допустим admin@domen.ru, о превышении лимита. Есть у кого идеи как это реализовать можно?
    Реализовать соответственно надо, средствами самого Postfix .

    • Могу сразу сказать, что такое реализовать на postfix, да и на любом другом сервере непросто. Очень специфичный функционал. Я даже не представляю, с чего тут начинать и как реализовывать. Нужен какой-то скрипт, который будет считать письма за промежуток времени, потом ходить в базу, отключать ящик, слать письмо админу. Потом пересчитывать письма и обратно включать ящик. В общем, задача скорее для программиста. Админу без опыта программирования будет трудно это реализовать.

  31. И так я настроил почту как в статье я могу отправлять на маил и гмаил но плучить с маил или гмаил не могу, в чем может быть проблема?Но с локалных доменов письма приходят и уходят.Где копать?

    • Смотреть, доходят ли запросы из вне на ваш сервер. Если доходят, то должны быть какие-то ошибки в логах на тему того, что письма не принимаются.

      • Проблема у меня с 25 потом не могу открыть и постфикс и довекот его не слушают, открывал через iptables и отключал фаервол все рано 25 порт закрыт,проверял и телнетом и nmap порт 25 закрыт,что делать?

  32. Не могу зайти в roundcube,польз и пароль есть в mysql зайти могу при установке все указал.Логин и пароль правильный база есть права есть к базе.
    Ошибка в http://ip/webmail/ -
    DATABASE ERROR: CONNECTION FAILED!
    Unable to connect to the database!
    Please contact your server-administrator.
    Что делать?

    • Версия SQL сервера какая?
      Если последние версии проверяйте пароль, пароль должен состоять из цифр и букв не меньше 8 знаков

      • проверка
        #mysql -u(пользователь базы данных) -p(пароль), если подключится, проверять конфиги webmail, ошибка где-то там, чудес не бывает.l

        • Спокойно вхожу в Mysql в консоли версия 10.3.17-MariaDB MariaDB Server. Где может быть косяк в webmail? Смотпел файл config.inc.php там юзер базы есть и пароль

          • Я один раз сталкивался с проблемой (не помню всех деталей), но проблема была в @ в пароле, после того как убрал @ из пароля, все заработало.
            Пы.сы а драйвер подключения корректный?

            • Драйвер корректный в пароле только цифры и буквы знака @ нет,но спасибо, есть ещё у кого соображения?

    • Дмитрий

      У меня данная ошибка вылезла на версии roundcube 1.4.8 . Также создал БД, пользователя с паролем, перешел к веб-адресу для корня roundcube и получил такую же ошибку. Проблема выскочила из-за не инициализированной схемы БД. Нужно было перейти на третью вкладку установки (/installer/) Test config, на ней нужно было инициализировать схему БД ( Check DB config -> DB Schema) , нажав кнопку создания схемы и тогда DB Schema, DB Write и DB Time стали ОК, а на рабочей странице вместо ошибки появилась авторизация. Спасибо еще раз Zerox за труд.

  33. Алексей

    Спасибо за статью, если все делать внимательно, все отлично работает. Я никогда не использовал сервер на linux в жизни (который настраивал бы сам), но на всякий случай у нас в системе он есть, чтобы при сбое основного перейти на резервный. Спасибо.
    Но у меня вопрос который не отражен в статье, а если необходимо чтобы пользователи могли отправлять почту только на определенные домены, как это сделать ума не приложу. Нашел кучу статей, но добавление в настройки postfix - smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/recipient_access, и добавление в список:
    mail.ru REJECT You domain are blacklisted!
    test@gmail.com REJECT You domain are blacklisted!
    gmail.com REJECT You domain are blacklisted!

    При этом если внести в файл smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/recipient_access - то на исходящую почту это работает сразу, а на исходящую почему то никак.

    Вы не могли бы чтобы можно было посмотреть, чтобы найти ответ на мой вопрос, Спасибо.

    • Этот вопрос решается и в интернете можно найти варианты. У меня нет под рукой готового решения, но я его настраивал раньше.

    • Не совсем понятен, ваш вопрос -
      При этом если внести в файл smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/recipient_access — то на исходящую почту это работает сразу, а на исходящую почему то никак.
      Исходящая - Исходящая.

  34. Всем доброго времени суток!
    Столкнулся с такой проблемой, используется связка (Postfix+Dovecot+Mysql+PostfixAdmin) (CentOS7 + php 7.2 + MySQL 5.7)
    Postfix упорно пытается подключиться '/var/lib/mysql/mysql.sock', а у меня Mysql работает в '/var/lib/mysql_D_/mysql.sock'
    В итоге я в логах получаю ошибку -
    postfix/proxymap[21065]: warning: connect to mysql server localhost: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

    Как мне "заставить" Postfix смотреть и подключаться куда мне надо? Буду признателен, за ответы.

    • Какой-то у вас странный путь для сокета. Не знаю, где его в постфикс можно изменить его. Надо гуглить. Сделайте просто символьную ссылку на /var/lib/mysql/mysql.sock с работающего сокета.

      • Иногда, ответ у нас перед глазами, а нам лень посмотреть. Спасибо за совет, а я полдня уже "бегаю" вокруг этой проблемы и не могу решить )))))

  35. Сергей

    Добрый день.Поднял сервер по данной статье.Заработал.Хоть и не с первого раза.Сервер стоит внутри локалки за НАТ.Но есть одна проблема.Мы тут все головы сломали...Раундкуб подключается и работает нормально.А вот Тандерберд авторизуется исключительно на машинах с линукс и макОС. Что внутри сети что с наружи. Файрволы на винде отключали,что только не делали.Так и не смогли ни разу авторизоваться в Тандерберд на Винде.Находит сервер с параметрами без проблем.Но после нажатия на кнопку готово выскакивает ошибка : Не могу войти на сервер.Возможно имеется ошибка в конфигурации, имени пользователя или пароля. Для чистоты эксперимента даже удалили криптопро и все сертификаты чтобы не было конфликта с сертификатами.Все-равно ошибка.Повторюсь,что с линукса и мака все работает на ура!Я в тупике.

    • Смотрите лог почтового сервера в момент подключения с винды. Там будут подсказки. Думаю, проблема как-то с tls может быть связана.

      • Сергей

        Вот лог с мака.Тут все норм. (/dovekot/info.log)
        Mar 04 12:09:47 imap-login: Info: Login: user=, method=PLAIN, rip=192.168.39.196, lip=192.168.39.11, mpid=1948, TLS, session=
        А вот лог с винды.Повторюсь.Настройки-логин-пароль-сервер-порты) в Тандерберд одинаковые.
        Mar 04 14:16:29 imap-login: Info: Disconnected (no auth attempts in 0 secs): user=, rip=192.168.39.198, lip=192.168.39.11, TLS: SSL_read() failed: error:14094412:SSL routines:ssl3_read_bytes:sslv3 alert bad certificate: SSL alert number 42, session=

        • Как я и говорил, проблемы с TLS:

          TLS: SSL_read() failed: error:14094412:SSL routines:ssl3_read_bytes:sslv3 alert bad certificate: SSL alert number 42, session=

          По какой причине и в чем именно ошибка - не знаю. Надо разбираться.

          • Сергей

            Я это тоже понимаю.Вот только не понимаю куда копать.С оной виндовой машины как-то удалось подключиться.И то ненадого.Через пару часов она опять отказалась подключаться с той же ошибкой как и у всех.А как можно вообще отключить шифрование?По идее если его отключить проблема с tls должна пропасть.

            • Возможно проблема из-за большой разницы во времени между сервером и клиентами. Из-за этого сертификаты могут не работать.

              • Сергей

                Сервер и все машины стоят в одном офисе и в одной локальной сети,со временем все в порядке...Еще раз озвучу может проглядели-как можно убрать шифрование?Это мой первый почтовик.Еще до конца не очень понимаю что и как...

          • Сергей

            Ну в общем путем проб и ошибок выяснили что дело не в сервере,а в самом тандерберде.С других почтовых программ все работает нормально.Что там у него за конфликты с ssl одному богу известно.Судя по форумам такая проблема была у многих при обновлении с 30-й на 31-ю версии тандерберда.В этом свете вопрос-как и где и как на сервере отключить эти проверки ssl вообще?Ну не нужно мне шифрование.

            • Предложенная конфигурация позволяет подключаться без шифрования. В postfix за это отвечает параметр:
              smtp_tls_security_level = may
              Так что просто на клиенте не ставьте шифрование и все.

              А в dovecot надо этот параметр убрать:
              ssl = required
              Или переделать что-то еще. Точно не знаю, надо тестировать. Я давно уже не отключал шифрование полностью.

      • Сергей

        И еще .../dovecot.main.log сверху есть такая строка
        Mar 04 11:39:58 master: Error: service(auth): unlink(/var/run/dovecot/auth-master) failed: Is a directory
        хотя я эту директорию создал

        • Он как раз и ругается на то, что это директория. Это не должна быть директория. Если не ошибаюсь, это имя сокета.

  36. Дмитрий

    Добрый день, не запускается сервис posfix, ругается, что указан какой то неверный параметр, но в конфиге его не вижу

    Process: 1548 ExecStart=/usr/sbin/postfix start (code=exited, status=1/FAILURE)
    Process: 1547 ExecStartPre=/usr/libexec/postfix/chroot-update (code=exited, status=0/SUCCESS)
    Process: 1544 ExecStartPre=/usr/libexec/postfix/aliasesdb (code=exited, status=0/SUCCESS)

    Mar 03 06:48:54 mail systemd[1]: Starting Postfix Mail Transport Agent...
    Mar 03 06:48:54 mail postfix[1548]: fatal: file /etc/postfix/main.cf: parameter default_privs: unknown user name value: nobody
    Mar 03 06:48:55 mail systemd[1]: postfix.service: control process exited, code=exited status=1
    Mar 03 06:48:55 mail systemd[1]: Failed to start Postfix Mail Transport Agent.
    Mar 03 06:48:55 mail systemd[1]: Unit postfix.service entered failed state.
    Mar 03 06:48:55 mail systemd[1]: postfix.service failed.

    • Четко написано:
      fatal: file /etc/postfix/main.cf: parameter default_privs: unknown user name value: nobody
      Возможно это дефолтный параметр, в котором указан пользователь nobody, а у вас его нет в системы (быть должен по дефолту)

      • Дмитрий

        понял, нет у меня такого пользователя, если создавать через useradd, все равно его не цепляет

  37. >Позже отдельным пунктом я расскажу как использовать полноценные сертификаты.
    Добрый вечер.
    Где можно ознакомится с данным пунктом ?

    • Статьи нет. В целом, там и писать нечего. Получаете любым способом сертификат от let's encrypt и просто указываете его в конфиге вместо самоподписного из статьи и все. Никаких нюансов. Статей на тему получения сертификата lets encrypt в интернете полно, в том числе у меня на сайте в статьях про web сервер.

  38. Сергей

    Добрый день.Все установил.Вроде все запустилось.Но вот какая проблемка.При создании учетной записи в Тандерберд сначала все проходит гладко.Программа сама обнаруживает конфигурацию и т.д. Но все когда нажимаешь кнопку готово пишет неправильный пароль.Я перепробовал несколько ящиков настроить-одно и тоже -неправильный пароль.Я уверен что ввожу его правильно.Подскажите куда копать )

    • Надо лог postfix и dovecot смотреть. Если реально соединение с сервером происходит, в логах это будет отражено, а так же ошибка авторизации. Причин может быть много - ошибка подключения из-за tls, неправильное указание типа хранения пароля (шифрованный и нет) и т.д.

    • Благодарю Zerox за труды.
      Сделал всё по инструкции, но столкнулся с такой же проблемой, как у вас, а именно при авторизации в Thunderbird была ошибка неправильный пароль. 2 раза переделывал полностью всё заново, результат такой же.
      Устанавливал разные версии postfixadmin 3.2 и 3.0.2
      Получилось пройти авторизацию на 3.0.2, думаю что и 3.2 тоже получится:
      /etc/dovecot/dovecot-mysql.conf
      ldefault_pass_scheme = PLAIN
      в
      /var/www/html/postfixadmin/config.inc.php
      $CONF['encrypt'] = 'cleartext';

      Параметры подключения в Thunderbird:
      IMAP:993 SSL/TLS Normal password
      SMTP:465 SSL/TLS Noremal password

      • Рекомендую воспользоваться самой актуальной статьей по настройке почтового сервера - https://serveradmin.ru/nastroyka-postfix-dovecot-centos-8/

        Она самая свежая на текущий момент и пока полностью актуальна. Хотя думаю, эта тоже. Скорее всего вы где-то ошиблись просто.

  39. Делюсь соображениями по поводу своего вопроса об невозможности подключиться к imap серверу из за ошибки аутентификации. Проблема была в открытых незашифрованных паролях в базе phpmyadmin параметр md5crypt в конфиге phpmyadmin. Как правильно заметил автор во второй своей статье Centos 8 необходимо тогда поменять параметр на PLAIN в конфиге dovecot-mysql.conf/default_pass_scheme = CRYPT(либо PLAIN) если пароли не шифрованы.

  40. Не могу авторизоваться через imap. В статусе dovecot пишет Can't open PID file /var/run/dovecot/master.pid (yet?) after start: No such file or directory. Но сама служба запущена. В roundcube не пускает! Через Mozilla тоже авторизоватся не получается. Содержимое лога /var/log/dovecot/info.log
    Feb 19 14:55:15 master: Info: Dovecot v2.2.36 (1f10bfa63) starting up for imap, pop3, sieve, lmtp (core dumps disabled)
    Feb 19 15:11:01 imap-login: Info: Disconnected (auth failed, 3 attempts in 14 secs): user=, method=PLAIN, rip=xxx.xx.xx.87, lip=10.12.3.113, TLS, session=

    Ошибка в логах Roundcube:
    [19-Feb-2020 11:31:47 +0000]: IMAP Error: Login failed for root@zflan.pp.ua against localhost from 10.12.3.128. AUTHENTICATE PLAIN: Authentication failed. in /var/www/html/webmail/program/lib/Roundcube/rcube_imap.php on line 200 (POST /webmail/?_task=login&_action=login)

    Может кто сталкивался с подобной проблемой? Уже ставил всё с нуля несколько раз, таже самая ошибка!

    • Добрый день подскажите как решили данную проблему?
      У меня такая же ошибка

  41. Возникла ошибка в логах Roundcube:
    PHP Error: SMTP server does not support authentication (POST /webmail/_task=mail&_unlock=loading1582013909362&_framed=1&_lang=ru&_action=send)[18-Feb-2020 11:18:29 +0300]:
    SMTP Error: Authentication failure: SMTP server does not support authentication (Code: ) in /var/www/html/webmail/program/lib/Roundcube/rcube.php on line 1689 (POST /webmail/_task=mail&_unlock=loading1582013909362&_framed=1&_lang=ru&_action=send)

    С почтового клиента Mozilla почта уходит и приходит нормально, а вот через Roundcube при отправке вылазит SMTP ошибка 250. Ошибка авторизации. Хотя почту принимает нормально, только не отправляет.
    Не пойму в чём дело. И плагины почему-то не активировались в Rouncube при первоначальной настройки Rouncube я их указал в папках /var/www/html/webmail/plugins они есть, а вот например Общая папка не появилась в вэб интерфейсе.

  42. Дмитрий

    в roundcube smtp ошибка (250) ошибка авторизации

    cat /var/log/maillog
    connect from localhost[127.0.0.1]
    disconnect from localhost[127.0.0.1]

    [root@localhost ~]# telnet localhost 25
    Trying ::1...
    telnet: connect to address ::1: Connection refused
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    220 .ru ESMTP Postfix
    ^]
    telnet> Connection closed.

    • Вы подключаетесь по ipv6. Закомментируйте в /etc/hosts все строки с ipv6, чтобы localhost отвечал только по ipv4. Или явно пишите 127.0.0.1.

      • Дмитрий

        закомментил. не помогает.
        и еще ошибка, тоже уже была, сразу не написал:
        ошибка сервера select internal error occurred.

        • Смотрите лог самого roundcube, если разбираетесь с ним. Он в папке logs, в корне web клиента. Может там будут подсказки.

          А так internal error occurred говорит о том, что у вас сам почтовый сервер не работает. Разбирайтесь с ним. Статья рабочая, актуальная. Вы где-то ошиблись.

  43. Andrew.Johnson

    Почему-то opendkim не желает стартовать

    journal -xe
    -- Unit opendkim.service has begun starting up.
    Feb 10 06:19:34 5b4e5a0e9740 systemd[1]: New main PID 2054 does not belong to service, and PID file is not owned by root. Refusing.
    Feb 10 06:19:34 5b4e5a0e9740 systemd[1]: New main PID 2054 does not belong to service, and PID file is not owned by root. Refusing.
    Feb 10 06:19:34 5b4e5a0e9740 opendkim[2055]: OpenDKIM Filter v2.11.0 starting (args: -x /etc/opendkim.conf -P /var/run/opendkim/opendkim.pid)
    Feb 10 06:21:04 5b4e5a0e9740 systemd[1]: opendkim.service start operation timed out. Terminating.
    Feb 10 06:21:04 5b4e5a0e9740 opendkim[2055]: OpenDKIM Filter: mi_stop=1
    Feb 10 06:21:04 5b4e5a0e9740 opendkim[2055]: OpenDKIM Filter v2.11.0 terminating with status 0, errno = 0
    Feb 10 06:21:04 5b4e5a0e9740 systemd[1]: Failed to start DomainKeys Identified Mail (DKIM) Milter.
    -- Subject: Unit opendkim.service has failed
    -- Defined-By: systemd
    -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
    --
    -- Unit opendkim.service has failed.
    --
    -- The result is failed.

  44. iRedMail или postfixadmin?

    • iredmail в бесплатной версии сейчас очень урезан. Пользоваться откровенно неудобно, так что я бы его не рекомендовал.

  45. Отлична статья!

    все настроил, но есть один нюанс, не могу подключить почту с телефона,

    при етом почта через Roundcobe отправляється без проблем

    конфиг пересмотрел купу раз :(

    вот что в логе

    Feb 4 15:54:07 mail postfix/submission/smtpd[8430]: warning: hostname 94-153-111-82.broadband.kyivstar.net does not resolve to address 94.153.111.82: Name or service not known
    Feb 4 15:54:07 mail postfix/submission/smtpd[8430]: connect from unknown[94.153.111.82]
    Feb 4 15:54:07 mail postfix/submission/smtpd[8430]: disconnect from unknown[94.153.111.82]

    • А на клиенте какие ошибки? Тут либо с сетью проблема, либо с tls. Можно включить расширенный лог tls подключений. С ними чаще всего такие ошибки. Ну и с портами еще поиграться, попробовать на разные подключаться - 25, 587, 465.

      • Аноним

        аааа вопрос решился :)))
        проблема была в самоподписанным сертификате,

        Спасибо!!!!

  46. @ZEROX
    у вас на внутренние адреса письма как уходят ?через интернет ?

    • Конечно нет. Как внутренняя переписка может уйти через интернет? На какой сервер в интернете она должна идти? Локальная почта обрабатывается локально на этом же сервере.

      • Имел ввиду что в интернет уходят все почта , кроме моего @test.ru , то есть внутренние пиьсма в интернет не должны уходить , а почему я не могу получить входящую почту , как вы думаете ?

        • Я не знаю. Знаю только, что если делать по статье, то все получится. Я недавно проверял и настраивал очередной почтовый сервер.

          • у меня все почти тоже самое , только БД postgres.

          • Доброе утро!
            @Zerox развернул mysql БД , все работает .
            Но на postgres не работает у меня , видимо может запросы не правильные у меня в /etc/dovecot/dovecot-pgsql.conf и в /etc/postfix/pgsql/relay_domains.cf, virtual_alias_domain_maps.cf,virtual_alias_maps.cf,virtual_mailbox_domains.cf,virtual_mailbox_maps.cf

  47. Привет всем, в main.cf настроил mydestination = localhost, $mydomain, $myhostname таким оброзом , теперь выдает вот так.Вообщем задача такая же , для внутренних адресов чтобы postfix отправлял не через интернет.
    Помогите , что дальше копать .

    Jan 29 10:24:05 mx1 postfix/qmgr[13928]: 1EBDA361B48: from=, size=734, nrcpt=3 (queue active)
    Jan 29 10:24:05 mx1 postfix/smtps/smtpd[14126]: disconnect from unknown[10.10.11.14]
    Jan 29 10:24:06 mx1 postfix/local[14144]: 1EBDA361B48: to=, relay=local, delay=1.5, delays=0.28/0.05/0/1.2, dsn=5.1.1, status=bounced (unknown user: "test")
    Jan 29 10:24:06 mx1 postfix/cleanup[14137]: 879503608CC: message-id=
    Jan 29 10:24:06 mx1 postfix/bounce[14143]: 1EBDA361B48: sender non-delivery notification: 879503608CC
    Jan 29 10:24:06 mx1 postfix/qmgr[13928]: 879503608CC: from=, size=2644, nrcpt=1 (queue active)
    Jan 29 10:24:06 mx1 postfix/qmgr[13928]: 1EBDA361B48: removed
    Jan 29 10:24:06 mx1 postfix/local[14141]: 879503608CC: to=, relay=local, delay=0.11, delays=0.08/0/0/0.03, dsn=5.1.1, status=bounced (unknown user: "test")
    Jan 29 10:24:06 mx1 postfix/qmgr[13928]: 879503608CC: removed

  48. Всем привет !

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

  49. Подскажите пож , как нстроить чтобы postfix отправлял только на локальные адреса, чтобы через интернет не ходил.

  50. Виктор

    Еще раз всем привет!
    Статья огромная, классная, хорошо погружающее в постфикс и, самое главное, рабочая! Если что-то не работает - проверяйте всё еще раз=)
    Получается, мы почту входящую и исходящую просто складываем после получения в другое место, вот только потом не очень удобно доставать) Раундкуб пока не стал ставить, ну наверно и другие методы существуют, надо глянуть!
    Ещё раз спасибо большущее автору!

    • Не понял, что значит не удобно доставать? По imap очень удобно. Конечно, тем, кто привык к веб интерфейсам современных почтовых систем, функционал кажется не очень, но сопоставимое удобство с почтой яндекс или gmail локально никак не получить.

      • Виктор

        Наверно, неправильно выразился)
        Имап да, удобно, оставил только его.
        Я про тот описанный вами случай, когда ктото удалил письмо и говорит что не получал. Это письмо положилось в all_in, но вот уже найти там будет его довольно сложно, особенно без вводных - даты. Как в этом случае вы ищете удаленные письма дабы восстановить их ?

        • Почему сложно найти? Подключаешь ящик all_in по imap и ищешь все, что надо. Можно быстро по логу посмотреть, когда и от кого было письмо, чтобы по ящику не искать.

        • Виктор

          Не понял в чем прикол - настроил что почта работает по ssl/tls, т.е. по логике для сервера достаточны порты: 465, 993, 53, но если не открыты 25, 143, почта не приходит на сервер и соотв. к клиенту, с чем это может быть связано?

  51. Почтовичок поднят по этой статье и робит как барбос...! Сейчас руководство озадачило интегрировать почту в crm битрикс. Точнее сказать подключить почту к битрикс, чтоб сотрудники могли отправлять письма прям с сайта. На просторах инета либо нет нормального мануала, либо я плохо ищу.

    • Так а что там интегрировать? Надо создать ящики для пользователей и внести настройки для подключения к ящикам в битрикс.

      • У нас компания example.com, у ящиков имена user1@example.com, user2@example.com. То есть в main.cf постфикса для интеграции ничего дописывать не надо...? Я где-то нашёл что для работы постфикса, битрикс использует msmtp.

  52. Вы пишете:
    "Дальше редактируем конфигурационный файл postfixadmin.
    # mcedit /var/www/html/postfixadmin/config.inc.php"

    А надо все настраиваемые параметры вынести в config.local.php, они потом перекроют данные из config.inc.php. Пользователь BORIZZ.K уже упоминал об этом, но, вероятно, вы упустили его комментарий.

    Если я правильно понимаю, связано это с последующим обновлением файлов. В вашем случае config.inc.php будет может быть перезаписан при обновлении и настройки оттуда потеряются. К тому же при первом тестовом прогоне в postfix admin setup checker при отсутствии config.local.php явно указывается, что рекомендуется именно использовать именно config.local.php вместо config.inc.php, я только вчера этот шаг проходил. У себя сделал как рекомендуется, postfixadmin успешно установился.

    Хорошая статья, хотелось бы чтобы в ней все было правильно

  53. День добрый.

    Не нашел в статье описания того, как отравлять почту через сторонний сервер, к примеру, yandex или gmail.

  54. Владимир

    Отличная статья. Но как обычно бывает, этого мало. Мне бы хотелось при получении нового письма запускать свой скрипт, который кладет {from} {to} {subj} и абсолютную ссылку на диске на само письмо в ящике в таблицу SQL.
    Вопрос в том, как и где перехватывать событие входящего письма, в master.cf что-то добавить? И наверное самое главное как получить в postfix абсолютную ссылку на файл с самими письмом. Или же о месте хранения письма на диске знает только dovecot?

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

  55. Виктор

    Столкнулся со странной траблой: Тандербёрд может получать письма по 993(ssl/tls), но вот отправлять - только по starttls(587).
    Вот что в логе maillog при попытке отправки по 465(ssl/tls):

    Jan 14 16:49:53 mail postfix/smtps/smtpd[8458]: Anonymous TLS connection established from unknown[176.14.155.205]: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)
    Jan 14 16:50:15 mail postfix/smtps/smtpd[8458]: warning: connect to mysql server localhost: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
    Jan 14 16:50:15 mail postfix/smtps/smtpd[8458]: warning: mysql:/etc/postfix/mysql/virtual_alias_maps.cf lookup error for "my_mail@gmail.com"
    Jan 14 16:50:15 mail postfix/smtps/smtpd[8458]: NOQUEUE: reject: RCPT from unknown[176.14.155.205]: 451 4.3.0 : Temporary lookup failure; from= to= proto=ESMTP helo=

    Сам клиент с ошибкой:
    4.3.0 : Temporary lookup failure.

    vi /etc/postfix/mysql/virtual_alias_maps.cf:
    hosts = localhost
    user = postfix
    password = pass
    dbname = postfix
    query = SELECT goto FROM alias WHERE address='%s' AND active = '1'

    Может, дело в самоподписанном сертифе? У меня есть боевой, но его я бы хотел внедрить после полной настройки сервера.
    Заранее спасибо за любую помощь!

    • Нет, дело не в сертификатах. У вас конкретная ошибка доступа к базе данных:

      connect to mysql server localhost: Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)

      Подключение к базе через postfix идет как раз в момент отправки. И это подключение не работает по какой-то причине. А в dovecot все ок, поэтому вы получаете почту, но не можете отправить. Скорее всего где-то ошибка.

      • Виктор

        Отправить могу c starttls.
        Не могу по ssl/tls - возникает ошибка, в логе.
        Насколько безопасно пользоваться Starttls?

        • Полностью безопасно. Это более современный и безопасный способ, который пришел на смену sll/tls.

          • Виктор

            Но шифрование происходит с помощью сертификатов, верно же?
            Т.е. достаточно на сервере портов 22, 25, 143 (поп3 не хочу), 53удп, остальное закрываю?
            Спасибо вам большущее за ваш труд!

            • Виктор , приветствую !
              как у вал получилось чтобы thunderbird мог коннектится через 993 imap ? у меня только по 143 , хотя сервер слушает 993 порт.

              • Не понял, в чем проблема вручную указать нужный порт?

                • Когда пытаюсь подключится через Thunderbird :

                  IMAP Имя сервера 993 SSL/TLS зашифрованный пароль
                  SMTP Имя сервера 465 SSL/TLS зашифрованный пароль

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

                  Лог на сервере :
                  mx1 postfix/smtps/smtpd[23336]: warning: TLS library problem: 23336:error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol:s23_srvr.c:640:

    • Виктор , приветствую !
      как у вал получилось чтобы thunderbird мог коннектится через 993 imap ? у меня только по 143 , хотя сервер слушает 993 порт.

  56. Настроил второй почтовый сервер по данной инструкции оба в продакшене и отлично работают. Все DNS записи настроены так, что mail-tester показывает 10/10. Но беда вот в чём. Писем может не быть по часу, а потом как прорыв. Штук 20 разом вываливается. Дело в том, что сервер в дата центре за бугром. В Голландии. Из-за отдалённости их канал в 100 м/бит доходит до Владивостока уже примерно 10 м/бит. Так как сотрудники жалуются уже в тот момент когда почта сыпется, то я не могу отследить по логам проблему. Проблема ли в провайдере или в каком-то зависании одного из пакетов (postfix, dovecot)...?

    • Можно поднять локально во Владике тестовый сервер и отправлять через него почту на основной. Так будут под рукой все логи. Можно будет понять, в чем именно проблема и где возникает задержка.

  57. @Zerox
    Приветствую ! Подскажите пожалуйста , вроде все настроил , вроде почта отправляется , но письмо не получаю.

    Вот лог :
    : connect from unknown[10.10.12.11] Jan 12 11:29:31 mx1 postfix/smtpd[30960]: Anonymous TLS connection established from unknown[10.10.12.11]: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)
    Jan 12 11:29:32 mx1 postfix/smtpd[30960]: 16309360590: client=unknown[10.10.12.11], sasl_method=PLAIN, sasl_username=test@test.ru
    Jan 12 11:29:32 mx1 postfix/cleanup[30982]: 16309360590: message-id=
    Jan 12 11:29:32 mx1 postfix/qmgr[30548]: 16309360590: from=, size=729, nrcpt=3 (queue active)
    Jan 12 11:29:32 mx1 postfix/smtp[30986]: 16309360590: enabling PIX workarounds: disable_esmtp delay_dotcrlf for mgw.gov.kz[91.214.42.11]:25
    Jan 12 11:29:32 mx1 postfix/smtpd[30960]: disconnect from unknown[10.10.11.14]
    Jan 12 11:29:32 mx1 postfix/smtp[30986]: 16309360590: to=, relay=mgw.test.ru[91.213.43.11]:25, delay=0.66, delays=0.39/0.02/0.17/0.07, dsn=2.0.0, status=sent (250 2.0.0 00C5gVtM004122-00C5gVtN004122 Message accepted for delivery)
    Jan 12 11:29:32 mx1 postfix/qmgr[30548]: 16309360590: removed

  58. @Zerox
    Приветствую !
    поднял postfix сервер , теперь пытаюсь проверить через webmail(roundecube) работоспособность почты отправив письмо на другой внутренний адрес , получаю ошибку
    SMTP ошибка (-1): Сбой соединения с сервером.

    cat /var/log/maillog

    Jan 10 11:32:22 mx1 postfix/submission/smtpd[7967]: warning: cannot get RSA private key from file /etc/postfix/certs/private.pem: disabling TLS support
    Jan 10 11:32:22 mx1 postfix/submission/smtpd[7967]: warning: TLS library problem: 7967:error:02001002:system library:fopen:No such file or directory:bss_file.c:402:fopen('/etc/postfix/certs/private.pem','r'):
    Jan 10 11:32:22 mx1 postfix/submission/smtpd[7967]: warning: TLS library problem: 7967:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:404:
    Jan 10 11:32:22 mx1 postfix/submission/smtpd[7967]: warning: TLS library problem: 7967:error:140B0002:SSL routines:SSL_CTX_use_PrivateKey_file:system lib:ssl_rsa.c:633:
    Jan 10 11:32:22 mx1 postfix/submission/smtpd[7967]: connect from localhost[127.0.0.1]
    Jan 10 11:32:22 mx1 postfix/submission/smtpd[7967]: warning: Wrapper-mode request dropped from localhost[127.0.0.1] for service submission. TLS context initialization failed. For details see earlier warnings in your logs.
    Jan 10 11:32:22 mx1 postfix/submission/smtpd[7967]: disconnect from localhost[127.0.0.1]

    В чем может быть причина ?

    • Ошибка:
      cannot get RSA private key from file /etc/postfix/certs/private.pem

      Вот этого файла нет /etc/postfix/certs/private.pem либо к нему нет доступа.

      • [root@mx1 certs]# ll
        итого 8
        -rw-r--r-- 1 root root 1704 янв 6 14:18 private.key
        -rw-r--r-- 1 root root 1367 янв 6 14:18 public.pem
        [root@mx1 certs]#

        • У вас в конфиге указан private.pem а в папке лежит private.key. Имена разные.

          • да исправил спасибо , теперь нет ошибки ,

            появились такие ошибки еще.

            mx1 postfix/pipe[1631]: CBF223617F2: to=, relay=dovecot, delay=0.8, delays=0.72/0.02/0/0.07, dsn=4.3.0, status=deferred (temporary failure)
            Jan 10 12:07:12 mx1 postfix/pipe[1634]: CBF223617F2: to=, relay=dovecot, delay=1.6, delays=0.72/0.03/0/0.82, dsn=4.3.0, status=deferred (temporary failure)
            Jan 10 12:07:12 mx1 postfix/pipe[1630]: CBF223617F2: to=, relay=dovecot, delay=2, delays=0.72/0.01/0/1.3, dsn=4.3.0, status=deferred (temporary failure)

            • В этом куске лога нет текста ошибки. Думаю, вы что-то еще напутали. Проверяйте сами. Статья рабочая, я на днях по ней сервер настроил.

              • хорошо понял , и есть такие вопросы,

                1. Обязательно ли должно быть название юзера "vmail" , или можно его по другому назвать , к примеру mailadmin ??
                2. И как можно сделать чтобы клиенты могли подключится через "зашифрованный пароль" (Thunderbird ) , вашем примере указан "обычный пароль".

                Спасибо заранее.

                • 1. Пользователь может быть любой, главное поменять его имя и id во всех местах, где оно указано.

                  2. Это не знаю, не разбирался. Если я правильно понимаю, когда подключение по tls, весь трафик и так шифруется, в том числе передача пароля.

                  • cat /var/log/dovecot/lda-errors.log

                    lda(test@test.ru): Fatal: setgid(1000(sudo) from userdb lookup) failed with euid=1000(mailadmin), gid=1001(mailadmin), egid=1001(mailadmin): Operation not permitted (This binary should probably be called with process group set to 1000(sudo) instead of 1001(mailadmin))

            • Ерлан Амантайулы

              Все вычистили предыдущее с конфига dovecot? Если что в самом конце добавляются конфиги, их обязательно надо закомментировать. Если у Вас с подсветкой все, то вполне возможно после ! все будет закрашиваться как комментарий, то есть зеленым. Будьте внимательны. Ищите ошибку в логе /var/log/maillog и /var/log/dovecot/main.log.

  59. Аноним

    ПРивет! Отличная статья! Всё заработало, почти) Почему то нет папки Inbox никак не появляются входящие письма, что может быть не так?

  60. А у тебя нет статьи, в которой расписывается как организовать поиск писем старше к примеру 30-ти дней в папках all_in и all_out, затем то, что старше, архивировать и складывать куда-нибудь, а после удачной архивации вычищать папки.

  61. Сергій

    Postfix TLS over SMTP – RCPT TO prompts renegotiation then 554 5.5.1 Error: no valid recipients.

    если кого-то заинтересует проверка SMTP(SSL) 465 порт стандартним способом в данной конфігурации:

    openssl s_client -connect mail.lol.com:465
    HELO lol2.com
    MAIL FROM: lol@lol2.com
    250 2.1.0 Ok
    rCPT TO: lol@lol1.com
    554 5.7.1 : Recipient address rejected: Access denied

    1) команду RCPT печатать маленькой литерой rCPT (большая визовет повторную проверку сертификата і мусор:
    RENEGOTIATING
    depth=0 /C=AU/ST=NSW/L=Sydney/O=Self-Signed Key! Procees with caution!/OU=Web Hosting/emailAddress=postmaster@lol.com
    verify error:num=18:self signed certificate
    verify return:1
    depth=0 /C=AU/ST=NSW/L=Sydney/O=Self-Signed Key! Procees with caution!/OU=Web Hosting/emailAddress=postmaster@lol.com
    verify return:1

    2) более важное, проверка получателя станет на грабли. Если таки хотите, чтоб SMTP(SSL) принимал почту не только после SASL аутентифікації, а также, как и настроений тут SMTP на 25 порту, то следует в конфиге /etc/postfix/master.cf сделать так:

    в секции smtps заменить reject на reject_unauth_destination (как в основном конфиге postfix), будет виглядеть так
    smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination

    Тоже касается и другого сервера, что слушает на 587 порту в конфиге /etc/postfix/master.cf

    • Сергій

      добавлю, что reject_unauth_destination, вместо reject, позволит работать в почтовіх клиентах не столько с 25, но и 465 портом, а также с 587, если сделать тоже для submission

      • Сергій

        стал заложником своих коментариев :)
        так вот, причина моих исканий находилась где-то тут, в несостоявшихся рукопожатиях протокола ssl:
        https://serverfault.com/questions/806141/is-the-alert-ssl3-read-bytessslv3-alert-bad-certificate-indicating-that-the-s

        когда я решил продолжить експерименті с sasl-автентификацией, то обнаружил, что она уже работает на текущем аке ??
        сделал новий ак, и снова стал на те грабли с рукопожатием.
        сделал третий и уже все прошло нормально.

        Наверное где-то в процессе ssl сам с собой догорился между ПК и сервером.
        Посмотрю что будет дальше. Сейчас сервер работает на настройках, что указани в статье.

  62. Сергій

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

    doveconf: Fatal: Error in configuration file /etc/dovecot/conf.d/10-ssl.conf line 16: ssl_cert: Can't open file /etc/postfix/certs/cert.pem: Permission denied

    • А стандартный подход с формированием готового модуля с помощью audit2allow не работает?

      • Сергій

        к сожелению нет:

        # ausearch -c 'doveconf' --raw | audit2allow -M mydoveconf
        # cat mydoveconf.te
        module mydoveconf 1.0;
        require {
        type postfix_etc_t;
        type dovecot_t;
        class file { open read };
        }
        #============= dovecot_t ==============
        allow dovecot_t postfix_etc_t:file { open read };

        # semodule -v -i mydoveconf.pp
        Attempting to install module 'mydoveconf.pp':
        Ok: return value of 0.
        Committing changes:
        Ok: transaction number 0.

        # semodule -l | grep mydoveconf
        mydoveconf 1.0

        doveconf: Fatal: Error in configuration file /etc/dovecot/conf.d/10-ssl.conf line 16: ssl_cert: Can't open file /etc/postfix/certs/cert.pem: Permission denied

      • Сергій

        как я дружил эту конфигурацию с Selinux.
        После того, как убедился, что все работает без Selinux сделал следующее:

        1) отказался от использования домашних каталогов postfix-а для хранения сертификатов и сгенерировал самоподписаный сертификат и ключ в другом предназначеном для этого каталоге
        # mkdir -p /etc/ssl/mail
        # openssl req -new -x509 -days 3650 -nodes -out /etc/ssl/mail/cert.pem -keyout /etc/ssl/mail/key.pem
        и указал новое место в /etc/postfix/main.cf и /etc/dovecot/conf.d/10-ssl.conf (или что ви там используєте вместо него).
        Если у вас подписаный доверенным центром сертификат то вариант или скопировать, или переместить, каждая из этих команд (cp, mv) имеет разное влияние на контекст Selinux, поэтому важно, чтобы неправильный контекст не был перемещен на новое место, посмотреть контексты ls -Z /путь к файлу.

        2) После п.1 Довекот не стартанет уже по другой причине:
        Can't open log file /var/log/dovecot/main.log: Permission denied
        Генерируя для этого случая политику Selinux, как будет показано ниже, в выводе команды в коментариях к файлу было пердложено альтернативноє решение. Оказалось, что контекст по умолчанию для файла правильный, а текущий нет, чтоб снять вопрос нужно вместо создания новой политики просто сбросить текущий контекст этого файла:
        #!!!! The file '/var/log/dovecot/main.log' is mislabeled on your system.
        #!!!! Fix with $ restorecon -R -v /var/log/dovecot/main.log
        Что я и сделал:
        # restorecon -R -v /var/log/dovecot/main.log

        3) Теперь Довекот под Selinux нормально запустится, но это еще не конец. У довекота, как мы помним, есть дружки imap pop3 sieve lmtp, и они тоже настаивают на своих правах. Сделал так, запустить чтение лога аудита Selinux в терминале:
        # tail -f /var/log/audit/audit.log | grep denied
        И начал юзать эти демоны. ПОП3 меня не интересовал, его не юзал, а вот по IMAPS подключился почтовим клиентом. И первое что увидел, что нет всех папок, а отправка писем, удаление... натыкаеться на сообщение, переданое клиенту, про какой-то системный сбой на сервере. Смотрим наш ранее запущеный лог в терминале и видим кучу неразрешенних доступов для имап. Вообще, то там может быть еще кто-то, кроме имап, на это надо посмотреть, нас интересует запись типа comm="imap". Этот парень в кавичках и есть ущемленный в правах гражданин системы. Чтоб это исправить сгенерируем новый модуль с политикой:
        # ausearch -c 'imap' --raw | audit2allow -M myimap
        Выше я писал, что команда может сгенерировать в коментариях и удачную алтернативу новой политики, такое решение я обраружил читая файл вывод этой команды.
        Далее инталируем новую политику:
        # semodule -v -i myimap.pp
        Далее ребутим систему или перечитываем политики (я ребутил для надежности).
        Запускаем Selinux (лучше его на постоянно включить, чтоб не забить) и запускаем чтение лога аудита и тестируем дальше и делаем все аналогично, только смотрим на записи comm=.

        4) Потом вспомнил, что кроме Довекота с товарищами есть еще и сайты, для управления всем этим. Так и есть, Postfixadmin не работает. Смотрим снова наш лог аудита, а там тоже ущемление в правах:
        type=AVC msg=audit(1577427201.508:145): avc: denied { write } for pid=2308 comm="httpd" name="templates_c" dev="dm-0" ino=34051585 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:httpd_sys_content_t:s0 tclass=dir permissive=0
        И как раньше:
        # ausearch -c 'imap' --raw | audit2allow -M myhttpd
        # semodule -v -i myhttpd.pp
        ребут

        Этого для моих потребностей хватило, но если будут проблеми, то удобно читать лог аудита запретов в реальном времени и генерирвать на его основе новые политики или обновлять старые. Лог аудита можно исполлзовать для генерации обновлений созданой политики или инсталироватьо новую. Если лог потрете, то имя политики уже надо будет изменить, поскольку при генерации будут учтены лише те случаи, что записаны в логе, иначе все придется повторить по новой

        • А стоит ли вообще вся эта возня с selinux потраченного на нее время и неудобства? Я лет 10 администрирую почтовые сервера и у меня ни разу не было ситуации, где бы мне SElinux реально помог.

          • Сергій

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

          • Сергій

            кроме того, я тут расписал саму технику, а по сути это 5-6 команд для данного случая

        • Сергій

          в предпоследней команде опечатка, нужно:
          # ausearch -c 'httpd' --raw | audit2allow -M myhttpd

  63. Сергій

    >>И небольшой штрих в завершении настройки.

    # chown vmail. /var/run/dovecot/auth-master
    Уже не помню, зачем это было нужно, запись осталась в черновиках. Знаю только, что какая-то ошибка всплывала без этого.<<

    связано с несоответствием группи в файле /etc/dovecot/conf.d/10-master.conf. нужно dovecot.

    статья полезная, но свалівание в кучу всех настроек Довекот усложняет разбор полетов

    • Это вопрос привычки. Мне удобнее в одном конфиге все настройки держать. Так их оценить разом проще.

    • А ещё перед выполнением этой команды "chown vmail. /var/run/dovecot/auth-master" нужно создать сам файл auth-master потому что его там нет

  64. Zerox добрый день.
    Про попытке подключения к 465 порту клиентом в логах вижу следующее. В какую сторону смотреть?

    Dec 11 17:03:30 srv-postfix-001 postfix/smtps/smtpd[43745]: SSL_accept:SSLv3 flush data
    Dec 11 17:03:30 srv-postfix-001 postfix/smtps/smtpd[43745]: Anonymous TLS connection established from unknown[*.*.*.*]: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)
    Dec 11 17:03:30 srv-postfix-001 postfix/smtps/smtpd[43745]: xsasl_dovecot_server_create: SASL service=smtp, realm=(null)
    Dec 11 17:03:30 srv-postfix-001 postfix/smtps/smtpd[43745]: name_mask: noanonymous
    Dec 11 17:03:30 srv-postfix-001 postfix/smtps/smtpd[43745]: xsasl_dovecot_server_connect: Connecting
    Dec 11 17:03:30 srv-postfix-001 postfix/smtps/smtpd[43745]: warning: SASL: Connect to private/dovecot-auth failed: No such file or directory
    Dec 11 17:03:30 srv-postfix-001 postfix/smtps/smtpd[43745]: fatal: no SASL authentication mechanisms
    Dec 11 17:03:31 srv-postfix-001 postfix/master[11128]: warning: process /usr/libexec/postfix/smtpd pid 43745 exit status 1
    Dec 11 17:03:31 srv-postfix-001 postfix/master[11128]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Dec 11 17:03:31 srv-postfix-001 postfix/master[11128]: warning: process /usr/libexec/postfix/smtpd pid 43745 exit status 1
    Dec 11 17:03:31 srv-postfix-001 postfix/master[11128]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling

  65. Zerox , добрый день!
    Воспользовался этим руководством для того чтобы завести свой почтовый сервер с самого что ни на есть круглого нуля.
    На этапе попытки авторизоваться по IMAP получаю фигу.
    Т.е Либо при добавлении почтового ящика в Thunderbird, либо при попытке авторизоваться в Roundcube , либо при попытке авторизоваться через телнет локально получаю одну и ту же ошибку.
    # Предварительно было сделано
    auth_verbose = yes and auth_debug = yes in dovecot.conf (согласно официальному вики по довекот)

    В логе dovecot/debug.log рисуется ошибка:
    auth: Debug: client passdb out: FAIL3user=root@domain.ru>original_user=root
    imap-login: Debug: Ignoring unknown passdb extra field: original_user

    При этом:
    В postfixadmin доступ есть, создавать ящики , домены, менять пароли.
    В phpmyadmin тоже все пучком, базы создал, все прописал.
    Roundcube с шаманством но таки завелся.
    A и MX записи есть, буревестник находит параметры сервера , но авторизоваться так же не может.

    Пожалуйста дайте совет, куда смотреть, что копать.
    Делал все по инструкции, перепроверил 3жды все конфиги.
    За исключением юзера vmail , он с уидом 2000 и группой 2000

    Пытался найти по этой ошибке хоть что нибудь, но гугл либо дает ответы лохматых годов либо вообще ничего не дает.
    Пасибо!

    • К своему стыду сам нашел проблему и сам её решил.
      В dovecot.conf отсутствовала целая секция
      passdb {
      args = /etc/dovecot/dovecot-mysql.conf
      driver = sql
      }

      Дописал , рестартанул довекот и все равно получил ошибку.
      Но уже другую
      auth: Debug: master userdb out: FAIL

      • Удалось победить и эту ошибку.
        Нашел ошибку в конфиге dovecot-mysql.conf
        Удалось таки пройти авторизацию по imap и в буревестнике и в roundcube.
        К слову roundcube последней версии 1.4.1 не хотел корректно отображать дерево папок.
        Была только папка входящее.
        Для решения этой проблемы нужно в главной секции описания добавить слово inbox

        namespace inbox{
        type = private
        separator = /
        prefix =
        inbox = yes

        Может кому то поможет.

        • Спасибо за информацию. У меня в планах полное обновление статьи на базе Centos 8. Надеюсь, до нового года успею сделать.

  66. Всё супппер...! То, что знал в теории, применил на практике опираясь на эту статью! А как можно реализовать группы рассылок...? К примеру продажники, отдел ВЭД, бухгалтерия и т.п...?

    • В postfixadmin создается алиас и в него добавляются все получатели.

      • Ок, с этим понятно. А есть возможность создать алиса к примеру all@чего-то-там.ru так, что бы следующий заведенный юзер автоматически попал в этот алиас...?

        • Идею понял, но по дефолту в postfixadmin нет автоматической возможности заводить всех новых пользователей в общий алисас. Я руками в таких случаях добавлял. Может просто невнимательно смотрел. Не припоминаю такой возможности.

          • Ну да ладно, у меня в конторке 35 +/- 5 человек, не обломит ручками добавить пользователя. В любом случае тебе огромное спасибо за статейки. Для меня, как плавно перерастающего лютого эникейщика в скромного сисадмина, который максимально хочет уйти с винды - это клад...! С меня пиво...=)

  67. Володя

    Нужна помощь. В клиентах вылетает постоянно сообщение о том что используется не подтвержденный сертификат. Как избавиться от проблемы. На просторах сети не могу найти даже намека на причину

  68. У меня по пути /var/www/html/webmail/plugins/managesieve/ нет файла config.inc.php, но зато есть файл config.inc.php.dist что с ним делать...? Просто изменить расширение...?

  69. А есть какая-то настройка, когда лицензия куплена по минимуму, а ящиков создано больше и ещё мультидоменность?

    • Сам KAS не проверяет соответствие лицензии и количество обслуживаемых ящиков. Я даже как-то запрос в ТП на эту тему писал. Следить за соответствием - ваша задача, со всеми вытекающими :)

  70. спасибо за статью, но совсем не понятно как будет организована связка с KAS, можете добавить в статью как настроить связку с Kaspersky AntiSpam

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

  71. При очередной установке вдруг обнаружил - в статье у Вас в конфиге /etc/opendkim.conf селектор указан:
    Selector default (хотя при генерации ключей был: mail)

  72. Добрый день!
    У меня все работает. Теперь необходимо еще один домен добавить. Сможете помочь?

    • В чем нужна помощь? Новый домен добавляется через postfixadmin. Никаких сложностей и доп. настроек делать не надо.

  73. Спасибо большое за Ваши статьи и ответы в комментариях!
    Пытаюсь сейчас выбрать между двумя вариантами настройки почты (на своем ВНЕШНЕМ почтовом сервере или на своем почтовом поддомене, расположенном на отдельном (от сайтов) IP.
    Итак, как я понял алгоритм:
    Схема 1 (на своем внешнем отдельном почтовом сервере):
    1. Поднимаем сервер 1 - создаем на нем почтовый (технический) поддомен, например, mail.site1.ru на IP1
    в DNS указываем: A запись site1.ru - IP1, A запись mail.site1.ru - IP1, MX запись - mail.site1.ru
    настраиваем на сервере: postfix + dovecot + mysql база + postfixadmin + dkim
    имя хоста и обратную зону указываем: mail.site1.ru
    настраиваем также SSL для site1.ru и mail.site1.ru
    2. Поднимаем сервер 2 - для сайтов - размещаем на нем site2.ru на IP2
    в DNS указываем: A запись site2.ru - IP2, MX запись - mail.site1.ru
    ОПЯТЬ? настраиваем на сервере: postfix + dovecot + mysql база + postfixadmin + dkim
    добавляем в main.cf
    relayhost = [mail.site1.ru]:587
    задаем также пароли для доступа к своему SMTP в файле
    /etc/postfix/sasl_passwd в виде
    postmaster@site2.ru:password
    настраиваем также SSL для site2.ru
    имя хоста и обратную зону ОПЯТЬ указываем 1 СЕРВЕРА?: mail.site1.ru

    Схема 2 (на своем почтовом поддомене, расположенном на отдельном IP1 на том же сервере с сайтами, имеющими IP2):
    в DNS указываем: A запись site.ru - IP1, A запись mail.site.ru - IP2, MX запись - mail.site.ru
    имя хоста и обратную зону указываем: mail.site.ru

    В чем ошибки или недостатки в схемах?

    • Я не понял, зачем в схеме 1 почтовый сервер поднимается на сервере 2 с сайтом. Он там не нужен. Обычно сайты умеют, а если не умеют, надо научить, использовать внешний smtp сервер. Если не получится, то достаточно одного postfix с пересылкой всей почты на первый сервер.

      • Это для системной почты. Дело в том, что когда я ранее, настраивая почтовый сервер на том же IP и том же сервере, что и сайты, так и не смог добиться, чтобы системная почта (по обновлению сервера и т.д.) дублировалась на внешний ящик. Добавление алиаса внешнего ящика для системной почты в /etc/aliases у меня почему-то не срабатывало. Поэтому создал через postfixadmin внешний ящик root@site.ru. Возможно наверное, чтобы не поднимать также почтовый сервер на сервере 2 по 1 схеме, можно создать этот же внешний ящик root для 2 сервера на 1 сервере (почтовом), но я не думал, что это возможно.

        • Это возможно. Локальный postfix может отправлять почту через внешний smtp сервер.

          • Никак не получается «добить» почту! Все настроил по схеме 1 (см выше), добавил также все другие DNS записи (spf, DKIM, DMARK, CAA). Внешняя почта и для ящиков сервера 1, и сервера 2 (через postfixadmin) работает отлично (10 из 10).
            А внутренняя локальная из консоли для вебсервера на site2.ru – «хоть ты тресни» дает ошибку:
            relay=mail.site1.ru[IP1]:587, delay=0.59, delays=0.05/0.03/0.42/0.09, dsn=4.7.1, status=deferred (host mail.site1.ru[IP1] said: 450 4.7.1 Client host rejected: cannot find your hostname, [IP2] (in reply to RCPT TO command))
            При том, что у обоих серверов и обратные зоны PTR, и hostname и MX записи одинаковые (mail.site1.ru). В DNS у сервера 1 (почтового) A запись для mail – IP1, у сервера 2 (веб) A запись для mail также – IP1.

            • Тут все очевидно. Ошибка указана конкретная:
              rejected: cannot find your hostname
              Либо разбирайтесь, почему имя домена не ищется, либо отключайте эту проверку.

              • Можете еще раз уточнить для моей схемы 2:
                Для 1 почтового сервера site1.ru на IP1 все вроде понятно: hostname=PTR= MX запись=mx.site1.ru, в DNS - A запись для поддомена mx указываем - IP1.
                Для 2 вебсервера site2 на IP2 с MX записью тоже понятно - указываем mx.site1.ru, а hostname и PTR какие нужно указывать для 2 вебсервера - тоже mx.site1.ru? И какие тогда указывать A записи для поддомена mx на 2 сервере (на IP1?), но у нас ведь домен для сервера 2 – site2.ru другой – он на IP2 и не будет соответствия IP, PTR, MX!?

                • За MX, A, PTR записями нужно следить именно на почтовом сервере, который занимается отправкой. На всех прочих серверах - web или каких-то еще, PTR и A записи могут быть любыми. Это не имеет значения.

                • перепутал немного в комментарии выше - конечно, в схеме 1

  74. Доброго времени суток!
    Выходит такое сообщение, что может быть не так настроено?

    Nov 08 12:26:10 jup postfix/pickup[18503]: 6F07E3408483: uid=0 from=
    Nov 08 12:26:10 jup postfix/cleanup[18505]: warning: mysql:/etc/postfix/mysql/virtual_alias_maps.cf lookup error for "testPN1@yandex.ru"
    Nov 08 12:26:10 jup postfix/cleanup[18505]: warning: 6F07E3408483: virtual_alias_maps map lookup problem for testPN1@yandex.ru -- deferring delivery

    *virtual_alias_maps.cf*
    hosts = localhost
    user = postfix
    password = *******
    dbname = postfix
    query = SELECT goto FROM alias WHERE address='%s' AND active = '1'

    • Проверяйте настройки доступа в mysql к таблице с алиасами. Postfix не может получить из нее информацию, о чем и пишет.

      • Проверил подключение к таблице с алиасами под пользователем postfix. Запрос обрабатывается и данные выводятся. Куда можно еще копать?

        • Я думаю, где-то описка, опечатка. Проверяйте все внимательно. Postfix четко пишет, в чем проблема, надо копать в этом направлении.

  75. Нужна помощь. При попытке подрубиться к серверу IMAP периодически слетает соединение по SASL. В логе dovecot единственная ошибка Error: namespace configuration error: Duplicate namespace prefix: ""
    Везде говорят что надо проверить наличие строки inbox = yes в dovecot.conf или в 15-mailboxes.conf. она у меня присутствие. Где еще посмотреть?

    Так есть ошибка NOQUEUE: reject: RCPT from relay.wildberries.ru[...]: 451 4.3.0 что тут-то может быть причиной. В сети как-то размыто

  76. В практике не встречалось задача mx сервер держать на другом сервере, вроде данной схемы https://wiki.dieg.info/postfix_backup_mx ?

    • Делал так. Тут нет ничего сложного. Просто поднимается еще один сервер в другом месте и ему прописывается меньший приоритет в mx записи. Условно, у основного 10, у резервного 20. При недоступности основного, почта отправляется на резервный.

      • имеется в виду у клиентов чаще настроено с резервом или все на одном )

        • Все на одном. Я несколько раз делал резервные mx, но реально с ними больше проблем, чем пользы. Даже если основа ляжет и вся почта посыпется на резерв, юзеры ее оттуда без перенастройки не получат. Потом, когда поднимается основа, придется как-то перекидывать почту с резерва на основу, которая успела нападать.

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

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

          В общем, это решение для крупного enterprise, где даже минимальный простой недопустим. Всем остальным смертным это слишком дорого и хлопотно.

          • ясно, спасибо за ответ.

          • Владимир

            Zerox, с резервного mx почту можно забирать fetchmail! Раньше так делал, с одного почтового сервера забиралась и локальный почтовый. Сейчас думаю резервный в провайдера оставить и указать приоритет, а основной как заработает, fetchmail заберет и разложит в папки.

            • Да, конечно можно. Я использовал fetchmail, но это все равно лишние заботы и хлопоты. Обхожусь без резервного MX. Все же почта не так критична к непрерывной работе. Она и в штатном режиме иногда ходит с большими задержками.

  77. Дошел до запуска установки postfixadmin http://192.168.1.8/postfixadmin/setup.php - получаю: $CONF['configured'] = true; $CONF['default_language'] = 'ru'; $CONF['database_type'] = 'mysqli'; $CONF['database_host'] = 'localhost'; $CONF['database_user'] = 'postfix'; $CONF['database_password'] = '12345678'; $CONF['database_name'] = 'postfix'; $CONF['admin_email'] = 'root@zeroxzed.ru'; $CONF['encrypt'] = 'md5crypt'; $CONF['default_aliases'] = array ( 'abuse' => 'root', 'hostmaster' => 'root', 'postmaster' => 'root', 'webmaster' => 'root' ); $CONF['domain_path'] = 'YES'; $CONF['domain_in_mailbox'] = 'YES'; Что я делаю не так?

  78. Вопрос номер 1: так все таки как правильно указывать в postfix'e в main.cf: virtual_transport = dovecot или virtual_transport = lmtp:unix:private/dovecot-lmtp ? И зачем в dovecot'e в 10-master.conf поднимать lmtp если в postfix'e в main.cf про lmtp ни слова?
    И вопрос номер 2: зачем в dovecot'e в 10-master.conf нужен слушатель unix_listener auth-master ? Во многих руководствах про него ни слова. Есть же unix_listener auth-userdb и unix_listener /var/spool/postfix/private/auth.

  79. Подскажи, почему могут не создаваться каталоги с почтовыми ящиками, куда копать. Сделал по твоей документации. В логах maillog: SSL_accept error from unknown -1. В Outlook ящик создался. Письма не уходят и не приходят.

  80. Добрый день. Подскажите пожалуйста, как организована работа между почтовыми ящиками all_* и непосредственно клиентскими ящиками. Возможно в статье не заметил это место. Хочу понять каким образом происходит обмен.

    • Не понял вопрос. Что значит организована работа? Там никакого обмена нет. Просто вся входящая и исходящая почта в момент поступления на сервер копируется в эти ящики.

      • Я можно сказать про это и спрашивал. Т.е. из каждого ящика она просто копируется или наоборот есть фильтр при помощи которого в ящики копируется или как-то по другому.

        • Никаких нюансов нет, просто в момент поступления на сервер на этапе передачи письма в ящик пользователя, копия кладется в ящик all. В последствии эти письма никак не связаны. Никакие фильтры почты в ящике пользователя не участвуют в копировании. Это все делается раньше в момент обработки входящего письма.

  81. Кирилл

    Здравствуйте, у кого получилось победить ошибку по авторизации imap на веь интерфейсе roundcube ?
    не получается пройти авторизацию.
    Плюс в инструкции написано после конфигурации roundcube перейти на веб морду и авторизоваться на почтовый ящик. но не указанно что делать когда ситуация показанная на фото по ссылке: https://drive.google.com/open?id=1uZ-fdQTMBZzmM2dNIYK0b62HExonquhV
    Говорит что схема БД не создана ? Её создать ? Веди в инструкции это не написано ? И не понятно как roundcube будет общаться с базой данных postfix ?
    Dovecot запущен, статус отличный, ошибок нет. Письма отправляются, по к thunderbird не подключается, как понять ошибка в Dovecot если на самом деле он запущен и работает ?
    Какие порты нужно прокинуть на шлюзе (на сервере по инструкции от Автора данной инструкции порты прокинуты в iptables) ? Может из за этого не подключается ? Но ведь подключения делаю в той же подсети что и сервер.
    Могут эти неполадки вызваны тем что по инструкции необходимо в одном месте собирать Dovecot но штатно он разделён. Может быть в этом проблема ? Так как один из участников оставлял комментарий что Dovecot оставил по-умолчанию таким какой есть.
    Но смущает что у Автора всё получается, значит ошибка у меня, но понять не могу где?

    • Внимательно все проверяйте. Статья рабочая, я по ней сам настраиваю. Уже по скриншоту я вижу, что у вас не инициализирована база данных. Там же рядом кнопка для этого. В самом низу видно, что скрипт не может подключиться к imap серверу на 143 порту.

      • Кирилл

        Да просто я растерялся) в статье про инициализацию не написано вот и задумался может автоматически должна обратиться ? А так я это понял и инициализация после нажатия соответствующей кнопки прошла успешно, а вот поводу imap и 143 порта, буду смотреть, спасибо большое)

      • Кирилл

        А по поводу как dovecot обращаеться к базе postfix, правильно понимаю что он использует файл dovecot-mysql.conf ?

      • Кирилл

        После того как закомментировал все правила файла imap в папке "/etc/dovecot/conf.d/", изменились показатели, теперь неудачная попытка авторизации по веб морде а в консоли вот что пишет:
        https://drive.google.com/open?id=1uTyI_6aQ9UPmnEZZiZZ0GvyNXBFP41Bc
        Возможно проблема получается в файле dovecot-mysql.conf

      • Кирилл

        И в правду была ошибка, простите пожалуйста за не внимательность, но удачно попытки авторизоваться нету, опять ошибка по IMAP: https://drive.google.com/open?id=1p_iTGKIGms-6LqJM4gMEu7NYNCfCNELa
        Может быть проблема в uid and gid ? Так как при настройке uid and gid 1000 не позволил создать ссылаясь на ранее уже созданный и присвоил и создал 2000 во всех конфигурациях, в этом не может быть проблема ? И если в этом то как можно "убить" 1000 что бы заново его создать исправно под эти намерения ?

      • Кирилл

        В итоге удалось авторизоваться на веб морде, но теперь следующая ошибка:
        https://drive.google.com/open?id=1gA2nvdeQpN3wKOEHEvNe1RRm6kUohBGE

      • Кирилл

        Всё, разобрался! Обажаю тебя Автор статьи, как всегда воистинну. ты прав и всё верно и правильно.
        В случае с моей проблемой, нужно удалить полностью папку в dovecot/conf.d/ так как обращается raoundcobe постоянно именно к ним. Буду тестировать дальше, если что напишу. Спасибо ещё раз!

  82. Всем привет!

    Настроил у себя во многом по данному мануалу на CentOS 7.6.1810:

    dovecot 2.2.36 + exim 4.92 + maridb 5.5.60 + Apache/2.4.6, PHP/5.4.16 + SSL(HTTPS)/Let'sEncrypt + RoundCube 1.3.9(+fail2ban для Roundcube/Apache/exim/dovecot) c плагинами:
    - ACL(шаринг папок по imap)
    - managesive (фильтры)
    - password (смена пароля из веб-интерфейса, пароли в БД, в шифрованном виде CRAM-MD5)
    - newmail_notifier (уведомления о новой почте)
    - mobile (мобильная версия веб-интерфейса)

    Конфиг dovecot по отдельным файлам - то, чего автор статьи не любит)

    Может быть, смогу быть кому-то полезным, пока всё свежо в памяти. Проблем было много, приходилось и списки рассылки по dovecot покурить и github по Roundcube почитать, даже написать разработчику (https://github.com/alecpl), но всё удалось победить. У меня всё работает на ура, веб-интерфейс шикарный, привыкаешь очень быстро. Единственное, что не работает - почему-то зависает при нажатии на "Управление папками" в мобильной версии.

    Теперь думаем как постепенно внедрять, убирать почтовые клиенты в компании.
    Папки для общего доступа (ACL) - прекрасный функционал. Когда сотрудник работает с несколькими почтовыми ящиками, некоторые из которых т.н. "общие", то использовать веб-интерфейс затруднительно. Каждый ящик - новая вкладка, везде нужно зайти (хотя есть плагин для автоматической авторизации), сразу всё не видно. А с шарами можно выдать пользователю в личный ящик нужные ему папки с других ящиков, сделав единую точку работы с почтой. Шары, кстати, прекрасно работают и во всех наиболее распространённых бесплатных почтовых клиентах. А если ещё задействовать фильтры для автоматизации - возможности широчайшие. Фильтры позволяют раскладывать письма и по расшаренным папкам, в другие ящики. Проверено.

    Автору огромное спасибо!

    • Кирилл

      Здравствуйте можете подсказать почему у меня не получается авторизоваться на веб интерфейс roundcube по учетке Postfix ?
      И можете привести свои настройки dovecot ?

  83. Подскажите, пожалуйста при связке postfix + roundcube как запретить некоторым пользователям писать письма наружу через вебморду?
    оставить только получение

    • Не думаю, что такое ограничение настроить реально. По сути roundcube это просто imap клиент. Я не знаю, как запретить доступ выборочно на основе imap клиента. Вы можете либо запретить полностью доступ в roundcube, либо самому пользователю в принципе запретить отправку писем. А вот так, чтобы запретить именно через roundcube не знаю, как сделать.

      Теоретически, можно. Если roundcube установлен на том же почтовом сервере, что и postfix с dovecot, то он будет подключаться с адреса localhost к imap серверу. Возможно, с помощью этой информации можно как-то настроить ограничения, но тут надо разбираться и думать. Решение простым точно не будет.

      • Большое спасибо за ответ!
        "либо самому пользователю в принципе запретить отправку писем"
        Выходит, если раундкуб через imap работает, то я не могу добавить в main.cf
        smtpd_sender_restrictions=hash:/etc/postfix/no-out
        --
        no-out
        user@domain REJECT
        --
        у меня, во всяком случае не работает ;/

        • Можете добавить ограничение на отправку через sender_restrictions в postfix. Вероятно, вы где-то ошиблись, поэтому не работает. Я раньше настраивал, но сейчас нет примера под рукой. Можно даже отдельно список доменов завести, на которые отправлять можно, а на все остальные нельзя. На opennet была статья с описанием подобной настройки.

  84. Кирилл

    Здравствуйте, можете пожалуйста обьяснить как правильно указывать/конфигурировать путь для сохранения архивов почт.
    $CONF['domain_path'] = 'YES';
    $CONF['domain_in_mailbox'] = 'YES';
    У Вас получается присвоить путь: Получится следующий путь до ящика, если у вас архив почты будет жить, к примеру, в директории /mnt/mail — /mnt/mail/zeroxzed.ru/root@zeroxzed.ru.

    Но я к сожалению не понимаю как его присваивать $CONF[' /mnt/mail/zeroxzed.ru/root@zeroxzed.ru.'] = 'YES'; ?
    Или так: $CONF['/mnt/mai'] = 'YES';
    $CONF['/mnt/mail/zeroxzed.ru/root@zeroxzed.ru.'] = 'YES'; ???
    Помогите пожалуйста разобраться

    • Вы немного запутались. В конфиге postfixadmin настраивается вариант структуры хранилища почты, а не сам путь к этому хранилищу. Адрес хранилища, в моем случае /mnt/mail указывается в конфигах postfix и dovecot. Смотрите их внимательно, там эти настройки прокомментированы.

  85. Кирилл

    Доброе утро.
    Спасибо большое за подробные мануалы, но я только начинаю администрировать сервера Linux
    И в данном контексте у меня возникли трудности с авторизацией пользователей.
    Пишет что нету соединения по IMAP.
    Дело в том что в начале мануала нужно проставлять как я понимаю пути к директориям хранения созданных почт
    ($CONF['domain_path'] = 'YES';
    $CONF['domain_in_mailbox'] = 'YES';)
    Далее Вы пишите что можно указывать самостоятельный путь (Получится следующий путь до ящика, если у вас архив почты будет жить, к примеру, в директории /mnt/mail — /mnt/mail/zeroxzed.ru/root@zeroxzed.ru.), но не понимаю как ? Точнее как правильно его указывать в этом конфиге ? Помогите пожалуйста.

  86. Добрый день, сделал все строго по вашей инструкции. Но когда ввожу логин и пароль от почты в THUNDERBIRD. Выдает ошибку "Не могу войти на сервер. Возможно, имеется ошибка в конфигурации, имени пользователя или пароле.". Просто в каком направлении копать? Я так понимаю конфиги настроенны не верно ?

    • Начинать исследование любых проблем надо с просмотра логов postfix и dovecot. Они в /var/log/ лежат. Там либо будут ошибки, либо если не будет вообще никаких упоминаний о подключении, решать вопрос, а туда ли вы вообще подключаетесь. Эти сервисы хорошо логируются и по логам всегда можно понять, что именно не работает и в чем проблема.

  87. Как заставить Roundcube работать по https??

    • Это отдельная тема. Пример настройки https в apache есть здесь - https://serveradmin.ru/nastroyka-ssl-v-apache-na-centos/ Единственное, там в примере используются сертификаты от сервиса, который уже не работает. Сейчас надо использовать бесплатные сертификаты от let's encrypt.

  88. "Позже получим и настроим нормальный сертификат." - очень хотелось бы посмотреть!
    Пробовал указать в конфиге (/etc/postfix/main.cf) в строчках
    smtpd_tls_key_file =
    smtpd_tls_cert_file =
    ...
    smtp_tls_CAfile =

    пути файлов ранее настроенного сертификата от Let's Encrypt - при этом в почтовом клиенте The Bat почта либо не отправляется , либо пишет - недействительный сертификат.

    • Вот пример настроек сертификатов let's encrypt в postfix с рабочего сервера. Там никаких нюансов нет, чтобы отдельно рассказывать. Просто указывается сертификат и все.

      smtpd_tls_key_file = /etc/postfix/cert/privkey.pem
      smtpd_tls_cert_file = /etc/postfix/cert/cert.pem
      smtpd_tls_CAfile = /etc/postfix/cert/chain.pem
    • smtpd_tls_cert_file=/etc/letsencrypt/live/domain/fullchain.pem
      smtpd_tls_key_file=/etc/letsencrypt/live/domain/privkey.pem

      • Вот прописал в /etc/postfix/main.cf свой сертификат, ну никак Mozilla не может соединиться с сервером через порт 587, хотя он везде открыт. При добавлении учётной записи в mozilla всё проходит гладко а когда пытаюсь отправить сообщения пишет что не может соединиться.

  89. Делаю по мануалу , есть такая ошибка
    The Postfix Admin directory layout changed.

    Please update your webserver config so that the DocumentRoot or Alias points to the directory "public".
    Не нашел рабочего решения. Селениум отключен.

    • В принципе, в ошибки все написано, что требуется. Судя по всему, в конфиге параметр DocumentRoot или alias смотрят не на директорию public.

      • Спасибо за отет. Тапками не кидайтесь если че .
        Тоесть нужно праить путь в конфиге /etc/httpd/conf.d дописать
        DocumentRoot "/var/www/html/postfixadmin/public"

  90. Версия такая же как у Вас - 3.0.2. А не подскажете тогда, где можно посмотреть логи postfixadmin, что именно происходит при этом входе, какие сообщения или ошибки появляются? Или может быть дело в том что виртуальная машина?

  91. Здравствуйте, уважаемый автор. Большое спасибо за статью. Начал делать по ней, только вместо apache установил nginx.
    Установку проводил на VMWare. Все шло хорошо до момента настройки postfixadmin. Сам он запустился, я создал суперадмина с новым паролем.
    Но войти в браузере не могу. Никаких ни ошибок ни сообщений не выдается, просто страница прокручивается и опять попадаю в окно приглашения.
    Что делать - непонятно. Читал. что такая ошибка часто встречается, но однознчного ответа так никто и не дал. Не могли бы Вы подсказать, в чем может быть дело? Заранее спасибо, с уважением.

    Выглядит это так: (Скрин к сожалению вставить не получается)

    Mail admins login here to administer your domain.
    Login (email):
    Password:
    Language:

    Users click here to login to the user section.

    • К сожалению, не знаю, чем помочь. Возможно что-то изменилось в новых версиях postfixadmin. Попробуйте более старую. Они принципиально ничем не отличаются. Управлять сервером без проблем можно любой версий, даже 5-7 летней давности.

  92. Александр

    В roundcube в настройках есть закладка - Профили. Любой пользователь может туда войти и вбить данные которые сам придумает. Я например сегодня отправил со своего сервера письмо с ящика qq@qq.ru на gmail и оно даже пришло во входящие. Точно так же можно подставить данные любого пользователя. Как с этим бороться?

    • Александр

      Если кому-то понадобится:

      # Убрать кнопки добавления и удаления профилей в каждой теме:
      vim /var/www/roundcube/skins/larry/templates/identities.html
      <!--
      <roundcube:button command="add" type="link" title="newidentity" class="listbutton add disabled" classAct="listbutton add" innerClass="inner" label="addidentity" condition="config:identities_level:0<roundcube:button command="delete" type="link" title="delete" class="listbutton delete disabled" classAct="listbutton delete" innerClass="inner" label="delete" condition="config:identities_level:0
      -->

      vim /var/www/roundcube/skins/classic/templates/identities.html
      <!--
      <roundcube:button command="add" type="link" title="newidentity" class="buttonPas addgroup" classAct="button addgroup" content=" " condition="config:identities_level:0<roundcube:button command="delete" type="link" title="delete" class="buttonPas delgroup" classAct="button delgroup" content=" " condition="config:identities_level:0
      -->

      # Установить флаг disabled на поле для ввода E-mail
      vim /var/www/roundcube/program/steps/settings/edit_identity.inc
      # function rcube_identity_form($attrib)
      # ...
      # // list of available cols
      # ...
      'email' => array('type' => 'text', 'size' => $i_size, 'disabled' => 'disabled'),
      # ...

      • Александр

        Поправка, если установить disabled то нельзя будет менять другие параметры, поэтому можно просто скрыть поле для ввода E-mail:

        vim /var/www/roundcube/program/steps/settings/edit_identity.inc
        # function rcube_identity_form($attrib)
        # …
        # // list of available cols
        # …
        'email' => array('type' => 'text', 'size' => $i_size, 'style' => 'visibility: hidden'),
        # …

        В плагине new_user_dialog такая же уязвимость, лечится так же (можно еще переместить ниже подписи для красоты):
        vim /var/www/roundcube/plugins/new_user_dialog/new_user_dialog.php
        $table->add('title', ''); // изменение
        $table->add(null, html::tag('input', array(
        'type' => 'text',
        'name' => '_email',
        'value' => rcube_utils::idn_to_utf8($identity['email']),
        // 'disabled' => in_array($identities_level, array(1, 3, 4)) // изменение
        'style' => 'visibility: hidden' // изменение
        )));

    • Бороться с этим невозможно. Это особенность почтового протокола, который позволяет так поступать. Любой может поставить какой-угодно обратный адрес и отправить письмо. Я вот тут отдельно разбирал эту тему - https://serveradmin.ru/zapret-pisem-s-poddelnyim-polem-from-ili-spam-ot-sebya-k-sebe-v-postfix/

      • Александр

        По сути то что в статье по ссылке уже есть в данной статье, только используется файл black_client - верно?

        • Да, я и сам забыл, что уже рассказывал об этом. Еще раз статью написал :)

          • Александр

            Да, я это сделал сразу же, очень полезно, спасибо! :)
            Но проблема которую я хотел озвучить не в злодеях снаружи, а злодеях внутри. Используя возможность roundcube в виде подстановки From любой сотрудник компании!!! может от имени генерального директора написать письмо сомнительного содержания - указание внутри компании или клиенту и т.к. это все локальный сервер письмо уйдет без вопросов. Поэтому, на мой взгляд, эту возможность нужно ограничить как можно сильнее. Пример я привет выше - убрать возможность создавать профили самостоятельно, и изменять e-mail адрес в профиле по умолчанию.

            • Это да, имеет смысл. Я никогда не обращал внимание, что там такая возможность есть в настройках.

  93. Александр

    При подключении из оутлука по imap, папки отправленные и т.п. написаны на англ. языке. Есть решение этой проблемы на стороне сервера?

    • Да, есть плагин для dovecot, который автосоздает папки при первом подключении. Названия папок указываются в настройках. Точно не помню название плагина. Еще надо учитывать, что имена папок должны быть написаны в какой-то кодировке для imap, не помню точно какая. Я кое-где встречал такие настройки, но сам никогда не делал. Я всегда использую латинские названия, так меньше проблем и глюков.

      • Александр

        Можно прям в настройках dovecot указать папки на русском и они создадутся в ФС в нужной кодировке и даже outlook будет правильно распределять письма до тех пор пока не войдешь в roundcube. С этого момента в вебе будет 2 папки отправленные, например. Веб будет отправлять письма в .sent а оутлук в отправленные. Не проверял, но думаю, что тандерберд и мобильные клиенты присоединятся к вебу. И оутлук будет сам по себе в сторонке... а хочется, чтобы было все едино. Может кто-то уже боролся с этим?

        • У этой проблемы нет решения. Смысл в том, что разные клиенты создают разные папки, они так созданы. К примеру, мобильный клиент создаст какие-то свои. Я это постоянно наблюдаю и простого решения не знаю. То же самое будет с папкой для спама. Где-то она будет называться "Нежелательная почта", где-то "Спам", где-то "Spam" и т.д.

      • Александр

        Провел еще 1 эксперимент. В настройках отулука при подключении указал путь к корневой папке как inbox
        Перезапустил оутлук, все папки на русском, кладет как написано. Но если зайти в тандерберд или роундкуб - во входящей папки появились подпипки - отправленные, черновики и т.п. спешиал фо оутлук)) Причем сам оутлук напроч не хочет видеть папки .Sent. А мобильный клиент на андройде (стандартный) напроч не хочет видеть папки оутлука. Получается такая неразбериха....

  94. Заново переписал все конфиги, теперь выдает ошибку:

    localhost postfix/pipe[17840]: 4636A82A211: to=, relay=dovecot, delay=1, delays=0.14/0.01/0/0.87, dsn=5.1.1, status=bounced (user unknown)

    • Для таких же не умных как я. Указанная выше проблема решается очень просто:
      flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}
      нужно просто написать это без ошибки, добавив оба значка доллара)))

      Теперь же вылезло вот это:
      Error: User initialization failed: Namespace '': Ambiguous mail location setting, don't know what to do with it: myhost.com/root@myhost.com (try prefixing it with mbox: or maildir:)

      • Проверяй опять ошибки. Статья 100% рабочая. Я несколько серверов по ней настроил.

        • Погуглил, люди пишут, что это из-за того, что папки не создаются в mail_location. А вот почему они не создаются не понятно. Права на /mnt/mail/ vmail присвоил

        • Можешь сказать какая часть конфига отвечает за создание папок в /mnt/mail ?

  95. Здравствуйте. Посмотрите пожалуйста лог, и помогите исправить ошибку:

    Feb 7 13:34:36 localhost postfix/smtpd[14415]: connect from f169.i.mail.ru[94.100.178.88]
    Feb 7 13:34:37 localhost postfix/smtpd[14415]: Anonymous TLS connection established from f169.i.mail.ru[94.100.178.88]: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)
    Feb 7 13:34:38 localhost postfix/smtpd[14415]: B848682E63D: client=f169.i.mail.ru[94.100.178.88]
    Feb 7 13:34:38 localhost postfix/cleanup[14428]: B848682E63D: message-id=
    Feb 7 13:34:38 localhost postfix/qmgr[14051]: B848682E63D: from=, size=2972, nrcpt=2 (queue active)
    Feb 7 13:34:38 localhost postfix/smtpd[14415]: disconnect from f169.i.mail.ru[94.100.178.88]
    Feb 7 13:34:40 localhost postfix/smtp[14432]: B848682E63D: to=, relay=none, delay=2.9, delays=1.5/0.01/1.4/0, dsn=5.4.6, status=bounced (mail for myhost.com loops back to myself)
    Feb 7 13:34:40 localhost postfix/smtp[14432]: B848682E63D: to=, relay=none, delay=2.9, delays=1.5/0.01/1.4/0, dsn=5.4.6, status=bounced (mail for myhost.com loops back to myself)
    Feb 7 13:34:40 localhost postfix/cleanup[14428]: 44C3C82E63E: message-id=
    Feb 7 13:34:40 localhost postfix/qmgr[14051]: 44C3C82E63E: from=, size=4761, nrcpt=1 (queue active)
    Feb 7 13:34:40 localhost postfix/bounce[14433]: B848682E63D: sender non-delivery notification: 44C3C82E63E
    Feb 7 13:34:40 localhost postfix/qmgr[14051]: B848682E63D: removed
    Feb 7 13:34:40 localhost postfix/smtp[14434]: 44C3C82E63E: enabling PIX workarounds: disable_esmtp delay_dotcrlf for mxs.mail.ru[94.100.180.104]:25
    Feb 7 13:34:41 localhost postfix/smtp[14434]: 44C3C82E63E: to=, relay=mxs.mail.ru[94.100.180.104]:25, delay=1.5, delays=0/0.01/0.34/1.1, dsn=2.0.0, status=sent (250 OK id=1grf8q-0005t0-QE)
    Feb 7 13:34:41 localhost postfix/qmgr[14051]: 44C3C82E63E: removed

    Не уверен, но может это повлияло: PFA установился отлично, без ошибок, таблицы в БД создались, но по какой-то причине в саму панель не логиниться, выдает ошибку «Invalid token!» (может и это знаете как пофиксить). Далее я заполнил вручную созданные таблицы и возможно это как-то влияет на работу.

    Заранее благодарен за помощь.

  96. не отправляется лог почему-то, но данную проблему решил комментом строк с uid

    • А можно подробней, какие именно строки закомментили? у меня такая же проблема.

      • в конфиге dovecot, в самом начале
        было так:
        first_valid_uid = 1000
        last_valid_uid = 1000
        сделал так:
        #first_valid_uid = 1000
        #last_valid_uid = 1000
        и авторизация пошла

        • Увы, мне не помогло.

          • покажи что у тебя в логах dovecot

            • imap-login: Info: Disconnected (auth failed, 3 attempts in 109 secs): user=, method=PLAIN, rip=, lip=, TLS, session=

              • может логин не правильно вводишь, там нужно полностью с доменом вводить, как в настройке конфига было

                • Я полностью ввожу. Ну ладно, это сейчас не главная проблема, там ниже я оставил коммент, у меня почта не принимает письма, хотя на отправку идут.

                  • было так же, перенастраивал dns записи (у меня не правильные были). И открывал порт 25й на прием почты и все теперь ходит

                    • Порт открыт, ДНС правильно настроил, все равно не работает.

  97. Привет, сделал по твоим конфигам, возникла проблема авторизации. Не заходит, в почту, ни под одним пользователем, пишет, что неверный логин/пароль. И папка с почтой(доменом) в /mnt/mail не создается. В базе все пользователи есть

    • Надо лог postfix и dovecot смотреть и разбираться предметно. Где-то шибка. Статья рабочая.

  98. Добрый день! Настройку Postfix+Dovecot делал по вашему мануалу. Отправка почты работает, но входящая не идет.
    В логах Dovecot ошибок нет. В maillog следущее: Dec 28 11:06:22 mailsrv postfix/smtpd[5062]: connect from mail-ot1-f49.google.com[209.85.210.49]
    Dec 28 11:06:22 mailsrv postfix/smtpd[5062]: 72DB46074252: client=mail-ot1-f49.google.com[209.85.210.49]
    Dec 28 11:06:22 mailsrv postfix/cleanup[5065]: 72DB46074252: message-id=
    Dec 28 11:06:22 mailsrv postfix/qmgr[4957]: 72DB46074252: from=, size=2487, nrcpt=1 (queue active)
    Dec 28 11:06:22 mailsrv postfix/local[5066]: 72DB46074252: to=, orig_to=, relay=local, delay=0.32, delays=0.26/0.01/0/0.05, dsn=2.0.0, status=sent (delivered to mailbox)
    Dec 28 11:06:22 mailsrv postfix/qmgr[4957]: 72DB46074252: removed
    Dec 28 11:06:22 mailsrv postfix/smtpd[5062]: disconnect from mail-ot1-f49.google.com[209.85.210.49] В ящике входящих пусто

    • Чудес не бывает. Письмо положено в ящик - (delivered to mailbox)
      Я еще ни разу не видел, чтобы по логам чисто, а в ящике пусто. Где-то что-то напутано.

    • Роман решили ? у меня тоже письмо отправляется, но входящ пусто

  99. Здравствуйте, у меня в journalctl -xe появились вот такие ошибки:
    дек 16 17:05:46 Server postfix/smtpd[21664]: connect from mail-lj1-f172.google.com[209.85.208.172]
    дек 16 17:05:46 Server postfix/smtpd[21664]: Anonymous TLS connection established from mail-lj1-f172.google.com[209.85.208.172]: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)
    дек 16 17:05:46 Server postfix/smtpd[21664]: 6AC91CE06FE: client=mail-lj1-f172.google.com[209.85.208.172]
    дек 16 17:05:46 Server postfix/cleanup[21673]: 6AC91CE06FE: message-id=
    дек 16 17:05:46 Server postfix/qmgr[21636]: 6AC91CE06FE: from=, size=13300, nrcpt=2 (queue active)
    дек 16 17:05:46 Server postfix/smtpd[21664]: disconnect from mail-lj1-f172.google.com[209.85.208.172] ehlo=2 starttls=1 mail=1 rcpt=1 data=1 quit=1 commands=7
    дек 16 17:05:46 Server postfix/pipe[21676]: 6AC91CE06FE: to=, relay=dovecot, delay=0.31, delays=0.2/0.01/0/0.1, dsn=2.0.0, status=sent (delivered via dovecot service (lda(all_in@mysite.com,)Error: net_connect_unix(/var/run/dovecot/stats-writer) failed: Permission ))
    дек 16 17:05:46 Server postfix/pipe[21677]: 6AC91CE06FE: to=, relay=dovecot, delay=0.32, delays=0.2/0.02/0/0.09, dsn=2.0.0, status=sent (delivered via dovecot service (lda(username@mysite.com,)Error: net_connect_unix(/var/run/dovecot/stats-writer) failed: Permission d))
    дек 16 17:05:46 Server postfix/qmgr[21636]: 6AC91CE06FE: removed
    На отправку/приём писем это не влияет, но всё же хотелось бы узнать в чём проблемы.
    Dovecot 2.3.4
    Postfix 3.3.2

    • Вот на этот сокет у dovecot или postfix нет доступа.
      Error: net_connect_unix(/var/run/dovecot/stats-writer) failed: Permission
      За что он отвечает, не знаю, надо погуглить и почитать. Может это баг, а может реально права стоят не правильные. Раз все работает, значит сокет от не критичной службы.

      • Ну по сути это сервис собирающий статистику и в инете о нём информация толком отсутствует, но всё равно спасибо за ответ.

  100. Встречались упоминания в комментариях к этой статье по поводу exim'a, может кто-то поделится рабочим конфигом exim? Настроено exim+dovecot+mysql+postfixadmin. Уже месяц бьюсь не могу решить проблему. Все тесты сервер проходит: сервер не является публичным пересыльщиком почты, прикрутил spf, dkim, dmarc, user's на proxy и каждую ночь ip попадает в блэклист абузы (abuseat.org), в логах ничего нет.

  101. Добрый день.
    Уважаемый гуру)) у меня возникла ситуация. Что от одного заказчика стало с одной почты очень много писем генеррэироваться. По 20 тысяч в день при помощи жиры. Нагрузка очень большая и очень важные письма с того же домена сталкивался попадать в какую то невидимую очередь на 2 -3 часа. Какие параметры могли бы предложить увеличить пропускную способность постфткса? Большое спасибо за наводку. Экспериментировал с параметрами эффекта нужного не дало.

    • 20 тысяч в день это небольшая нагрузка. Надо смотреть, что там в моменте. Но даже если разом приходит 1000 писем, то postfix такую очередь разгребает минут за 10 даже при очень слабой конфигурации. Надо смотреть, в чем конкретно проблема и где возникают задержки. Универсальный совет - добавить памяти и процессора. Но может и диск тормозить.

      • Ну у меня сейчас там 2 проца выделено, но в перспективе переезд на более слабый сервер. Где максимум 2 ядра будет выделено, правда у них частота выше. Оперативки 2 гига и больше не получится сделать. Ну с диском я тоже к сожалению ничего сделать не могу. Ну как хоть попытаться повысить скорость обработки очереди. Вот сегодня в 12 пришло сообщение которое было отправлено вчера в 17:00, а за 5 минут до него дошло сообщение отправленное сегодня в 9:00.

        • Так надо логи смотреть, когда пришло письмо на сервер, сколько висело в очереди и по какой причине. Мониторить размер очереди, время ее сокращения. Без этого невозможно сделать какие-то выводы. Но если есть приличная нагрузка и большая очередь писем, то 2 гб памяти однозначно мало.

          • Исходящая очередь понятно как мониторить mailq (тут от силы 1 - 2 письма за день).
            А как входящую?
            Лог файл письма которое отправлено от клиента в 9:30
            "Dec 5 11:12:28 mail postfix/smtpd[36407]: C9065300068F5: client=mx1.roskazna.ru[83.229.175.71]
            Dec 5 11:13:08 mail postfix/cleanup[45270]: C9065300068F5: message-id=
            Dec 5 11:13:08 mail opendkim[820]: C9065300068F5: mx1.roskazna.ru [83.229.175.71] not internal
            Dec 5 11:13:08 mail opendkim[820]: C9065300068F5: not authenticated
            Dec 5 11:13:08 mail opendkim[820]: C9065300068F5: no signature data
            Dec 5 11:13:08 mail postfix/qmgr[45084]: C9065300068F5: from=, size=8546, nrcpt=2 (queue active)
            Dec 5 11:13:09 mail postfix/pipe[45280]: C9065300068F5: to=, relay=dovecot, delay=60, delays=60/0/0/0.23, dsn=2.0.0, status=sent (delivered via dovecot service)
            Dec 5 11:13:09 mail postfix/pipe[45281]: C9065300068F5: to=, relay=dovecot, delay=60, delays=60/0/0/0.25, dsn=2.0.0, status=sent (delivered via dovecot service)
            Dec 5 11:13:09 mail postfix/qmgr[45084]: C9065300068F5: removed
            "

            • По логу видно, что сервер быстро принял и положил письмо в ящик. Может проблема не на принимающей стороне, а на отправляющем сервере?

              • Ситуация следующая это р*сказна, думаю у них там не один почтовый сервер. Начали с одного ящика кучу бесполезных уведомлений слать на наших 20 почтовых ящиков, это и есть та куча писем. Мы с ними связались попросили это отключить или вернуть как было ноль реакции, вот заблокировал их одну почтовую учетку для рассылки. Но теперь получается они отправляют, мой сервер шлёт им запрос что письмо не принято, потом их сервер шлёт что эта почтовая учетка не принимает письма.
                Может быть можно как то посмотреть более подробный лог и там что то будет понятно. У меня стоит log level 2.

                • Так а что посмотреть хочется в логах? Если они шлют вам письма и не получается договориться, то лучше все же не блокировать учетки, а принимать все письма, а левые сразу каким-нибудь фильтром уже в ящике сразу удалять. Тогда хоть будет понятно, что все письма доходят. Опять же, по логу, вы письмо сразу же приняли. Если у вас нет на сервере проблем и от других серверов письма не застревают, то скорее всего это не ваша проблема, а сервера, который отправляет письма. У него огромная очередь отправки и он тормозит, поэтому к вам письма приходят с опозданием.

                  Вы можете посмотреть по заголовкам письма, которое задержалось, в какое время оно было создано, в какое время было отправлено на исходящий сервер, в какое время попало на ваш сервер. Там и будет видно, где задержки.

                  • Огромное спасибо за уделенное время. После ваших слов у меня появилось больше уверенности для разговора с ними и доказательства что у них что то не так.

  102. Zerox
    Подскажите, пожалуйста, сколько все это великолепие кушает ресурсов? Я имею ввиду весь стек из статьи со всеми web панелями и процессами MySQL. Интересует RAM, CPU.

    • Очень мало. Начинать можно с 1 cpu и 1 gm ram. 50 пользователей запросто тянет конфа с 2 cpu, 4gb ram. Тут больше вопрос к производительности диска. Но до 100 юзеров даже одиночный sata диск справится без проблем.

  103. Александр

    Добрый день!
    Ставил все с 0, шел по вашим статьям и погиб на настройке Dovecot

    Все шло успешно до проверки отправленой почты:
    cat /var/log/maillog

    Nov 27 06:28:26 mail postfix/postfix-script[1007]: starting the Postfix mail system
    Nov 27 06:28:26 mail postfix/master[1013]: daemon started -- version 2.10.1, configuration /etc/postfix
    Nov 29 03:31:53 mail postfix/postfix-script[27823]: stopping the Postfix mail system
    Nov 29 03:31:53 mail postfix/master[1013]: terminating on signal 15
    Nov 29 03:31:53 mail postfix/postfix-script[27905]: starting the Postfix mail system
    Nov 29 03:31:53 mail postfix/master[27907]: daemon started -- version 2.10.1, configuration /etc/postfix
    Nov 29 03:31:59 mail dovecot: master: Error: service(auth): unlink(/var/run/dovecot/auth-master) failed: Is
    Nov 29 03:31:59 mail dovecot: master: Fatal: Failed to start listeners
    Nov 29 03:37:28 mail postfix/postfix-script[28021]: stopping the Postfix mail system
    Nov 29 03:37:28 mail postfix/master[27907]: terminating on signal 15
    Nov 29 03:37:28 mail postfix/postfix-script[28103]: starting the Postfix mail system
    Nov 29 03:37:28 mail postfix/master[28105]: daemon started -- version 2.10.1, configuration /etc/postfix
    Nov 29 03:37:35 mail dovecot: master: Error: service(auth): unlink(/var/run/dovecot/auth-master) failed: Is
    Nov 29 03:37:35 mail dovecot: master: Fatal: Failed to start listeners
    Nov 29 03:45:15 mail postfix/postfix-script[28254]: stopping the Postfix mail system
    Nov 29 03:45:15 mail postfix/master[28105]: terminating on signal 15
    Nov 29 03:45:15 mail postfix/postfix-script[28335]: starting the Postfix mail system
    Nov 29 03:45:15 mail postfix/master[28337]: daemon started -- version 2.10.1, configuration /etc/postfix
    Nov 29 03:45:22 mail dovecot: master: Error: service(auth): unlink(/var/run/dovecot/auth-master) failed: Is
    Nov 29 03:45:22 mail dovecot: master: Fatal: Failed to start listeners
    Nov 29 04:07:34 mail postfix/smtpd[28846]: connect from mail[::1]
    Nov 29 04:07:34 mail postfix/smtpd[28846]: 5537F4696FC: client=mail[::1]
    Nov 29 04:07:34 mail postfix/cleanup[28849]: 5537F4696FC: message-id=<20181129040734.5537F4696FC@mail.locald
    Nov 29 04:07:34 mail postfix/qmgr[28339]: 5537F4696FC: from=, size=450, nrcpt=1 (queue act
    Nov 29 04:07:34 mail postfix/smtpd[28846]: disconnect from mail[::1]
    Nov 29 04:07:36 mail postfix/smtp[28850]: 5537F4696FC: to=, relay=mxs.mail.ru[94.109, dsn=5.0.0, status=bounced (host mxs.mail.ru[94.100.180.31] said: 550 non-local sender verification failed
    Nov 29 04:07:36 mail postfix/cleanup[28849]: 693C145C30B: message-id=<20181129040736.693C145C30B@mail.locald
    Nov 29 04:07:36 mail postfix/bounce[28851]: 5537F4696FC: sender non-delivery notification: 693C145C30B
    Nov 29 04:07:36 mail postfix/qmgr[28339]: 693C145C30B: from=, size=2371, nrcpt=1 (queue active)
    Nov 29 04:07:36 mail postfix/qmgr[28339]: 5537F4696FC: removed
    Nov 29 04:07:36 mail postfix/smtp[28850]: warning: no MX host for cheapcat.ru has a valid address record
    Nov 29 04:07:36 mail postfix/smtp[28850]: 693C145C30B: to=, relay=none, delay=0.14, delaysomain name not found. Name service error for name=mail.cheapcat.ru type=AAAA: Host found but no data record
    Nov 29 04:07:36 mail postfix/qmgr[28339]: 693C145C30B: removed
    Nov 29 04:42:06 mail postfix/postfix-script[29317]: stopping the Postfix mail system
    Nov 29 04:42:06 mail postfix/master[28337]: terminating on signal 15
    Nov 29 04:42:06 mail postfix/postfix-script[29399]: starting the Postfix mail system
    Nov 29 04:42:06 mail postfix/master[29401]: daemon started -- version 2.10.1, configuration /etc/postfix
    Nov 29 08:16:08 mail postfix/postfix-script[792]: stopping the Postfix mail system
    Nov 29 08:16:08 mail postfix/master[29401]: terminating on signal 15
    Nov 29 08:16:08 mail postfix/postfix-script[873]: starting the Postfix mail system
    Nov 29 08:16:08 mail postfix/master[875]: daemon started -- version 2.10.1, configuration /etc/postfix
    Nov 29 08:30:36 mail postfix/postfix-script[1169]: stopping the Postfix mail system
    Nov 29 08:30:36 mail postfix/master[875]: terminating on signal 15
    Nov 29 08:30:36 mail postfix/postfix-script[1251]: starting the Postfix mail system
    Nov 29 08:30:37 mail postfix/master[1253]: daemon started -- version 2.10.1, configuration /etc/postfix
    Nov 29 08:43:22 mail postfix/postfix-script[1417]: stopping the Postfix mail system
    Nov 29 08:43:22 mail postfix/master[1253]: terminating on signal 15
    Nov 29 08:43:22 mail postfix/postfix-script[1498]: starting the Postfix mail system
    Nov 29 08:43:22 mail postfix/master[1500]: daemon started -- version 2.10.1, configuration /etc/postfix

    Вот такой ответ мне дает.
    И залогиниться в не могу. Просто гворит, что не найден такой ящик.
    Но письма на сервер уходят

    • Где-то что-то напутано. Тут и dovecot не стартует, и в postfix ошибки. Наверняка где-то ошибки в конфигах. Можно либо гуглить ошибки в логах и исправлять, либо все с нуля аккуратно настраивать.

  104. Привет! Спасибо за хорошие и очень понятные статьи.

    Столкнулся с проблемой - opendkim[7426]: opendkim: /etc/opendkim.conf: refile:/etc/postfix/dkim/signingtable: dkimf_db_open(): Permission denied
    Устанавливал по данной статье один в один, ну только доменное имя другое, само собой.
    При чем, уже третий сервер настраиваю по этому мануалу, но вот ошибку эту побороть не могу.
    Права все указал, как в статье. Куда копать?
    Гугл не очень помогает, раз я решил написать тут (

    • Так а чем тут помочь? Четко написано - проблемы с правами доступа к файлу /etc/postfix/dkim/signingtable, сервис dkim не может его прочитать.

      • Виктор

        В том то и дело, что права выставлены, какие и требуются. Я бы по ерунде не писал(
        # ls-l
        -rw-r----- 1 root opendkim 93 Nov 26 01:23 keytable
        -r--r----- 1 root opendkim 887 Nov 26 01:22 mail.[domainname].private
        -rw-r--r-- 1 root opendkim 311 Nov 26 01:22 mail.[domaiiname].txt
        -rw-r----- 1 root opendkim 45 Nov 26 01:24 signingtable
        пользователь opendkim, postfix и root в группе opendkim. Права на чтение есть у всех.
        Opendkim запускается от opendkim:opendkim.
        Но все тщетно... Я уже какие только права не ставил. Даже 777 ради эксперимента.
        Пробовал также удалять и заново устанавливать opendkim.

        • А в саму директорию с самого корня диска есть доступ у opendkim?

          • Виктор

            [root@mail etc]# ls -l /
            total 28
            lrwxrwxrwx. 1 root root 7 Nov 19 16:15 bin -> usr/bin
            dr-xr-xr-x. 5 root root 4096 Nov 21 23:49 boot
            drwxr-xr-x 21 root root 3440 Nov 25 23:32 dev
            drwxr-xr-x. 107 root root 8192 Nov 27 15:32 etc
            drwxr-xr-x. 118 root root 4096 Nov 27 00:15 home
            lrwxrwxrwx. 1 root root 7 Nov 19 16:15 lib -> usr/lib
            lrwxrwxrwx. 1 root root 9 Nov 19 16:15 lib64 -> usr/lib64
            drwxr-xr-x. 2 root root 6 Apr 11 2018 media
            drwxr-xr-x. 2 root root 6 Apr 11 2018 mnt
            drwxr-xr-x. 3 root root 16 Nov 21 23:48 opt
            dr-xr-xr-x 229 root root 0 Nov 25 23:32 proc
            dr-xr-x---. 8 root root 276 Nov 26 23:27 root
            drwxr-xr-x 34 root root 980 Nov 27 05:28 run
            lrwxrwxrwx. 1 root root 8 Nov 19 16:15 sbin -> usr/sbin
            drwxr-xr-x. 2 root root 6 Apr 11 2018 srv
            dr-xr-xr-x 13 root root 0 Nov 27 15:02 sys
            drwxrwxrwt. 14 root root 4096 Nov 27 15:33 tmp
            drwxr-xr-x. 13 root root 155 Nov 19 16:15 usr
            drwxr-xr-x. 23 root root 4096 Nov 26 23:20 var
            drwxr-xr-x 6 apache apache 83 Nov 25 00:57 web
            ---------------------------------------------------------------------
            [root@mail etc]# ls -l | grep opendkim
            drwxr-xr-x 3 root opendkim 74 Nov 26 01:19 opendkim
            -rw-r--r-- 1 root opendkim 396 Nov 26 23:37 opendkim.conf
            ---------------------------------------------------------------------
            [root@mail etc]# ls -l | grep postfix
            drw-r--r--. 5 root root 4096 Nov 26 01:30 postfix
            ---------------------------------------------------------------------
            [root@mail etc]# getent group | grep root
            root:x:0:opendkim
            opendkim:x:988:postfix,root,opendkim

            Даже будучи в группе root, сервис не запускается (
            Оставлю так, пожалуй...

  105. kolbaser2010

    К сожалению, старую скачать не удается(
    Может у Вас есть рабочая ссылка на старую версию?

    Заранее благодарен.

  106. Дмитрий

    Добрый день!
    Подскажите пожалуйста, может конечно я где-то накосячил.
    Делал по вашим инструкциям https://serveradmin.ru/ustanovka-lamp-apache-php-mysql-v-centos-7/
    После этого, настроил на этом же сервере Zabbix, он работает, но когда начал ставить postfix-3,2
    Столкнулся с проблемой
    "$CONF['configured'] = true; $CONF['default_language'] = 'ru'; $CONF['database_type'] = 'mysqli'; $CONF['database_host'] = 'localhost'; $CONF['database_user'] = 'postfix'; $CONF['database_password'] = '123456789'; $CONF['database_name'] = 'postfix'; $CONF['admin_email'] = 'pivkin_ds@maxisvet.com'; $CONF['encrypt'] = 'md5crypt'; $CONF['default_aliases'] = array ( 'abuse' => 'root', 'hostmaster' => 'root', 'postmaster' => 'root', 'webmaster' => 'root' ); $CONF['domain_path'] = 'YES'; $CONF['domain_in_mailbox'] = 'YES';"
    Как ее победить?
    При этом Zabbix работает без проблем.

    Заранее спасибо за помощь.

    • Дмитрий

      Вот более точный ответ от postfix
      "$CONF['configured'] = true; $CONF['default_language'] = 'ru'; $CONF['database_type'] = 'mysqli'; $CONF['database_host'] = 'localhost'; $CONF['database_user'] = 'postfix'; $CONF['database_password'] = 'asWQgfRT123!'; $CONF['database_name'] = 'postfix'; $CONF['admin_email'] = 'pivkin_ds@maxisvet.com'; $CONF['encrypt'] = 'md5crypt'; $CONF['default_aliases'] = array ( 'abuse' => 'root', 'hostmaster' => 'root', 'postmaster' => 'root', 'webmaster' => 'root' ); $CONF['domain_path'] = 'YES'; $CONF['domain_in_mailbox'] = 'YES';ERROR: the templates_c directory doesn't exist or isn't writeable for the webserver"

      • Что-то такое припоминаю, сталкивался. Если не ошибаюсь, то это с новой версией postfixadmin ошибка. Не дошли руки поправить статью. Как вариант, использовать туже версию postfixadmin, что в статье. Принципиальных отличий все равно не.

  107. Здравствуйте, после пункта "а также проверяем работу phpmyadmin — http://188.35.19.125/phpmyadmin/. Его нужно настроить, об этом рассказано в статье, которую я привел чуть выше." Я прошел по ссылке и обнаружил, что в результате после установки phpmyadmin у меня в каталоге /etc/httpd/conf.d/ не появился конфиг phpMyAdmin.conf

    С чем это может быть связано?

    • C этим разобрался, не устанавливался phpMyAdmin без epel

      Теперь еще одна неприятность настигла(((

      http//myip/postfixadmin/setup.php

      Выдает:
      Not Found
      The requested URL /postfixadmin/setup.php was not found on this server.

      Все предыдущие шаги выполнены.

      • Нужно смотреть настройки веб сервера. Там ошибка.

      • Если вы настраивали ваш вебсервер по мануалу с этого сайта, т.е. создавали site1.ru и сделали структуру папок, как было в примере, /web/.. - то отключите ваш тестовый файл конфигурации site1.ru.conf и работа должны восстановиться и setup.php будет работать.

  108. привет,
    как всегда полезная инфа, уже не первый раз обращаюсь к ресурсу!

    вопрос к колеегам, а вот имея уже установленный почтовик (egroupware+postfix+dovecot+mysql) можно ли прикрутить postfixadmin (конечно, так что б он подтянул конфу почтовика)?
    вообще, у меня задача массовая смена поролей пользователей и введение политик длины пароля. вот пока не пойму, как решить
    спасибо!

    • Нужно смотреть структуру текущей базы данных. Если она совпадает с postfixadmin, то можно его добавить. Если нет, то нужно переносить данные из старой базы в новую для postfixadmin.

      • угу. была такая мысль... ок, это длинный путь, как я полнял. есть подозрение, что структура иная
        тогда, может будут идеи как с паролями решить? пока роюсь в настройках dovecot и т.д. - не вижу

        • У вас пользователи сами меняют свои пароли? Если не сами, то в чем проблема при выдаче пароля сразу делать сложный? Этот вопрос решается в момент создания учетки. Соответственно, настраивается в менеджере учетных записей.

          • сорри, я совсем не подробно все обрисовал...
            есть уже работающая система и есть уже почти 1000 пользователей. Сейчас принято решение поменять все пароли и задать политику длины пароля. вот ищу как эту политику реализовать на моей связке (postfix+egroupware+dovecot).
            вот, спросил совета, мож кто делал ;)

  109. Андрей

    Как в роундкубе сделать общую адрессную книгу, хотя бы тех контактов которые есть в базе данных постфикс (существующих контактов домена)

  110. Валентин

    Здравствуйте. А почему ничего не написано про DMARC?

  111. Добрый день, настраивал по вышей инструкции. Почта не ходит, подскажите куда смотреть?

    Sep 28 15:53:38 mail postfix/pipe[12875]: AFEDC40B31: to=, relay=dovecot, delay=361, delays=361/0.03/0/0.18, dsn=4.3.0, status=deferred (temporary failure)
    Sep 28 15:53:38 mail postfix/pipe[12876]: AFEDC40B31: to=, relay=dovecot, delay=361, delays=361/0.04/0/0.19, dsn=4.3.0, status=deferred (temporary failure)
    Sep 28 15:53:38 mail postfix/pipe[12880]: 3C9FD40B2E: to=, relay=dovecot, delay=563, delays=563/0.05/0/0.2, dsn=4.3.0, status=deferred (temporary failure)
    Sep 28 15:53:38 mail postfix/pipe[12878]: 3C9FD40B2E: to=, relay=dovecot, delay=563, delays=563/0.04/0/0.26, dsn=4.3.0, status=deferred (temporary failure)

    • Ерлан Амантайулы

      Все вычистили предыдущее с конфига dovecot? Если что в самом конце добавляются конфиги, их обязательно надо закомментировать. Если у Вас с подсветкой все, то вполне возможно после ! все будет закрашиваться как комментарий, то есть зеленым. Будьте внимательны. Ищите ошибку в логе /var/log/maillog и /var/log/dovecot/main.log.

  112. Сергей

    Не могу понять, где может быть пропущено =

    postmap: fatal: /etc/postfix/main.cf, line 758-766: missing '=' after attribute name: "submission inet n - n - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_wrappermode=no -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject -o smtpd_relay_restrictions=permit_mynetworks,permit_sasl_authenticated,defer_unauth_destination -o milter_macro_daemon_name=ORIGINATING"
    [root@mail postfix]# systemctl restart postfix
    Job for postfix.service failed because the control process exited with error code. See "systemctl status postfix.service" and "journalctl -xe" for details.

  113. Добрый день, Zerox!

    алиасы прописаны как у вас.

    в postfixadmin создан алиас домен - mail.exemple.com на домен exemple.com

    есть ящик - test@exemple.com

    Я пишу на почту - test@mail.exemple.com

    Но мне приходит отбивка, что такой пользователь не найден.

    Вопрос - как проверить корректность скриптов postfix-a которые обращаются в БД mysql?

    я полагаю, что мне надо либо изменить параметры
    mydomain
    mydestination

    relay_domains = mysql:/etc/postfix/mysql/relay_domains.cf
    virtual_alias_maps = mysql:/etc/postfix/mysql/virtual_alias_maps.cf
    mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf,
    mysql:/etc/postfix/mysql/virtual_alias_domain_catchall_maps.cf
    virtual_mailbox_domains = mysql:/etc/postfix/mysql/virtual_mailbox_domains.cf
    virtual_mailbox_maps = mysql:/etc/postfix/mysql/virtual_mailbox_maps.cf,
    mysql:/etc/postfix/mysql/virtual_alias_domain_mailbox_maps.cf
    alias_maps = hash:/etc/aliases
    alias_database = hash:/etc/aliases
    mydestination = localhost.$mydomain, localhost
    myorigin = $mydomain
    mydomain = example.com
    myhostname = post.example.com

  114. Добрый день!

    Есть ли смысл обновлять Postfix до последней версии?
    Сейчас в CentOs 7 1804 по умолчанию Postfix версии 2.10.1, а на оф сайте последняя стабильная версия уже 3.3.

  115. Добрый день! Спасибо за отличную статью! Когда-то давно я поднимал почтарь на лине. Все было отлично. Сейчас поднял по Вашей статье и у меня такая проблемка. Все перепроверил/перерыл, но не могу найти решение. Это связано с сертификатами?

    Aug 16 17:32:13 mail postfix/smtpd[2018]: connect from unknown[10.0.20.3]
    Aug 16 17:32:13 mail postfix/smtpd[2018]: Anonymous TLS connection established from unknown[10.0.20.3]: TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)
    Aug 16 17:32:13 mail postfix/smtpd[2018]: NOQUEUE: reject: RCPT from unknown[10.0.20.3]: 504 5.5.2 : Helo command rejected: need fully-qualified hostname; from= to= proto=ESMTP helo=
    Aug 16 17:32:13 mail postfix/smtpd[2018]: lost connection after RCPT from unknown[10.0.20.3]
    Aug 16 17:32:13 mail postfix/smtpd[2018]: disconnect from unknown[10.0.20.3]

    Выключал iptables, к одному днс подключал, unknown просто меняется на имя машины, ошибка остается. Не могу войти почтовым клиентом. Всегда спрашивает пароль, как будто он не верен. Базы все в порядке. Кто-нибудь встречался с такой ошибкой?

    • Конкретно здесь вот эта ошибка:
      Helo command rejected: need fully-qualified hostname
      Она связана с настройками smtpd_helo_restrictions. С ними надо либо разобраться, либо совсем отключить. iptables тут не при чем.

  116. Здравствуйте, спасибо за ваш труд переодически просматриваю ваши статьи, может кто подскажет, есть iredmail на нём несколько доменов и у каждого из них свой ip, тоесть domain1.org - 1.1.1.1 domain2.org - 2.2.2.2 и получается что при отправке с domain2.org - 2.2.2.2 на условно mail.com то если посмотреть детализацию письма на mail.com видем в полях "Received: from" и "by mail" domain1.org - 1.1.1.1. тоесть, как заставить Postfix или куда копать, не использовать при отправке default hostname, а каждый домен был независимым транспортом и при этом в письме не висели хвости default hostname. Буду очень признателен за подказку уже весь инет перерил, спс.

  117. разобрался )))
    + прикрутил rspamd

  118. Еще косяк в конфиге выше

    postfix[2097]: fatal: /etc/postfix/main.cf, line 41: missing '=' after attribute name: "mysql:/etc/postfix/mysq...maps.cf"

    правим на

    mysql = /etc/postfix/mysql/virtual_alias_domain_maps.cf

    и опять косяк

    postfix[2124]: /usr/sbin/postconf: warning: /etc/postfix/main.cf: unused parameter: mysql=/etc/postfix/mysql/virtual_alias _domain_maps.cf

    и ни хре на не работает

  119. Мало того
    Теперь для конфига нужно использовать config.local.php

    Warning: config.local.php - NOT FOUND
    It's Recommended to store your own settings in config.local.php instead of editing config.inc.php
    Create the file, and edit as appropriate (e.g. select database type etc)

  120. Postfixadmin 3.2

    The requested URL /postfixadmin/setup.php was not found on this server.

    Дело в том что

    The Postfix Admin directory layout changed.
    Please update your webserver config so that the DocumentRoot or Alias points to the directory "public".

    Те теперь придется вносить доп изменения в конфиг httpd:

    https://github.com/postfixadmin/postfixadmin/issues/173

    Alias /postfixadmin/ "/var/www/html/postfixadmin/public/"

    Options FollowSymLinks
    AllowOverride None
    Allow from all
    Order allow,deny

  121. Евгений

    Статья шикарная!
    Но вот заработало у меня через dovecot только после добавления
    local_transport = dovecot

  122. Евгений

    Добавить хотел старые девайсы репорты шлют только по smtp а нужно чтобы пересылка была по smtps

  123. Евгений

    Отличная статья но у меня вопрос другого характера. в сетке очень много старых девайсов, стоит задача сделать некий "почтовик" который бы принимал от них репорты и пересылал на почту например яндекса. Каким образом это реализовать ?

    • Postfix умеет так делать. На нем можно настроить почтовый релей вообще без авторизации, если старые устройства не умеют это делать. Перечислить их по ip. Затем настроить отправку всей почты в какой-то другой ящик. Это сделать реально, но готовых инструкций у меня нет.

  124. В статье ошибка.

    Тк ранее хеширование паролей было отключено то соотв. в dovecot-mysql.conf нужно указать, что пароль идет прямым текстом:

    default_pass_scheme = CLEARTEXT

  125. Аноним

    Если у пользователи будет входить на почту только с помощью браузера-web интерфейс (т.е. pop3 не нужен вообще), тогда dovecot не нужен?

    • Аноним

      Не пойму зачем нужен dovecot вообще? Только для pop3?
      Будет ли это всё работать без dovecot, если на почту будем входить только с помощью бразуера-web интерфейс?

  126. Пришлось качать именно postfixadmin-3.0.2.tar.gz
    т.к. 3.1 - ругается на отсутствие папки tempaltes_c
    3.2 - отсутствие файла setup.php

    • Аноним

      в 3.2 setup.php находится в public/, там же создай ручками templates_c и дай права на нее

  127. Что такое "backupmx"?

    • Обычно это резервный mx сервер, у которого более низкий приоритет, по сравнению с основным. По-умолчанию вся почта идет на основной сервер, но если он не доступен, то почта будет отправляться на второй сервер.

  128. а зачем тут "Прошу поделиться в комментариях тем, у кого есть бОльший опыт" буква о - большая?
    чтобы не перепутали с болЬший или большИй?

  129. Приветствую!
    Недавно заметил небольшой косяк в настройках Postfix.
    В принципе, совсем некритичный но все же.
    Косяк касается Postfix reverse DNS lookup — https://serverfault.com/questions/911789/postfix-forced-reverse-lookup-for-incoming-connections
    При желании, если найдёте инфу полезной можете добавить в статью.

  130. [root@ksez ~]# cat /var/log/maillog
    Mar 30 21:59:57 mailcentos postfix/postfix-script[2847]: starting the Postfix mail system
    Mar 30 21:59:57 mailcentos postfix/master[2888]: daemon started -- version 2.10.1, configuration /etc/postfix
    Mar 30 22:22:04 ksez postfix/postfix-script[2178]: starting the Postfix mail system
    Mar 30 22:22:04 ksez postfix/master[2225]: daemon started -- version 2.10.1, configuration /etc/postfix
    Mar 30 22:33:55 ksez postfix/postfix-script[1107]: starting the Postfix mail system
    Mar 30 22:33:55 ksez postfix/master[1109]: daemon started -- version 2.10.1, configuration /etc/postfix
    Mar 30 23:00:31 ksez postfix/smtpd[2276]: connect from localhost[::1]
    Mar 30 23:00:31 ksez postfix/smtpd[2276]: BA45340FDFCE: client=localhost[::1]
    Mar 30 23:00:31 ksez postfix/cleanup[2279]: BA45340FDFCE: message-id=
    Mar 30 23:00:31 ksez postfix/smtpd[2276]: disconnect from localhost[::1]
    Mar 30 23:00:31 ksez postfix/qmgr[1111]: BA45340FDFCE: from=, size=557, nrcpt=1 (queue active)
    Mar 30 23:00:31 ksez postfix/local[2281]: BA45340FDFCE: to=, relay=local, delay=0.04, delays=0.02/0.02/0/0, dsn=2.0.0, status=sent (delivered to mailbox)
    Mar 30 23:00:31 ksez postfix/qmgr[1111]: BA45340FDFCE: removed
    Mar 30 23:28:40 ksez postfix/smtpd[2507]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:28:41 ksez postfix/master[1109]: warning: process /usr/libexec/postfix/smtpd pid 2507 exit status 1
    Mar 30 23:28:41 ksez postfix/master[1109]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 30 23:29:41 ksez postfix/smtpd[2508]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:29:42 ksez postfix/master[1109]: warning: process /usr/libexec/postfix/smtpd pid 2508 exit status 1
    Mar 30 23:29:42 ksez postfix/master[1109]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 30 23:30:42 ksez postfix/smtpd[2509]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:30:43 ksez postfix/master[1109]: warning: process /usr/libexec/postfix/smtpd pid 2509 exit status 1
    Mar 30 23:30:43 ksez postfix/master[1109]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 30 23:31:43 ksez postfix/smtpd[2510]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:31:44 ksez postfix/master[1109]: warning: process /usr/libexec/postfix/smtpd pid 2510 exit status 1
    Mar 30 23:31:44 ksez postfix/master[1109]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 30 23:32:44 ksez postfix/smtpd[2511]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:32:45 ksez postfix/master[1109]: warning: process /usr/libexec/postfix/smtpd pid 2511 exit status 1
    Mar 30 23:32:45 ksez postfix/master[1109]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 30 23:33:45 ksez postfix/smtpd[2513]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:33:46 ksez postfix/master[1109]: warning: process /usr/libexec/postfix/smtpd pid 2513 exit status 1
    Mar 30 23:33:46 ksez postfix/master[1109]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 30 23:34:46 ksez postfix/smtpd[2514]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:34:47 ksez postfix/master[1109]: warning: process /usr/libexec/postfix/smtpd pid 2514 exit status 1
    Mar 30 23:34:47 ksez postfix/master[1109]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 30 23:35:47 ksez postfix/smtpd[2525]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:35:48 ksez postfix/master[1109]: warning: process /usr/libexec/postfix/smtpd pid 2525 exit status 1
    Mar 30 23:35:48 ksez postfix/master[1109]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 30 23:36:48 ksez postfix/smtpd[2675]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:36:49 ksez postfix/master[1109]: warning: process /usr/libexec/postfix/smtpd pid 2675 exit status 1
    Mar 30 23:36:49 ksez postfix/master[1109]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 30 23:37:49 ksez postfix/smtpd[2676]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:37:50 ksez postfix/master[1109]: warning: process /usr/libexec/postfix/smtpd pid 2676 exit status 1
    Mar 30 23:37:50 ksez postfix/master[1109]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 30 23:38:50 ksez postfix/smtpd[2677]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:38:51 ksez postfix/master[1109]: warning: process /usr/libexec/postfix/smtpd pid 2677 exit status 1
    Mar 30 23:38:51 ksez postfix/master[1109]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 30 23:39:51 ksez postfix/smtpd[2811]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:39:52 ksez postfix/master[1109]: warning: process /usr/libexec/postfix/smtpd pid 2811 exit status 1
    Mar 30 23:39:52 ksez postfix/master[1109]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 30 23:40:52 ksez postfix/smtpd[2812]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:40:53 ksez postfix/master[1109]: warning: process /usr/libexec/postfix/smtpd pid 2812 exit status 1
    Mar 30 23:40:53 ksez postfix/master[1109]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 30 23:41:53 ksez postfix/smtpd[2814]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:41:54 ksez postfix/master[1109]: warning: process /usr/libexec/postfix/smtpd pid 2814 exit status 1
    Mar 30 23:41:54 ksez postfix/master[1109]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 30 23:42:55 ksez postfix/smtpd[2841]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:42:56 ksez postfix/master[1109]: warning: process /usr/libexec/postfix/smtpd pid 2841 exit status 1
    Mar 30 23:42:56 ksez postfix/master[1109]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 30 23:43:56 ksez postfix/smtpd[2856]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:43:57 ksez postfix/master[1109]: warning: process /usr/libexec/postfix/smtpd pid 2856 exit status 1
    Mar 30 23:43:57 ksez postfix/master[1109]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 30 23:44:57 ksez postfix/smtpd[2936]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:44:58 ksez postfix/master[1109]: warning: process /usr/libexec/postfix/smtpd pid 2936 exit status 1
    Mar 30 23:44:58 ksez postfix/master[1109]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 30 23:45:58 ksez postfix/smtpd[2937]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:45:59 ksez postfix/master[1109]: warning: process /usr/libexec/postfix/smtpd pid 2937 exit status 1
    Mar 30 23:45:59 ksez postfix/master[1109]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 30 23:46:59 ksez postfix/smtpd[2953]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:47:00 ksez postfix/master[1109]: warning: process /usr/libexec/postfix/smtpd pid 2953 exit status 1
    Mar 30 23:47:00 ksez postfix/master[1109]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 30 23:48:00 ksez postfix/smtpd[2957]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:48:01 ksez postfix/master[1109]: warning: process /usr/libexec/postfix/smtpd pid 2957 exit status 1
    Mar 30 23:48:01 ksez postfix/master[1109]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 30 23:49:01 ksez postfix/smtpd[2962]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:49:02 ksez postfix/master[1109]: warning: process /usr/libexec/postfix/smtpd pid 2962 exit status 1
    Mar 30 23:49:02 ksez postfix/master[1109]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 30 23:49:25 ksez postfix/postfix-script[2977]: stopping the Postfix mail system
    Mar 30 23:49:25 ksez postfix/master[1109]: terminating on signal 15
    Mar 30 23:49:26 ksez postfix/postfix-script[3059]: starting the Postfix mail system
    Mar 30 23:49:26 ksez postfix/master[3061]: daemon started -- version 2.10.1, configuration /etc/postfix
    Mar 30 23:49:26 ksez postfix/qmgr[3063]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:49:27 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3063 exit status 1
    Mar 30 23:49:27 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 30 23:50:27 ksez postfix/qmgr[3102]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:50:28 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3102 exit status 1
    Mar 30 23:50:28 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 30 23:51:07 ksez postfix/master[3061]: warning: unix_trigger_event: read timeout for service public/qmgr
    Mar 30 23:51:28 ksez postfix/qmgr[3104]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:51:29 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3104 exit status 1
    Mar 30 23:51:29 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 30 23:52:29 ksez postfix/qmgr[3107]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:52:30 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3107 exit status 1
    Mar 30 23:52:30 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 30 23:53:30 ksez postfix/qmgr[3112]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:53:31 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3112 exit status 1
    Mar 30 23:53:31 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 30 23:54:02 ksez postfix/smtpd[3113]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:54:03 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3113 exit status 1
    Mar 30 23:54:03 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 30 23:54:31 ksez postfix/qmgr[3114]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:54:32 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3114 exit status 1
    Mar 30 23:54:32 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 30 23:55:03 ksez postfix/smtpd[3115]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:55:04 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3115 exit status 1
    Mar 30 23:55:04 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 30 23:55:32 ksez postfix/qmgr[3116]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:55:33 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3116 exit status 1
    Mar 30 23:55:33 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 30 23:56:04 ksez postfix/smtpd[3117]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:56:05 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3117 exit status 1
    Mar 30 23:56:05 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 30 23:56:33 ksez postfix/qmgr[3118]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:56:34 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3118 exit status 1
    Mar 30 23:56:34 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 30 23:57:05 ksez postfix/smtpd[3119]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:57:06 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3119 exit status 1
    Mar 30 23:57:06 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 30 23:57:34 ksez postfix/qmgr[3121]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:57:35 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3121 exit status 1
    Mar 30 23:57:35 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 30 23:58:06 ksez postfix/smtpd[3122]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:58:07 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3122 exit status 1
    Mar 30 23:58:07 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 30 23:58:35 ksez postfix/qmgr[3123]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:58:36 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3123 exit status 1
    Mar 30 23:58:36 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 30 23:59:07 ksez postfix/smtpd[3125]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:59:08 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3125 exit status 1
    Mar 30 23:59:08 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 30 23:59:36 ksez postfix/qmgr[3126]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 30 23:59:37 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3126 exit status 1
    Mar 30 23:59:37 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:00:08 ksez postfix/smtpd[3255]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:00:09 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3255 exit status 1
    Mar 31 00:00:09 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:00:37 ksez postfix/qmgr[3257]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:00:38 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3257 exit status 1
    Mar 31 00:00:38 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:01:09 ksez postfix/smtpd[3271]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:01:10 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3271 exit status 1
    Mar 31 00:01:10 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:01:38 ksez postfix/qmgr[3272]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:01:39 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3272 exit status 1
    Mar 31 00:01:39 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:02:10 ksez postfix/smtpd[3273]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:02:11 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3273 exit status 1
    Mar 31 00:02:11 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:02:39 ksez postfix/qmgr[3274]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:02:40 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3274 exit status 1
    Mar 31 00:02:40 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:03:11 ksez postfix/smtpd[3275]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:03:12 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3275 exit status 1
    Mar 31 00:03:12 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:03:41 ksez postfix/qmgr[3276]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:03:42 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3276 exit status 1
    Mar 31 00:03:42 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:04:12 ksez postfix/smtpd[3277]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:04:13 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3277 exit status 1
    Mar 31 00:04:13 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:04:42 ksez postfix/qmgr[3278]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:04:43 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3278 exit status 1
    Mar 31 00:04:43 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:05:13 ksez postfix/smtpd[3279]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:05:14 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3279 exit status 1
    Mar 31 00:05:14 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:05:43 ksez postfix/qmgr[3281]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:05:44 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3281 exit status 1
    Mar 31 00:05:44 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:06:14 ksez postfix/smtpd[3302]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:06:15 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3302 exit status 1
    Mar 31 00:06:15 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:06:44 ksez postfix/qmgr[3306]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:06:45 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3306 exit status 1
    Mar 31 00:06:45 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:07:15 ksez postfix/smtpd[3307]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:07:16 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3307 exit status 1
    Mar 31 00:07:16 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:07:45 ksez postfix/qmgr[3312]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:07:46 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3312 exit status 1
    Mar 31 00:07:46 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:08:16 ksez postfix/smtpd[3316]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:08:17 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3316 exit status 1
    Mar 31 00:08:17 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:08:46 ksez postfix/qmgr[3321]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:08:47 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3321 exit status 1
    Mar 31 00:08:47 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:09:17 ksez postfix/smtpd[3323]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:09:18 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3323 exit status 1
    Mar 31 00:09:18 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:09:47 ksez postfix/qmgr[3324]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:09:48 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3324 exit status 1
    Mar 31 00:09:48 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:10:18 ksez postfix/smtpd[3325]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:10:19 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3325 exit status 1
    Mar 31 00:10:19 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:10:48 ksez postfix/qmgr[3327]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:10:49 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3327 exit status 1
    Mar 31 00:10:49 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:11:19 ksez postfix/smtpd[3328]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:11:20 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3328 exit status 1
    Mar 31 00:11:20 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:11:49 ksez postfix/qmgr[3329]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:11:50 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3329 exit status 1
    Mar 31 00:11:50 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:12:20 ksez postfix/smtpd[3330]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:12:21 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3330 exit status 1
    Mar 31 00:12:21 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:12:50 ksez postfix/qmgr[3346]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:12:51 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3346 exit status 1
    Mar 31 00:12:51 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:13:21 ksez postfix/smtpd[3356]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:13:22 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3356 exit status 1
    Mar 31 00:13:22 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:13:51 ksez postfix/qmgr[3358]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:13:52 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3358 exit status 1
    Mar 31 00:13:52 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:14:22 ksez postfix/smtpd[3359]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:14:23 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3359 exit status 1
    Mar 31 00:14:23 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:14:52 ksez postfix/qmgr[3360]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:14:53 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3360 exit status 1
    Mar 31 00:14:53 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:15:23 ksez postfix/smtpd[3361]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:15:24 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3361 exit status 1
    Mar 31 00:15:24 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:15:53 ksez postfix/qmgr[3362]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:15:54 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3362 exit status 1
    Mar 31 00:15:54 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:16:24 ksez postfix/smtpd[3363]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:16:25 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3363 exit status 1
    Mar 31 00:16:25 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:16:54 ksez postfix/qmgr[3365]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:16:55 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3365 exit status 1
    Mar 31 00:16:55 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:17:25 ksez postfix/smtpd[3366]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:17:26 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3366 exit status 1
    Mar 31 00:17:26 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:17:55 ksez postfix/qmgr[3367]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:17:56 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3367 exit status 1
    Mar 31 00:17:56 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:18:26 ksez postfix/smtpd[3368]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:18:27 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3368 exit status 1
    Mar 31 00:18:27 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:18:56 ksez postfix/qmgr[3374]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:18:57 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3374 exit status 1
    Mar 31 00:18:57 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:19:27 ksez postfix/smtpd[3375]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:19:28 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3375 exit status 1
    Mar 31 00:19:28 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:19:58 ksez postfix/qmgr[3376]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:19:59 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3376 exit status 1
    Mar 31 00:19:59 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:20:28 ksez postfix/smtpd[3377]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:20:29 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3377 exit status 1
    Mar 31 00:20:29 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:20:59 ksez postfix/qmgr[3378]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:21:00 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3378 exit status 1
    Mar 31 00:21:00 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:21:29 ksez postfix/smtpd[3379]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:21:30 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3379 exit status 1
    Mar 31 00:21:30 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:22:00 ksez postfix/qmgr[3381]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:22:01 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3381 exit status 1
    Mar 31 00:22:01 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:22:30 ksez postfix/smtpd[3382]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:22:31 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3382 exit status 1
    Mar 31 00:22:31 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:23:01 ksez postfix/qmgr[3383]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:23:02 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3383 exit status 1
    Mar 31 00:23:02 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:23:31 ksez postfix/smtpd[3384]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:23:32 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3384 exit status 1
    Mar 31 00:23:32 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:24:02 ksez postfix/qmgr[3385]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:24:03 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3385 exit status 1
    Mar 31 00:24:03 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:24:32 ksez postfix/smtpd[3386]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:24:33 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3386 exit status 1
    Mar 31 00:24:33 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:25:03 ksez postfix/qmgr[3388]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:25:04 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3388 exit status 1
    Mar 31 00:25:04 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:25:33 ksez postfix/smtpd[3389]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:25:34 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3389 exit status 1
    Mar 31 00:25:34 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:26:04 ksez postfix/qmgr[3390]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:26:05 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3390 exit status 1
    Mar 31 00:26:05 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:26:34 ksez postfix/smtpd[3391]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:26:35 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3391 exit status 1
    Mar 31 00:26:35 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:27:05 ksez postfix/qmgr[3392]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:27:06 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3392 exit status 1
    Mar 31 00:27:06 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:27:35 ksez postfix/smtpd[3393]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:27:36 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3393 exit status 1
    Mar 31 00:27:36 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:28:06 ksez postfix/qmgr[3394]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:28:07 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3394 exit status 1
    Mar 31 00:28:07 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:28:36 ksez postfix/smtpd[3395]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:28:37 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3395 exit status 1
    Mar 31 00:28:37 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:29:07 ksez postfix/qmgr[3396]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:29:08 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3396 exit status 1
    Mar 31 00:29:08 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:29:37 ksez postfix/smtpd[3397]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:29:38 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3397 exit status 1
    Mar 31 00:29:38 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:30:08 ksez postfix/qmgr[3398]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:30:09 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3398 exit status 1
    Mar 31 00:30:09 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:30:38 ksez postfix/smtpd[3399]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:30:39 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3399 exit status 1
    Mar 31 00:30:39 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:31:09 ksez postfix/qmgr[3400]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:31:10 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3400 exit status 1
    Mar 31 00:31:10 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:31:39 ksez postfix/smtpd[3401]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:31:40 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3401 exit status 1
    Mar 31 00:31:40 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:32:10 ksez postfix/qmgr[3402]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:32:11 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3402 exit status 1
    Mar 31 00:32:11 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:32:40 ksez postfix/smtpd[3404]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:32:41 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3404 exit status 1
    Mar 31 00:32:41 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:33:11 ksez postfix/qmgr[3405]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:33:12 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3405 exit status 1
    Mar 31 00:33:12 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:33:41 ksez postfix/smtpd[3406]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:33:42 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3406 exit status 1
    Mar 31 00:33:42 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:34:12 ksez postfix/qmgr[3407]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:34:13 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3407 exit status 1
    Mar 31 00:34:13 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:34:42 ksez postfix/smtpd[3408]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:34:43 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3408 exit status 1
    Mar 31 00:34:43 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:35:13 ksez postfix/qmgr[3409]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:35:14 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3409 exit status 1
    Mar 31 00:35:14 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:35:43 ksez postfix/smtpd[3410]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:35:44 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3410 exit status 1
    Mar 31 00:35:44 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:36:14 ksez postfix/qmgr[3427]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:36:15 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3427 exit status 1
    Mar 31 00:36:15 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:36:45 ksez postfix/smtpd[3433]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:36:46 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3433 exit status 1
    Mar 31 00:36:46 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:37:15 ksez postfix/qmgr[3434]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:37:16 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3434 exit status 1
    Mar 31 00:37:16 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:37:46 ksez postfix/smtpd[3440]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:37:47 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3440 exit status 1
    Mar 31 00:37:47 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:38:16 ksez postfix/qmgr[3441]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:38:17 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3441 exit status 1
    Mar 31 00:38:17 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:38:47 ksez postfix/smtpd[3444]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:38:48 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3444 exit status 1
    Mar 31 00:38:48 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:39:17 ksez postfix/qmgr[3445]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:39:18 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3445 exit status 1
    Mar 31 00:39:18 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:39:48 ksez postfix/smtpd[3446]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:39:49 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/smtpd pid 3446 exit status 1
    Mar 31 00:39:49 ksez postfix/master[3061]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    Mar 31 00:40:18 ksez postfix/qmgr[3452]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:40:19 ksez postfix/master[3061]: warning: process /usr/libexec/postfix/qmgr pid 3452 exit status 1
    Mar 31 00:40:19 ksez postfix/master[3061]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:40:30 ksez postfix[3460]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:40:31 ksez postfix/master[3061]: terminating on signal 15
    Mar 31 00:40:32 ksez postfix/sendmail[3465]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:40:32 ksez postfix[3472]: fatal: /etc/postfix/main.cf, line 688: missing '=' after attribute name: "mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf"
    Mar 31 00:44:33 ksez postfix/sendmail[3543]: fatal: /etc/postfix/main.cf, line 701: missing '=' after attribute name: "permit_sasl_authenticated,"
    Mar 31 00:44:33 ksez postfix[3549]: fatal: /etc/postfix/main.cf, line 701: missing '=' after attribute name: "permit_sasl_authenticated,"
    Mar 31 00:46:03 ksez postfix/postfix-script[3656]: starting the Postfix mail system
    Mar 31 00:46:03 ksez postfix/master[3658]: daemon started -- version 2.10.1, configuration /etc/postfix
    Mar 31 00:46:03 ksez postfix/qmgr[3660]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:46:04 ksez postfix/master[3658]: warning: process /usr/libexec/postfix/qmgr pid 3660 exit status 1
    Mar 31 00:46:04 ksez postfix/master[3658]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:47:04 ksez postfix/qmgr[3662]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:47:05 ksez postfix/master[3658]: warning: process /usr/libexec/postfix/qmgr pid 3662 exit status 1
    Mar 31 00:47:05 ksez postfix/master[3658]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:47:44 ksez postfix/master[3658]: warning: unix_trigger_event: read timeout for service public/qmgr
    Mar 31 00:48:05 ksez postfix/qmgr[3663]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:48:06 ksez postfix/master[3658]: warning: process /usr/libexec/postfix/qmgr pid 3663 exit status 1
    Mar 31 00:48:06 ksez postfix/master[3658]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:49:06 ksez postfix/qmgr[3665]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:49:07 ksez postfix/master[3658]: warning: process /usr/libexec/postfix/qmgr pid 3665 exit status 1
    Mar 31 00:49:07 ksez postfix/master[3658]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:50:07 ksez postfix/qmgr[3683]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:50:08 ksez postfix/master[3658]: warning: process /usr/libexec/postfix/qmgr pid 3683 exit status 1
    Mar 31 00:50:08 ksez postfix/master[3658]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:51:08 ksez postfix/qmgr[3684]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:51:09 ksez postfix/master[3658]: warning: process /usr/libexec/postfix/qmgr pid 3684 exit status 1
    Mar 31 00:51:09 ksez postfix/master[3658]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:51:48 ksez postfix/postfix-script[3700]: stopping the Postfix mail system
    Mar 31 00:51:48 ksez postfix/master[3658]: terminating on signal 15
    Mar 31 00:51:48 ksez postfix/postfix-script[3782]: starting the Postfix mail system
    Mar 31 00:51:48 ksez postfix/master[3784]: daemon started -- version 2.10.1, configuration /etc/postfix
    Mar 31 00:51:48 ksez postfix/qmgr[3786]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:51:49 ksez postfix/master[3784]: warning: process /usr/libexec/postfix/qmgr pid 3786 exit status 1
    Mar 31 00:51:49 ksez postfix/master[3784]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:52:49 ksez postfix/qmgr[3805]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:52:50 ksez postfix/master[3784]: warning: process /usr/libexec/postfix/qmgr pid 3805 exit status 1
    Mar 31 00:52:50 ksez postfix/master[3784]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:53:10 ksez postfix/postfix-script[3821]: stopping the Postfix mail system
    Mar 31 00:53:10 ksez postfix/master[3784]: terminating on signal 15
    Mar 31 00:53:10 ksez postfix/postfix-script[3903]: starting the Postfix mail system
    Mar 31 00:53:10 ksez postfix/master[3905]: daemon started -- version 2.10.1, configuration /etc/postfix
    Mar 31 00:53:10 ksez postfix/qmgr[3907]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:53:11 ksez postfix/master[3905]: warning: process /usr/libexec/postfix/qmgr pid 3907 exit status 1
    Mar 31 00:53:11 ksez postfix/master[3905]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:54:12 ksez postfix/qmgr[3909]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:54:13 ksez postfix/master[3905]: warning: process /usr/libexec/postfix/qmgr pid 3909 exit status 1
    Mar 31 00:54:13 ksez postfix/master[3905]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:54:51 ksez postfix/master[3905]: warning: unix_trigger_event: read timeout for service public/qmgr
    Mar 31 00:55:13 ksez postfix/qmgr[3910]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:55:14 ksez postfix/master[3905]: warning: process /usr/libexec/postfix/qmgr pid 3910 exit status 1
    Mar 31 00:55:14 ksez postfix/master[3905]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:56:14 ksez postfix/qmgr[3928]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:56:15 ksez postfix/master[3905]: warning: process /usr/libexec/postfix/qmgr pid 3928 exit status 1
    Mar 31 00:56:15 ksez postfix/master[3905]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:57:15 ksez postfix/qmgr[3930]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:57:16 ksez postfix/master[3905]: warning: process /usr/libexec/postfix/qmgr pid 3930 exit status 1
    Mar 31 00:57:16 ksez postfix/master[3905]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:58:16 ksez postfix/qmgr[3931]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:58:17 ksez postfix/master[3905]: warning: process /usr/libexec/postfix/qmgr pid 3931 exit status 1
    Mar 31 00:58:17 ksez postfix/master[3905]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    Mar 31 00:59:13 ksez postfix/postfix-script[1276]: starting the Postfix mail system
    Mar 31 00:59:13 ksez postfix/master[1278]: daemon started -- version 2.10.1, configuration /etc/postfix
    Mar 31 00:59:13 ksez postfix/qmgr[1323]: fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
    Mar 31 00:59:14 ksez postfix/master[1278]: warning: process /usr/libexec/postfix/qmgr pid 1323 exit status 1
    Mar 31 00:59:14 ksez postfix/master[1278]: warning: /usr/libexec/postfix/qmgr: bad command startup -- throttling
    [root@ksez ~]#
  131. Арсений

    Error: Smarty template compile directory templates_c is not writable.
    Please make it writable.
    If you are using SELinux or AppArmor, you might need to adjust their setup to allow write access.

    Ничего не помогает, папку создавал пустую, права 777 давал, не хочет что-то, что делать? Ставлю версию из статьи.

    • Alec Voropai

      По умолчанию запись в каталог содержимого apache через SELINUX запрещена. Чтобы разрешить (конечно, это многовато):

      semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/postfixadmin(/.*)?"

      restorecon -Rv /var/www/html/postfixadmin

  132. Привет! У меня тут такая ошибка типа нажимаю на получение почты, а там через 30 сек говорит "Не возможно соединиться с сервером"? посоветуйте чьё ни будь?

    • Настройте соединение с сервером :) В ошибке все сказано. Сервер либо не запущен, либо до него нет доступа.

  133. Владимир

    Возникла проблема в postfixadmin
    Скачал, распаковал, по инструкции. Внес изменения в файл /var/www/html/postfixadmin/config.inc.php
    Но по адресу http://IP/postfixadmin/setup.php
    Нет доступа. т.е. "Not Found The requested URL /postfixadmin/setup.php was not found on this server."

    Apache, php, mariadb настраивались по статье "Настройка web сервера в CentOS 7"
    php обновлен до версии 5.6 Через phpmyadmin создан пользователь postfix и база postfix.

    • Тут 100% проблема в настройке web сервера. Можно лог посмотреть httpd. Суть в том, что по запросу из браузера нет скриптов postfixadmin.

  134. Алексей

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

    • С помощью fetchmail можно.

      • Алексей

        А у вас никакой статьи по этому поводу не написано?

        • На эту тему ничего нет.

          • Алексей

            Хорошо, спасибо. А то привык к вашим статьям, всегда они приходятся по делу. У ваших статей есть только один недостаток, сайт довольно долго открывается, я думаю что из-за большого количество комментов. Попробую найти что-нибудь в инете по fetchmail.

  135. Привет! слушай братан. Вот Я тебя не как не понимаю, давно слижу за твои статьи и у твоих статьей есть один минус. Ты вот на данный момент рассказываешь про почту, а тут нужно использовать разных инструментов типа php phpmyadmin httpd mariadb и т.д. Потом ты говоришь Я подробно говорил про настройку httpd отдельно, вот зачем крутит новичков вокруг своих очень больших статьей?!. Просто настрой необходимое шаг за шагом, чтобы не бегать между твоими статьями. А то лично Я запутаюсь или у меня что-то не получиться. Но эта реально бесить и это правильно. Просто делай всё на одном статье.

    • Каждая статья всегда самодостаточна. Ссылки идут только за подробностями. А какой мне смысл писать одно и то же, как попка попугай, в каждой статье? Я дроблю статьи по темам и даю на них ссылки. Если что-то где-то изменится, то мне достаточно будет поменять одну статью, где были изменения, а не все, где есть упоминание о теме.

  136. Что бы раздел отпуск заработал надо сделать:
    mkdir /vmail/sieve/
    chown -R vmail:vmail /vmail/sieve/
    И в разделе фильтр включить глобально managesievis

    • Это указано в статье, только путь для sieve другой в конфигах стоит, соответственно, директории тоже другие создаются. Отпуск работает через модуль sieve, поэтому он однозначно должен быть включен, настроен и работать.

  137. Добрый день
    Подскажите плиз. С исходящими все ок.
    А со входящими траблы. Это в логе /var/log/maillog

    Feb 22 12:05:29 mail postfix/pipe[107491]: 5718C5FB5C: to=, orig_to=, relay=dovecot, delay=464, delays=464/0/0/0.03, dsn=4.3.0, status=deferred (temporary failure)
    Feb 22 12:05:29 mail postfix/pipe[107497]: 58E105FB50: to=, orig_to=, relay=dovecot, delay=2374, delays=2374/0.01/0/0.05, dsn=4.3.0, status=deferred (temporary failure)
    Feb 22 12:05:29 mail postfix/pipe[107499]: 5D97B5FB12: to=, orig_to=, relay=dovecot, delay=8819, delays=8819/0.02/0/0.06, dsn=4.3.0, status=deferred (temporary failure)
    Feb 22 12:05:29 mail postfix/pipe[107501]: 417FF5FB55: to=, orig_to=, relay=dovecot, delay=938, delays=938/0.03/0/0.06, dsn=4.3.0, status=deferred (temporary failure)

    Письмо не попадает в ящик.

    • Надо смотреть в логи довекота. С ним какие-то проблемы. Доставка письма в ящик осуществляется им, и в логе видно, что тут какая-то проблема.

  138. Здравствуйте, чтобы добавить фильтрацию по типу вложений каким инструментом можно воспользоваться?

  139. Доброго времени суток! Хотел спросить. Если прикрутить почтарь к ad, смогу я потом добавлять пользователей левых? Для этого еще бд надо ставить на него? Или так нельзя?

    • Я не понял ничего в вопросе :) Что значит прикрутить к AD? Кто такие левые пользователи? О какой БД идет речь?

      • Если настроить ldap, так как около 300 пользователей в офисе. Но у меня ещё куча пользователей мобильные и офисы в других городах.

        • Если завернуть юзеров на ldap, то придется там их создавать в любом случае. Но я ни разу не настраивал. Можно ли настроить разные бд для хранения пользователей тоже не знаю. Да я бы и не стал так делать. Создал бы просто в AD отдельный OU и там бы хранил всех, кто не имеет отношения к домену, а использует только почту.

  140. Максим

    Здравствуйте , большое спасибо за статью , практически все получилось . Единственное , почему-то не работает отправка через Roundcube ( через почтовые клиенты все ок ) , выдает ошибку в конфигураторе Roundcube ( тот же эфект и через веб-панель ) SMTP send: NOT OK(Failed to add recipient 'test@gmail.com'. 4.7.1 : Relay access denied (Code: 454)) .

  141. Здравствуйте, отличная статья, дает знания но не разжевывает до состояния манной каши. Все сделал все работает, кроме функции автоответчика. У меня есть только конфиг /var/www/html/webmail/plugins/managesieve/config.inc.php.dist, в нем я нашел функцию $config['managesieve_vacation'] = 1; Но вкладка Отпуск в Настройках просто не появляется. И второе, при расшаривании папок по imap, классная функция кстати, если указываешь просто пользователя или Гости - все хорошо, а если Все пользователи (любые) - выскакивает ошибка "Невозможно добавить права доступа". Вроде все круто, а такая фигня весь аппетит портит. Еще раз спасибо за статью, очень толково написано

    • Это нормально, что сразу все не получилось. Тема почтового сервера достаточно сложная и без опыта сходу не берется. Возможно где-то неправильно конфиг поняли или не те правки внесли, возможно пакеты обновились и теперь статью надо поправлять. В любом случае, это вопросы решаемые, как раз их решение приносит опыт. Главное, что в целом система заработала и почта забегала. Это уже успех, если делается первый раз.

      • Это да. В статье про блокировку спама с помощью postfix, не расписан пункт про smtpd_data_restrictions, вы обычно используете те настройки которые указаны по умолчанию в основной статье?

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

  142. Доброго времени суток, отличный мануал, очень бы хотелось увидеть что-то подобное для debian 9, а так же настройку для использования нескольких доменов

    • Есть мысли это сделать, но увы, нет времени. Возможно когда-нибудь это будет сделано.

  143. Владислав

    Добрый вечер.
    Подскажите пожалуйста, как бороться с ошибкой:
    Jan 19 00:38:57 ns1 postfix/smtps/smtpd[4104]: error: unsupported dictionary type: mysql
    Jan 19 00:38:57 ns1 postfix/smtps/smtpd[4104]: warning: smtpd_sasl_auth_enable is true, but SASL support is not compiled in
    Jan 19 00:38:57 ns1 postfix/smtps/smtpd[4104]: warning: TLS has been selected, but TLS support is not compiled in

    Конфигурация:
    Postfix 3.2
    Centos 7

  144. Александр

    Добрый день, уважаемый Zerox, скажите пожалуйста вы настраивали штатный скрипт который в комплекте с postfix'ом идет, борюсь уже которые сутки судя по логам вроде все верно,сообщение отправляется на нужный ящик по средствам dovecot, но в ящике письма не отображаются, никак не могу отследить куда они вообще падают при сборе почты посредствам fetchmail
    по journalctl | grep dovecot выдается такое:
    янв 16 10:48:53 mail.st39.local dovecot[37491]: lda(vmail): msgid=: saved mail to operator@mail.st39.local
    var/log/maillog пишет:
    Jan 16 10:48:54 mail fetchmail[36756]: считывается сообщение myexternaldomain.ru:570 из 571 (378369 октетов) не очищено
    Jan 16 10:48:54 mail dovecot: lda(vmail): msgid=: saved mail to operator@mail.st39.local
    куда можно копать?

  145. Александр

    Все работает. Но ящики в папке создаются вида admin@example.ru Я хотел без Домена хранить и выставил опцию в /var/www/html/postfixadmin/config.local.php
    $CONF['domain_in_mailbox'] = 'NO';

    , но ящики все равно создаются в папке так же с доменом

  146. Андрей

    Как отключить аутентификацию из вне полностью, задрали подборщики паролей, стоит проброс портов на маршрутизаторе, но если убрать 25 порт не пойдут письма, нужно как то убрать средствами постфикса

  147. Андрей

    Как отключить аутентификацию извне, в основном все заходят в почту только на работе, задрали подборщики паролей, загремел в блеклист гугла)))

  148. Можете помочь?
    Старался следовать этой статье.
    Dovecot соединяется, каталоги и письма в нем читает, но при попытке отправить, спустя долгое время на клиенте возникает окно "Соединение неожиданно было прервано сервером". А в логе postfix появляются такие записи:
    Dec 21 16:03:22 post postfix/smtpd[2025]: warning: SASL: Connect to smtpd failed: No such file or directory
    Dec 21 16:03:22 post postfix/smtpd[2025]: fatal: no SASL authentication mechanisms
    Dec 21 16:03:23 post postfix/master[1982]: warning: process /usr/libexec/postfix/smtpd pid 2025 exit status 1
    Dec 21 16:03:23 post postfix/master[1982]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
    А в логах dovecot ничего(
    Где может быть ошибка?

    • Судя по логу, сам postfix не работает на отправку. Не могу так понять, в чем тут проблема, но ключевая строка вот эта:
      Connect to smtpd failed: No such file or directory
      Не удается подключиться к службе отправки. Надо смотреть, к какому порту подключаетесь и работает ли служба на этом порту. Смотреть с помощью:
      netstat -tulnp
      Хотя если смотреть лог дальше, то судя по всему, после попытки подключиться к smtpd, он завершает работу по какой-то причине. Надо повышать уровень логирования и смотреть на ошибки.

      • Нашел ошибку. Я отключал проверку сертификатов и не до конца отключил.
        Есть странность: когда я посылаю письмо в пределах локального домена неизвестному пользователю, почтовый клиент его отправляет, а postfix ставит его в очередь, естественно с диагнозом "User unknow". При этом клиенту никаких сообщений не выдается. Почему же dovecot дает отправить такое письмо и не возвращает его обратно клиенту?

        • Такую ситуацию разруливает postfix, не dovecot. Вообще, он должен отбойник слать, что user unknown in relay recipient table. Но подробностей этой настройки я уже не помню. Все это настраивается, надо смотреть все настройки postfix. По-умолчанию это 100% работает. Я только что проверил на одном из серверов. Надо лог postfix смотреть в момент отправки несуществующему пользователю.

          • Все нашел, почему он так себя ввел: я забыл выключить параметр soft_bounce = yes.
            Все настроил без сертификатов и авторизации. Но все же поддержка SSL нужна. Включил. Dovecot пускает по IMAP, но только по 993 порту. По 143 выдает отказ. Это нормально?
            Но главная проблема с авторизацией для отправки почты. Не хочет он авторизироваться хоть убей. В логах postfix пишется
            Dec 22 12:29:21 post /var/postfix/smtps/smtpd[12134]: Anonymous TLS connection established from sysadmin[192.168.0.39]: TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)
            Dec 22 12:29:21 post /var/postfix/smtps/smtpd[12134]: xsasl_dovecot_server_create: SASL service=smtp, realm=(null)
            Dec 22 12:29:21 post /var/postfix/smtps/smtpd[12134]: name_mask: noanonymous
            Dec 22 12:29:21 post /var/postfix/smtps/smtpd[12134]: xsasl_dovecot_server_connect: Connecting
            Dec 22 12:29:21 post /var/postfix/smtps/smtpd[12134]: warning: SASL: Connect to smtpd failed: No such file or directory
            Dec 22 12:29:21 post /var/postfix/smtps/smtpd[12134]: fatal: no SASL authentication mechanisms
            Dec 22 12:29:22 post postfix/master[9616]: warning: process /usr/libexec/postfix/smtpd pid 12134 exit status 1
            Dec 22 12:29:22 post postfix/master[9616]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling

            Почему нет "Connect to smtpd failed: No such file or directory"? В конфиге main.cf
            smtpd_sasl_auth_enable = yes
            smtp_sasl_security_options = noanonymous
            broken_sasl_auth_clients = yes
            smtpd_sasl_type = dovecot
            smtp_sasl_path = /var/spool/postfix/private/dovecot-auth

            файл /var/spool/postfix/private/dovecot-auth есть, права на чтение postfix есть. Никак не могу понять что не так(

  149. В общем дошел я до отправки писем со всеми подводными косяками что были разобрался.Но вот беда почта не ходит )
    Dec 15 20:33:26 vm1 postfix/error[9232]: warning: connect to mysql server localhost: Access denied for user 'postfix'@'localhost' to database 'postfxdb'
    Dec 15 20:33:26 vm1 postfix/error[9232]: warning: mysql:/etc/postfix/mysql/relay_domains.cf: table lookup problem
    Dec 15 20:33:26 vm1 postfix/error[9232]: warning: 17FDF180F81: flush service failure
    Dec 15 20:33:50 vm1 postfix/smtpd[8826]: connect from ip и хост убрал но тут fqdn имя сервера и его ip
    Dec 15 20:33:50 vm1 postfix/trivial-rewrite[8831]: warning: mysql:/etc/postfix/mysql/relay_domains.cf: table lookup problem
    Dec 15 20:33:50 vm1 postfix/trivial-rewrite[8831]: warning: mysql:/etc/postfix/mysql/relay_domains.cf: table lookup problem
    Dec 15 20:33:50 vm1 postfix/trivial-rewrite[8831]: warning: relay_domains lookup failure
    Dec 15 20:33:50 vm1 postfix/smtpd[8826]: NOQUEUE: reject: RCPT from ip и хост убрал но тут fqdn имя сервера и его ip: 451 4.3.0 : Temporary lookup failure; from= to= proto=ESMTP helo=
    Dec 15 20:33:50 vm1 postfix/smtpd[8826]: warning: non-SMTP command from ip и хост убрал но тут fqdn имя сервера и его ip: To: test@gmail.com
    Dec 15 20:33:50 vm1 postfix/smtpd[8826]: disconnect from ip и хост убрал но тут fqdn имя сервера и его ip

    Как я понимаю сервер не посылает приветствие как поправить?

    • Тут же четко написано в самом начале:
      warning: connect to mysql server localhost: Access denied for user ‘postfix’@’localhost’ to database ‘postfxdb’
      У юзера postfix нет доступа к базе postfxdb.

  150. А в чем может быть проблема создаю пользователя админ все проходит хорошо но когда пытаюсь под ним авторизоваться ничего не происходит просто обновляется страница и все при этом нет ошибки что пароль или логин не верны?

  151. Андрей

    Добрый день!
    у меня такая проблема, имею ubuntu 12/04 LTS, работает 5 лет, настала пара перенести на другую версию сервера, сталкнулся с такой проблемой, что на новой платформе не читается пароль довекотом, не могу авторизоваться.
    подскажите, как правильно mysql базу перенести?

    • Проблема тут скорее всего не только в базе. База переносится стандартным способом, через дамп. Надо смотреть логи сервера на предмет ошибок авторизации и разбираться с ними.

      • Аноним

        dovecot выполняет авторизацию, подключается к бд без ошибок, достаёт из базы логин\пароль, а дальше:

        Dec 15 16:12:26 auth-worker(19067): Debug: sql(andrey.gizbrekht@ema.ru,192.168.10.140): query: SELECT username as user, password FROM mailbox WHERE username = 'andrey.t@a.ru'
        Dec 15 16:12:26 auth-worker(19067): Info: sql(andrey.t@a.ru,192.168.10.140): Password mismatch
        Dec 15 16:12:28 auth: Debug: client passdb out: FAIL 2 user=andrey.t@a.ru

      • Андрей

        Добре!
        трабла связана скорее всего с тем, что изменилась бибилиотека, которая шифрует...
        ошибка выглядит сейчас вот так
        Dec 18 14:06:12 auth-worker(2301): Debug: sql(a@e.ru,192.168.10.110): MD5-CRYPT(mini-kuper123) != '$1$00436dc3$UQoR22mlFiHojeie6R2p50'

        хотя с новым пользователем всё работает.
        есть какие советы? опыт у вас есть, если поможете, готов финансово поучаствовать, в разумных пределах))

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

        • С шифрованием да, нюансов много. Я сам предпочитаю не шифровать пароли, если это возможно. Так посоветовать мне особо нечего. Если с новым пользователем все работает, а со старыми нет, значит на старом сервере указан другой алгоритм шифрования. Нужно просто выбрать такой же.
          В моей статье указан алгоритм CRYPT, а у тебя, судя по логу ошибки используется MD5-CRYPT.

          • Андрей

            на старом и на новом серверах стоит
            default_pass_scheme = MD5-CRYPT

            да и в любом случае, я этот параметр весь "перебрал" по очереди....

            • Вообще то это странно. Алгоритм один и тот же, он не может поменяться в зависимости от версии библиотеки. Может быть с паролями что-то случилось при переносе базы данных? С кодировкой может быть какие-то проблемы возникли.

              • Андрей

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

  152. DEBUG INFORMATION:
    MySQL 4.1 functions not available! (php5-mysqli installed?)
    database_type = 'mysqli' in config.inc.php, are you using a different database?

    Как победить?помогите!

    • Это откуда информация? Тут написано, что надо использовать коннектор mysqli для подключения к базе. В более старых версиях mysql, как, например, в 4.1 использовался просто mysql. Но 4.1 это очень старая версия, не понимаю, откуда она может вылезти.

      • Это если попытатся зайти на postfixadmin/setup.php на сервере стоит mariadb

      • в конфиге постфиксадмина и прописан mysqli

      • C ошибкой разобрался но появилась новая
        ERROR: the templates_c directory doesn't exist or isn't writeable for the webserver
        Причем каталог есть....

        • А второе условие выполняется? Веб сервер туда может писАть?

          • разобрался спасибо

          • $CONF['setup_password'] = '67e46bdcc7aeb431f7af9a6d02f43352:30672e5a9deacaf505d32807b967caf9fd0c32ef';

            я добавляю сюда хеш
            дальше добавляю пользователя Администратор указывая его почту его пароль и пароль с помощью которого получил хеш но получаю Setup password not specified correctly
            что я делаю не так?

  153. Автор скажи честно !!!
    зачем было тратить врем я на написание ЭТОГО гО*НА????
    такое чувство что аФФТОР НАКОПИПАСТИЛ конфигов взятых непонятно откуда и даже смысла не понимая что в них за что отвечает !!!
    по меньше бы такого мусора в инете!!!

    • У тебя наверняка есть статьи покруче. Показывай, я поучусь у тебя.

      • Да все верно !!! По круче !!!)))) Если уж ты захотел пиписьками мерятся !!!
        ПЫСЫ: твоя статья это КОПИЯ https://habrahabr.ru/post/193220/
        )))))))))))))))))

        • Теперь посмотри внимательно хотя бы по оглавлению, что есть там, а что есть здесь. Эти статьи совершенно разные, а похожи они ровно настолько, насколько могут быть похожи настройки идентичных сервисов.

  154. В # mcedit /etc/postfix/main.cf

    mynetworks = 127.0.0.0/8 ?

    пока незакомментил почта с извне не приходит.

    • Очень странно. Я не вижу связи между тем, что сделано и той ошибкой, что прошла :) Можете сами почитать описание этого параметра.

      • То есть mynetworks = 127.0.0.0/8 должна быть в конфиге?
        или нет
        если я добавляю как вы mynetworks = 127.0.0.0/8 в конфиг и смотрю ss -ntlp
        вижу что серевер слушает только локалхост по 25 порту. и ничего извне не идет.
        а так если закомментить все ай адреса.
        видимо там надо айпи внешнего интерфейса прописать

        • За то, какой интерфейс слушает postfix отвечают параметры:
          inet_interfaces = all
          inet_protocols = ipv4

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

          • Так и не понял, в чем дело наверное очепятка в моем конфиге.
            Сейчас с этой записью как у вас в конфиге слушает по порту 25 как надо.
            Мерси боку

          • Тоже столкнулся с похожим моментом. По дефолту постфикс слушал на 25 порту локалхоста, а извне недоступен. inet_interfaces был localhost, при смене на all ругался, что какой-то там отсутствует.

            Наткнулся на данную ветку при решении проблемы, почитал доку по директиве mynetworks - да, ты прав, Zerox, это для релея обычно настраивается когда без авторизации. Тем не менее, прописав в mynetworks айпи своего внешнего интерфейса к уже имеющемуся 127.0.0.1/8 и прописав inet_interfaces = all, постфикс завёлся. Но я конфигурировал не так, как у тебя в статье, и наверняка есть какое-то объяснение этому.

  155. Значит все же не пропустил, это радует :) Но тем не менее у меня как и у Вас все стоит на одном сервере, т.е. и у Вас roundcube является почтовым клиентом для dovecot, но в Ваших логах все хорошо, а вот в моих (сейчас извне даже еще раз перепроверил - rip локальный увы...) неверный.... Я наверное покажусь занудой, но тем не менее я так и не понял как мне это поправить )))

    • Я больше не знаю, что еще добавить. Из того, что вы пишите, я вижу, что вы не понимаете тему вообще. В общем, то, что у вас одинаковые ip адреса в логе это нормально. Так и должно быть. Когда подключитесь сторонним почтовым клиентом, например thunderbird, тогда адреса будут разные.

  156. Спасибо за ответ. Видимо я был в какой то момент невнимателен и что то упустил. Просто следуя логике повествования установки я понял, что Apache,DB и Postfix установлены на сервере с ip 188.35.19.125
    ("..Проверяем работу web сервера. Заходим по ip адресу сервера — http://188.35.19.125/, а также проверяем работу phpmyadmin — http://188.35.19.125/phpmyadmin/"..),

    там же RoundCube ("..Переходим в браузер по следующей ссылке для установки roundcube — http://188.35.19.125/webmail/installer/..") и обрадованно найдя что в Ваших логах Dovecot все показывается верно:

    "Mar 10 22:10:20 imap-login: Info: Login: user=, method=PLAIN, rip=75.37.235.139, lip=188.35.19.125, mpid=28790, TLS, session="

    где то пропустил упоминание, что Dovecot нужно было ставить на другой сервер.

    • Так его не нужно ставить на другой сервер. Каждый компонент в отдельности можно куда угодно поставить. Но в моем примере все стоит на одном сервере. В данном случае roundcube является почтовым клиентом для dovecot. И в этом случае все пользователи roundcube для dovecot имеют один и тот же адрес, равный адресу сервера, на котором установлен roundcube.

  157. Доброй ночи! Так же хотел присоединится к благодарностям за прекрасную статью. Но как же без вопроса )) Возможно покажется глупым, но не могу сам пока понять ОТКУДА это берется в моем логе, касательно вот этой части статьи:

    "В /var/log/dovecot/info.log информация о подключениях к почтовым ящикам — кто, когда, откуда и каким способом авторизовывался на сервере."

    в моем логе записи выглядят как:
    Dec 06 01:15:42 imap-login: Info: Login: user=, method=PLAIN, rip=192.168.1.100, lip=192.168.1.100, secured
    Dec 06 01:15:42 imap(testuser@mydomain.ru): Info: Disconnected: Logged out in=82 out=498

    rip и lip идентичны... не получается ip подключающегося через RoundCube любого юзера. Из локалки, из инета коннект, не важно, все работает прекрасно - только rip и lip идентичны, а это изводит мою нервную систему )) Где это рыть: в Nginx'e, на котором крутиться RoundCube, в настройках Dovecot? Не могу понять...

    • Roundcube установлен на том же сервере, где и сам dovecot? Если так, что понятно, что ip адрес один и тот же. Для довекота все, кто подключились через web интерфейс имеют один и тот же локальный ip. Так и должно быть. Если нужны ip адреса клиентов, то их нужно смотреть в логах httpd.

  158. Огромное спасибо за статью!

    У меня postfix находится во внутренней сети, за почтовым шлюзом. Как ему сказать, что почту надо слать на почтовый шлюз? Что и в каких конф. файлах надо изменить? Домены внешней почты и внутри локалки, естественно, отличаются.

    • У меня нет точных настроек, обычно не использую такую конфигурацию. Но ничего сложного тут нет, искать в инете инфу на тему, как указать почтовый релей для postfix. Эта тема перекликается с тем, что я описывал здесь: https://serveradmin.ru/otpravka-pochtyi-cherez-konsol-s-avtorizatsiey-v-linux/ Только у меня есть еще и авторизация, у вас возможно релей без авторизации работает.

  159. Вывел серевер из-за NAT, теперь у него один интерфейс WAN , второй LAN, но проблемы с подключением снаружи к imap, imaps и pop3 остались:
    imap-login: Info: Disconnected (no auth attempts in 0 secs): user=, rip=82.14.62.88, lip=2.2.2.2, TLS handshaking: Disconnected
    imap-login: Warning: SSL failed: where=0x2002: SSLv3 read client key exchange A [82.14.62.88]

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

    • Нужно пробросить все необходимые порты с внешнего ip на внутренний почтового сервера. Обычно с этим проблем никаких нет. Почтовый сервер нормально работает с проброшенными портами. Никаких нюансов и лишних заморочек нет.

      • так уже без NAT и без проброса, интерфейс в инет торчит. уже два раза настраивал под разные домены.
        подозреваю что-то в Centos 7.4 и самоподписном сертификатом и с ssl_protocols = !SSLv2 !SSLv3
        вы на каком центосе ставили?

        • Статья под последней версией Centos на момент написания статьи. Не помню точно, 7.3 или 7.4 это было. Но дело наверняка не в версии системы.

  160. Доброго времени суток , подскажите ???

    Nov 20 07:19:39 DS866833 postfix/smtpd[41048]: connect from localhost[::1]
    Nov 20 07:19:39 DS866833 postfix/smtpd[41048]: 9AE7D20ADD: client=localhost[::1]
    Nov 20 07:19:39 DS866833 postfix/cleanup[41051]: 9AE7D20ADD: message-id=
    Nov 20 07:19:39 DS866833 postfix/qmgr[1516]: 9AE7D20ADD: from=, size=634, nrcpt=1 (queue active)
    Nov 20 07:19:39 DS866833 postfix/smtpd[41048]: disconnect from localhost[::1]
    Nov 20 07:19:39 DS866833 postfix/smtp[41053]: connect to mail.poshtamt.biz.ua[185.180.196.70]:25: Connection refused
    Nov 20 07:19:39 DS866833 postfix/smtp[41053]: 9AE7D20ADD: to=, relay=none, delay=0.11, delays=0.03/0.01/0.06/0, dsn=4.4.1, sta tus=deferred (connect to mail.poshtamt.biz.ua[185.180.196.70]:25: Connection refused)

    • Удаленный сервер mail.poshtamt.biz.ua[185.180.196.70]:25 отклонил запрос на подключение. Почему он это делает можно узнать только у него.

      • Добрый день подскажите тут прописывать эти данные или своего сервера?
        smtpd_milters = inet:127.0.0.1:8891

      • Nov 23 11:46:35 DS866833 postfix/pickup[67409]: 045AA20B55: uid=48 from=
        Nov 23 11:46:35 DS866833 postfix/cleanup[67272]: 045AA20B55: message-id=
        Nov 23 11:46:35 DS866833 opendkim[63805]: mail._domainkey.poshtamt.biz.ua: key data is not secure: /etc/postfix is writeable and owned by uid 48 which is not the executing uid (995) or the superuser
        Nov 23 11:46:35 DS866833 opendkim[63805]: 045AA20B55: error loading key 'mail._domainkey.poshtamt.biz.ua'
        Nov 23 11:46:35 DS866833 postfix/cleanup[67272]: 045AA20B55: milter-reject: END-OF-MESSAGE from localhost[127.0.0.1]: 4.7.1 Service unavailable - try again later; from= to=

      • smtpd_milters = inet:тут поставил адрес сервера и все письма дошли :8891
        и еще вопрос Socket inet:8891@localhost тут так все и оставлять?

  161. Спасибо за статью!!! Делал все пошагово, возникло пару моментов:
    1. chown vmail. /var/run/dovecot/auth-master - это каманда не отрабатывала, т.к. dovecot не запускался, и такого файла ещё нет.
    2. Сразу не понял значепние фразы "Приводим его к следующему виду." касательно файла dovecot.conf и начал в него добавлять параметры. Появились потом проблемы..оказалось нужно было полностью очистить dovecot.conf и наполнить уже вашими параметрами.

    В моей схеме сети, почтовый сервер стоит за NAT, сделал проброс портов через iptables, но не работает аутентификация pop3 и imap. Ошибки:
    Nov 18 15:18:27 imap-login: Info: Disconnected (no auth attempts in 0 secs): user=, rip=1.2.3.4, lip=192.168.10.13, TLS handshaking: Disconnected, session=

    C:\Users\user>openssl s_client -ssl3 -connect mail.server.com:995
    CONNECTED(00000150)
    9392:error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:s3_pkt.c:1493:SSL alert number 40
    9392:error:1409E0E5:SSL routines:ssl3_write_bytes:ssl handshake failure:s3_pkt.c:659:
    ---

    Правила проброса делал по статье - https://habrahabr.ru/post/99898/
    проброс smtp работает нормально, а вот с pop3 и imap проблема.
    Подскажите, в чем может быть проблема??? Как правильно делать проброс 993 и 995 портов?

  162. Спасибо за Вашу статью! Настроил практически все согласно Ваших инструкций. Все работает!

  163. Спасибо за вашу работу. Респект

    • Получилось настроить по статье?

      • Я пока только ищу хороший мануал по установке и настройке. Решил остановиться на вашем. Все понравилось и понятно. Как только установлю, обязательно отпишусь о своём опыте

  164. Добрый день.
    Подскажите пожалуйста, как в этой связке организовать "мультидоменность"? Может быть у Вас есть статья на эту тему? Поиском пользовался, но не нашел ничего (может плохо искал:) )

    • Ничего особенного делать не надо. Настраиваете DNS записи второго домена на этот же сервер. Затем добавляете новый домен через postfixadmin. И все будет работать. Отдельно надо не забыть добавить новые записи по аналогии со старыми в настройки dkim.

  165. Здравствуйте, поднял сервер по Вашей инструкции, но при отправке сообщения с Gmail на локальную почту, Gmail присылает письмо с ошибкой следующего содержания:
    "The recipient server did not accept our requests to connect. Learn more at https://support.google.com/mail/answer/7720 [domain.ru. 127.0.0.1: unable to read banner]
    Final-Recipient: rfc822; user@domain.ru
    Action: delayed
    Status: 4.4.1
    Diagnostic-Code: smtp; The recipient server did not accept our requests to connect. Learn more at https://support.google.com/mail/answer/7720
    [domain.ru. 127.0.0.1: unable to read banner]
    Last-Attempt-Date: Mon, 23 Oct 2017 10:12:13 -0700 (PDT)
    Will-Retry-Until: Tue, 24 Oct 2017 09:38:41 -0700 (PDT)".
    Естественно вместо domain.ru, user@domain.ru и 127.0.0.1 указываются реальные данные. PTR запись на DNS сервере провайдера настроена и порты открыты. Куда копать?

  166. Создаю пользователя в постфикс админе, вижу его в базе, но при отправке ему письма, письма не доходят, получаю в логах - User unknown in local recipient table, хотя с него почта уходит. Подскажите кто нибудь куда копать?

    • Конфиг virtual_mailbox_maps.cf надо проверить на правильность подключения к mysql. Postfix не видит пользователя при получении письма и пишет об этом.

  167. Добрый день. Сделал все по вашей статье, исходяшая почта работает, а входящая не хочет. Отправляю с gmail на свой почтовый, письмо ушло, в логах вижу соединение с gmail потом идет запись Connection refused и в скобках адрес моего сервера, а также не могу зайти через клиенты на почту, тупо пишет ошибка сети при попытке авторизации с почтового клиента

    • Подробнее логи надо смотреть. Возможно какие-то сетевые проблемы, или с ssl. Connection refused неприятная ошибка, так как за ней может много чего скрываться. Нужно подробно смотреть и на проблему с клиентами, возможно эти 2 ошибки связаны, но не обязательно.

  168. И так, после часов мучений новая заметочка. Если вы столкнулись со следующим:
    Error: user ххх: Initialization failed: Namespace '': mkdir(/mnt/mail/ддд/ххх) failed: Permission denied (euid=1000(vmail) egid=1000(vmail) missing +w perm: /mnt/mail/ддд, UNIX perms appear ok (ACL/MAC wrong?))

    Нужно выполнить следующее:
    # semanage fcontext -a -t mail_home_rw_t '/mnt/mail(/.*)?'
    # restorecon -v /mnt/mail

    Выключать СЕЛинукс считаю профанацией.

  169. Полагаю, что вместо :
    # chown vmail. /var/run/dovecot/auth-master
    нужно бы сделать так:
    #mkdir /var/run/dovecot/auth-master && chown vmail. /var/run/dovecot/auth-master

    Так-же, на CentOS7 со включенным SELinux, перед # systemctl start dovecot нужно бы выполнить # restorecon -v /var/log/dovecot, иначе получим dovecot[6800]: Can't open log file /var/log/dovecot/main.log: Permission denied

    • Ошибся:
      #mkdir /var/run/dovecot/auth-master && chown vmail. /var/run/dovecot/auth-master - Не верно!
      /var/run/dovecot/auth-master - это файл, он создается автоматически при запуске dovecot

  170. Сергей

    У нас почему-то раньше всех затык. Веб-сервер работает нормально - страница-заглушка отображается.
    phpmyadmin - работает. postfixadmin работать отказывается, в браузере - внутренняя ошибка сайта - HTTP 500.
    Уже пробовали копировать все команды с сайта, но старницу setup.php не открывает. Все каталоги и расположения - стандартные.
    В конфиге httpd действительно нигде не нужно указывать каких-то настроек связанных с postfixadmin?

  171. ДВС.
    Упёрся в
    "chown vmail. /mnt/mail".
    ЧТО эта команда делает?
    У меня фря 10,3, точка в конце vmail вызывает
    illegal user name
    Голову уже сломал...

  172. Владимир

    Спасибо разобрался )))

  173. Владимир

    Здравствуйте Подскажите пожалуйста. Все сделал по мануалу но выдает ошибку Aug 08 10:37:35 dovecot[14244]: Fatal: service(auth) Group doesn't exist: vmail (See service auth { unix_listener /var/run/dovecot/auth-userdb {...} setting) Спасибо)

  174. Добрый день.
    Подскажите как можно заблокировать прием всей почты из определенной зоны? Сейчас сильно активизировался спам из зоны *.bid Хотелось письма из этой зоны вообще не принимать.

  175. Нужна помощь или наставление, сервак завелся все нормально, почта уходит, но входящие письма реджектятся, а реджектит их СПФ, так как сервак у меня внутри локалки, и все писма приходят от IP прокси на котором iptables, а нет от IP отправителя, перед прокси стоит маршрутизатор. Пример:
    1.2.3.4 - отправитель;

    2.2.2.2 - публичный адрес на маршрутизаторе;
    192.168.0.1 - локальный адрес на маршрутизаторе;

    192.168.0.2 - адрес прокси со стороны маршрутизатора;
    192.168.1.1 - адрес прокси со стороны локалки;

    192.168.1.95 - адрес почтовика.

    На прокси настроен iptables, на старый почтовик почта ходит, но тоже от 192.168.1.1, а на этом не хочет.в логе пишет:
    Jul 25 00:12:07 mail policyd-spf[2880]: None; identity=helo; client-ip=192.168.1.1; helo=smtp.fmail.net; envelope-from=chikisan@ex.ua; receiver=rav@agt-ua.com
    Jul 25 00:12:07 mail policyd-spf[2880]: Fail; identity=mailfrom; client-ip=192.168.1.1; helo=smtp.fmail.net; envelope-from=chikisan@ex.ua; receiver=rav@agt-ua.com
    Jul 25 00:12:07 mail postfix/smtpd[2875]: NOQUEUE: reject: RCPT from unknown[192.168.1.1]: 550 5.7.1 : Recipient address rejected: Message rejected due to: SPF fail - not authorized. Please see http://www.openspf.net/Why?s=mfrom;id=chikisan@ex.ua;ip=192.168.1.1;r=rav@agt-ua.com; from= to= proto=ESMTP helo=
    Jul 25 00:12:07 mail postfix/smtpd[2875]: disconnect from unknown[192.168.1.1]

    Как настроить iptables что бы адрес был отправителя "1.2.3.4"?

    iptables:
    # Generated by iptables-save v1.4.21 on Tue Jul 5 17:58:10 2016
    *filter
    :INPUT ACCEPT [151:84745]
    :FORWARD ACCEPT [974:219853]
    :OUTPUT ACCEPT [128:83906]
    -A FORWARD -d 192.168.1.95/32 -i eth0 -o eth1 -p tcp -m tcp --dport 465 -j ACCEPT
    -A FORWARD -d 192.168.1.95/32 -i eth0 -o eth1 -p tcp -m tcp --dport 993 -j ACCEPT
    -A FORWARD -d 192.168.1.95/32 -i eth0 -o eth1 -p tcp -m tcp --dport 110 -j ACCEPT
    -A FORWARD -d 192.168.1.95/32 -i eth0 -o eth1 -p tcp -m tcp --dport 995 -j ACCEPT
    -A FORWARD -d 192.168.1.95/32 -i eth0 -o eth1 -p tcp -m tcp --dport 143 -j ACCEPT
    -A FORWARD -d 192.168.1.95/32 -i eth0 -o eth1 -p tcp -m tcp --dport 25 -j ACCEPT
    -A FORWARD -d 192.168.1.88/32 -i eth0 -o eth1 -p tcp -m tcp --dport 80 -j ACCEPT
    -A FORWARD -d 192.168.1.88/32 -i eth0 -o eth1 -p tcp -m tcp --dport 443 -j ACCEPT
    -A FORWARD -d 192.168.1.150/32 -i eth0 -o eth1 -p tcp -m tcp --dport 3389 -j ACCEPT
    -A FORWARD -d 192.168.1.115/32 -i eth0 -o eth1 -p tcp -m tcp --dport 3389 -j ACCEPT
    -A FORWARD -d 192.168.1.100/32 -i eth0 -o eth1 -p tcp -m tcp --dport 3389 -j ACCEPT
    -A FORWARD -d 192.168.1.120/32 -i eth0 -o eth1 -p tcp -m tcp --dport 3389 -j ACCEPT
    -A FORWARD -d 192.168.1.95/32 -i eth0 -o eth1 -p tcp -m tcp --dport 3389 -j ACCEPT
    -A FORWARD -s 192.168.1.0/24 -i eth1 -o eth0 -p tcp -m multiport --dports 443,21,22 -j ACCEPT
    -A FORWARD -d 192.168.0.1/32 -p tcp -m tcp --dport 80 -j ACCEPT
    COMMIT
    # Completed on Tue Jul 5 17:58:10 2016
    # Generated by iptables-save v1.4.21 on Tue Jul 5 17:58:10 2016
    *nat
    :PREROUTING ACCEPT [1:129]
    :INPUT ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]
    :POSTROUTING ACCEPT [0:0]
    #-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.1:3128
    #-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
    -A PREROUTING -d 192.168.0.2/32 -p tcp -m tcp --dport 40006 -j DNAT --to-destination 192.168.1.100:3389
    -A PREROUTING -d 192.168.0.2/32 -p tcp -m tcp --dport 40007 -j DNAT --to-destination 192.168.1.120:3389
    -A PREROUTING -d 192.168.0.2/32 -p tcp -m tcp --dport 40010 -j DNAT --to-destination 192.168.1.115:3389
    -A PREROUTING -d 192.168.0.2/32 -p tcp -m tcp --dport 40008 -j DNAT --to-destination 192.168.1.150:3389
    -A PREROUTING -d 192.168.0.2/32 -p tcp -m tcp --dport 40009 -j DNAT --to-destination 192.168.1.95:3389
    -A PREROUTING -d 192.168.0.2/32 -p tcp -m tcp --dport 25 -j DNAT --to-destination 192.168.1.95:25
    -A PREROUTING -d 192.168.0.2/32 -p tcp -m tcp --dport 82 -j DNAT --to-destination 192.168.1.88:80
    -A PREROUTING -d 192.168.0.2/32 -p tcp -m tcp --dport 443 -j DNAT --to-destination 192.168.1.88:443
    -A PREROUTING -d 192.168.1.1/32 -p tcp -m tcp --dport 44 -j DNAT --to-destination 192.168.0.1:80
    -A PREROUTING -d 192.168.0.2/32 -p tcp -m tcp --dport 465 -j DNAT --to-destination 192.168.1.95:465
    -A PREROUTING -d 192.168.0.2/32 -p tcp -m tcp --dport 993 -j DNAT --to-destination 192.168.1.95:993
    -A PREROUTING -d 192.168.0.2/32 -p tcp -m tcp --dport 143 -j DNAT --to-destination 192.168.1.95:143
    -A PREROUTING -d 192.168.0.2/32 -p tcp -m tcp --dport 993 -j DNAT --to-destination 192.168.1.95:995
    -A PREROUTING -d 192.168.0.2/32 -p tcp -m tcp --dport 143 -j DNAT --to-destination 192.168.1.95:110
    -A OUTPUT -d 192.168.0.2/32 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.1.100
    -A OUTPUT -d 192.168.0.2/32 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.1.115
    -A OUTPUT -d 192.168.0.2/32 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.1.120
    -A OUTPUT -d 192.168.0.2/32 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.1.150
    -A OUTPUT -d 192.168.0.2/32 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.1.95
    -A OUTPUT -d 192.168.0.2/32 -p tcp -m tcp --dport 25 -j DNAT --to-destination 192.168.1.95
    -A OUTPUT -d 192.168.0.2/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.88
    -A OUTPUT -d 192.168.0.2/32 -p tcp -m tcp --dport 443 -j DNAT --to-destination 192.168.1.88
    -A OUTPUT -d 192.168.0.2/32 -p tcp -m tcp --dport 465 -j DNAT --to-destination 192.168.1.95
    -A OUTPUT -d 192.168.0.2/32 -p tcp -m tcp --dport 993 -j DNAT --to-destination 192.168.1.95
    -A OUTPUT -d 192.168.0.2/32 -p tcp -m tcp --dport 143 -j DNAT --to-destination 192.168.1.95
    -A OUTPUT -d 192.168.0.2/32 -p tcp -m tcp --dport 995 -j DNAT --to-destination 192.168.1.95
    -A OUTPUT -d 192.168.0.2/32 -p tcp -m tcp --dport 110 -j DNAT --to-destination 192.168.1.95
    -A POSTROUTING -j MASQUERADE
    -A POSTROUTING -d 192.168.1.100/32 -p tcp -m tcp --dport 3389 -j SNAT --to-source 192.168.1.1
    -A POSTROUTING -d 192.168.1.115/32 -p tcp -m tcp --dport 3389 -j SNAT --to-source 192.168.1.1
    -A POSTROUTING -d 192.168.1.120/32 -p tcp -m tcp --dport 3389 -j SNAT --to-source 192.168.1.1
    -A POSTROUTING -d 192.168.1.150/32 -p tcp -m tcp --dport 3389 -j SNAT --to-source 192.168.1.1
    -A POSTROUTING -d 192.168.1.95/32 -p tcp -m tcp --dport 3389 -j SNAT --to-source 192.168.1.1
    -A POSTROUTING -d 192.168.1.95/32 -p tcp -m tcp --dport 25 -j SNAT --to-source 192.168.1.1
    -A POSTROUTING -d 192.168.1.88/32 -p tcp -m tcp --dport 80 -j SNAT --to-source 192.168.1.1
    -A POSTROUTING -d 192.168.1.88/32 -p tcp -m tcp --dport 443 -j SNAT --to-source 192.168.1.1
    -A POSTROUTING -d 192.168.0.1/32 -p tcp -m tcp --dport 80 -j SNAT --to-source 192.168.1.1
    -A POSTROUTING -d 192.168.1.95/32 -p tcp -m tcp --dport 465 -j SNAT --to-source 192.168.1.1
    -A POSTROUTING -d 192.168.1.95/32 -p tcp -m tcp --dport 993 -j SNAT --to-source 192.168.1.1
    -A POSTROUTING -d 192.168.1.95/32 -p tcp -m tcp --dport 143 -j SNAT --to-source 192.168.1.1
    -A POSTROUTING -d 192.168.1.95/32 -p tcp -m tcp --dport 995 -j SNAT --to-source 192.168.1.1
    -A POSTROUTING -d 192.168.1.95/32 -p tcp -m tcp --dport 110 -j SNAT --to-source 192.168.1.1
    COMMIT
    # Completed on Tue Jul 5 17:58:10 2016

    • Суть проблемы понял, но не понял, откуда она взялась. Если просто на маршрутизаторе с iptables настроить проброс портов на почтовый сервер, то он будет видеть правильные внешние ip отправителей.

      • Вот и я о том же, с маршрутизатора ИП идет нормальный, а вот прокся подставляет свой, в ХЕЛО письма записан норм айпи, ну а по конфиге Таблеса все норм?

      • Подменил не на долго сервак, почта доходит но только с более менее нормальных сервисов, может вообще проксю вырежу с цепи, она особо свою роль и не выполняет, все равно все лазят где хотят, а все компы в АД, без пароля никто и так не зайдет

  176. Доброй ночи!
    А не хотите ли со временем написать подобную статью, только с использованием exim4 как MTA?!
    Например, как это описано здесь — http://t-machine.org/index.php/2014/06/27/webmail-on-your-debian-server-exim4-dovecot-roundcube/

    • Думал об этом. Exim популярный почтовик, возможно даже более популярный, чем postfix. Но для меня это будет только трата времени. Я неплохо знаю postfix, умею на нем реализовывать все потребности почты, поэтому не вижу для себя смысла изучать еще и exim.

  177. Приветствую!
    А Вы не пользовались веб-интерфейсом и органайзером SOGo?
    Понимаю, что круглокубик прост и надёжен как АК-47, но все-таки :-)
    И да, поднял по данной инструкции почтовик на Debian 8, все завелось.
    Нужно только учитывать, что в Центе и в Дебиане dovecot опакечен по разному.
    В Дебе пакетов больше ;-)

    • Пользовался. Мне у него интерфейс не нравится, хотя он предлагает некоторый дополнительный функционал.

      • Да и нужно отметить, что интерфейс у него достаточно тормозной.
        Не знаю, может в Хромимуме все по-другому, но у меня в Лисе так.

  178. Евгений

    Спасибо за статьи. Сделал все по гайду, подключаюсь через тандерберд коннект проходит, но сообщения не загружаются и при отправке почты ошибка: Sending of the message failed.
    An error occurred while sending mail: Unable to establish a secure link with Outgoing server (SMTP) mail.somedomain.ru using STARTTLS since it doesn't advertise that feature. Switch off STARTTLS for that server or contact your service provider.
    Что я делаю не так?

  179. проблема: не удается подключиться по imap по внешнему адресу, только через внутренний интерфейс.
    всё остальное вроде бы работет: т.е. подключаюсь thunderbird'ом по адресу 192.168.*.*, вижу письма, отправляю ответ на гмейл, туда приходит, всё ок.
    в dovecot.conf:
    listen = *

    netstat:
    0.0.0.0:143 0.0.0.0:* LISTEN 1620/dovecot

    iptables вообще Chain INPUT policy ACCEPT

    http://ping.eu/port-chk/ говорит порты открыты, а telnet снаружи или почтовый клиент по внешнему адресу не работает.
    помогите найти, куда копать, что проверить?

  180. Евгений

    Добрый день, спасибо за статью, настроил и все почти заработало, но есть проблема, письма из вне не доходят, в логе "/var/log/maillog" появляется (пример от гугла, но пробовал яндкес,маил):

    Jul 12 13:48:39 имя_сервера postfix/smtpd[2452]: connect from mail-yw0-f177.google.com[209.85.161.177]
    Jul 12 13:48:39 имя_сервера postfix/smtpd[2452]: lost connection after CONNECT from mail-yw0-f177.google.com[209.85.161.177]
    Jul 12 13:48:39 имя_сервера postfix/smtpd[2452]: disconnect from mail-yw0-f177.google.com[209.85.161.177]

    куда смотреть, в чем может быть проблема?

    • Это похоже на сетевую проблему. Пробуйте сами из вне подключаться по телнету на 25 порт, отправлять письмо и смотреть, в какой момент возникают проблемы и разрыв соединения.

  181. Удивительно, но решилось созданием пустой папки templates_c и с правами apache
    возможно это проблема postfixadmin 3.1

  182. Добрый день, спасибо за статью.

    Можете подсказать, почему если я пытаюсь запустить скрипт http://172.16.0.2/postfixadmin/setup.php

    The 172.16.0.2 page isn’t working

    172.16.0.2 is currently unable to handle this request.
    HTTP ERROR 500
    -------------------------------------------------------------------
    хотя http://172.16.0.2/index.php отрабатывает верно.

    PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
    SERVER_SIGNATURE no value
    SERVER_SOFTWARE Apache/2.4.6 (CentOS) PHP/5.4.16
    SERVER_NAME 172.16.0.2
    SERVER_ADDR 172.16.0.2
    SERVER_PORT 80

    iptables отключил, SELINUX=disabled

    права назначены chown -R apache. /var/www/html/postfixadmin/

    -rw-rw-r--. 1 apache apache 17103 Jun 25 21:02 setup.php

    Заранее благодарен.

    • Не знаю, трудно так сказать. Но явно что-то не то. Вообще, это очень простой вопрос. Никаких особых настроек веб сервера не надо для работы postfixadmin. Достаточно просто дефолтных настроек сервера после установки и все. Работать должно без проблем, просто папку со криптами копируете в корень веб сервера.

      • Спасибо за ответ.
        Нашел проблему, хорошо, что есть логи..
        но теперь пишет такое

        ERROR: the templates_c directory doesn't exist or isn't writeable for the webserver

  183. Хотелось бы увидеть данную развертку, на основе контейнера turnkey NGINX в proxmox. Ну в принципе можно развернуть контейнер на основе centOS, но мне больше нравится debian.

    • Основы тут расписаны, в контейнеры уже сами собирайте :) У меня нет времени этим заниматься, хотя мысли такие были. Но тут либо меньше статей, но с готовыми образами/контейнерами, либо больше статей, но только с описаниями/конфигами. Мне самому интереснее второе, так как больше тем успеваю охватить.

      • И на том спасибо, сейчас пытаюсь все это запихнуть в "дебиане стретч", посмотрим что выйдет, как сделаю отпишусь.

  184. Приветствую!
    Еще такой вопрос, а почему Вы не создавали список доверенных хостов для opendkim, файл trustedhosts ?

  185. Владимир

    Здравствуйте. Огромное спасибо Вам за Ваши статьи. Впервые настраиваю почтовый сервер, сделал всё как написано у Вас. Вроде всё получилось и даже есть возможность обмениваться почтой внутри моего почтовика и отправлять почту наружу. Но вот с наружи почта не приходит, письмо отправляется но до моего сервера не доходит и в ответ нечего не возвращается, в логах тоже нечего нет. Подскажите в чем может быть причина, или куда мне посмотреть. И еще вопрос должен ли проходить telnet на 25 порт с наружу на почтовый сервер.

    • MX-запись у DNS-регистратора домена указана?
      Да, 25-й порт должен быть открыть в любом случае.
      Просто для TLS c 25-го происходит редирект на 465-й или 587-й, как-то так.

      • Владимир

        MX прописана.
        Но 25 порт почему то не откликается даже если телнетится с самого себя
        # telnet 127.0.0.1 25
        Trying 127.0.0.1...
        telnet: connect to address 127.0.0.1: Connection refused
        Хотя все остольные порты (465, 993, 143, 587) работают нормально. Подскажите что может быть не так.

        • Могу предположить, что коннект на 25-й порт блокирует хостер.
          Но лучше пусть подскажет автор блога, когда он появится :-)

          • Владимир

            Разобрался. Надо было раскомментировать строку "smtp inet n - - - - smtpd" в /etc/postfix/master.cf Я как то упустил этот момент.

  186. Доброе утро!
    Скажите, а как Вы думаете, например, для Debian Jessie/Stretch последовательность шагов по настройке сильно будет отличаться?

    • Практически не будет отличаться. Все пакеты настраиваются примерно одинаково на этих системах. Разница может быть небольшая в названиях во время установки, в некоторых путях, но сами конфиги основных программ - postfix, dovecot будут одинаковые.

  187. чайник

    Все отлично, спасибо за статью, но вот беда... на моем CentOS 6.9 пишет что:
    No package dovecot available.
    No package dovecot-mysql available.
    No package dovecot-pigeonhole available.
    Error: Nothing to do

    И похоже такой беды ни у кого не случалось)

    • Репозиторий epel может не подключен. А в чем сейчас смысл использовать centos6? Срок поддержки уже наполовину истек. Уже семерка года три как вышла.

  188. Вроде известная ошибка, но пока ничего не нагугливается. Пароль к БД postfixadmin правильный, но все равно отказ в доступе
    Error: mysql(127.0.0.1): Connect failed to database (postfix): Access denied for user 'postfix'@'127.0.0.1' (using password: YES) - waiting for 25 seconds before retry
    В чем может быть дело? Исходя из Вашего опыта.

    • Я очень много раз устанавливал postfixadmin. Никогда не было проблем с доступом к mysql, если все указано верно, все пользователи созданы и права на базы розданы. Скорее всего где-то ошибка.

      • Просто у меня пароли не открытым текстом, а CRAM-MD5. По данному вопросу уже с ЛОРа помогли товарищи: оказывается для Мускуля user@127.0.0.1 и user@localhost это два разных пользователя. Как-то так. :-D
        Сейчас воюю с другими ошибками в связке dovecot mysql postfixadmin.

  189. Уже разобрался, вопрос снимается.

  190. Привет!
    А где у Вас написано, что postfix должне слушать 25-й порт?
    Вроде же как одним 587-м обойтись нельзя ;-)

    • Так он по-умолчанию на нем работает. Специально не надо указывать. Я даже не помню, где это настраивается, никогда не менял и не трогал.

      • В "Битрикс Веб Окружение" (php7.0, mariadb 5.5) пришлось для круглокубика ставить постгрес, т.к. Roundcube, не работает с php-mysqlnd :-( Просто задача привелосипедить почтовый сервис к битриксу, вот и мучаюсь потихоньку. Спасибо за статью, пока вроде ошибок в ней не обнаружил :-D

        • Это, кстати, известная проблема. С php-mysqlnd много чего не работает. У меня тут уже жаловались в комментариях к другим статьям.

  191. Добрый день.
    Может кто помочь с такой бедой
    connect to mx.yandex.ru[93.158.134.89]:25: Connection timed out
    connect to mx.yandex.ru[213.180.204.89]:25: Connection timed out
    connect to mx.yandex.ru[213.180.193.89]:25: Connection timed out

    Только при отправке писем на ящики Яндекса

  192. Добрый день. Еще вопросик. Я правильно понимаю если использовать несколько доменов то пункт "Настройка dkim и spf" необходимо повторить для каждого из них ?

    • Можно посмотреть здесь: https://www.dr.arut.ru/nastroyka-zapisey-spf-i-dkim-dlya-servera/
      Там есть пример с несколькими доменами

      • Ну по сути так все и сделал. Т.е. повторил все действия из пункта «Настройка dkim и spf» единственное что закоментировал строку # KeyFile /etc/postfix/dkim/mail.mydomain.com.private
        Теперь mail-tester.com на почту с обоих доменов показывает 10/10

    • Да, если доменов несколько, то надо настраивать отдельно для каждого. Но никаких сложностей с этим нет, для dkim много информации в инете, в том числе с примерами нескольких доменов.

      • Относительно dkim и spf для нескольких доменов все ясно. А если у тебя больше чем один домен это как то описывается дополнительно в конфигах постфикса?

        • Никак. Просто добавляется новый домен в postfixadmin.

          • Отправил 500 русских благодарностей за быстрый ответ и хорошую статью. Приятно читать твои статьи. Спасибо

  193. Добрый день! Можете подсказать? Я настроил DKIM по вашей инструкции, все заработало, Единственное при проверке через Gmail выдает:
    DKIM: NEUTRAL, домен domain.ru, а не PASS как у Вас. Искал в интернете, одни указывают, что неправильно запись сделал в DNS с открытым ключом, но я проверял по указанной Вами ссылке, все ОК. Другие пишут что Postfix может добавить пустую строку в тело письма после подписи, но тогда ошибка должна быть другая. Была ли у кого подобная ситуация?

    • В письме нашел, после тестовой отправке на Gmail

      Authentication-Results: mail.mysite.ru (amavisd-new); dkim=fail (1024-bit key) reason="fail (body has been altered)" header.d=mysite.ru

      Получается тело письма изменяется. А где посмотреть почему?

      • У меня в статье нет amavisd, вы не по ней настраивали.

        • Вы правы мой косяк. Я по Вашей статье установил iRedMail, а по этой пытался настроить DKIM. В конфиге amavisd можно отключить настройки, чтобы не он управлял DKIM?

  194. Добрый день. Подскажите в чем может быть проблема. Если posfix настроенный по вашей статье отправляет письма но не принимает письма из вне. Письмо уходит с почты к примеру gmail без всяких ошибок но на ящик postfixa ничего не попадает. При просмотре очереди писем вижу что оно там. В логе /var/log/maillog пишет 25 connection refused postfix. Проверяю порт 25 через 2ip пишет что порт открыт.

    • Как проверяли очередь? Если письмо в почтовой очереди, то оно уже принято почтовым сервером и не может быть 25 connection refused. Эта запись говорит, что прием письма отклонен. Нужно разбираться внимательнее. Для этого нужен полный кусок лога maillog в момент приема письма.

      • Добрый день. Извиняюсь была моя ошибка так как установив все по новой все заработало. Только чуточку пришлось с бубном пошаманить.
        Подскажите при подключении через Thunderbird выдает что Не удалось найти настройки для вашей учетной записи, откуда он вообще их берет и как это можно исправить?

        • Надо вручную ввести настройки, а не использовать те, что он предлагает настроить автоматически через какую-то свою почтовую систему.

          • Так вручную и ввожу IMAP mail.domain.net 143 STARTTLS Обычный пароль
            SMTP mail.domain.net 25 STARTTLS Обычный пароль
            Имя пользователя root@domain.net
            p.s. домен естественно заменил на domain.net

        • Так а что было то? А-то у меня тоже отсылает но не принимает почту извне.

          • Оказалось просто была А запись только для домена example.com и МХ запись mail.example.com, но для этой МХ записи тоже должна была быть А запись на тот же адрес что и первая. В итоге начал проходить telnet на 25 порт на mail.example.com и пошла почта.

  195. Добрый день! У меня проблема с отправкой локальной почты. Отправляю письмо с mail1@domain.com на mail2@domain.com и получаю в логах bounced user unknown. В дебаге dovecot вижу:
    May 18 11:02:20 auth: Debug: auth client connected (pid=0)
    May 18 11:02:20 auth: Debug: master in: USER 1 {recipient} service=
    lda
    May 18 11:02:20 auth: Debug: userdb out: NOTFOUND 1
    May 18 11:02:21 auth: Debug: master in: USER 1 {recipient} service=
    lda
    May 18 11:02:21 auth: Debug: userdb out: NOTFOUND 1

    Возможно, я что-то не вижу, а так и запросы проверил к бд, и права доступа, и сравнил конфиг - не понимаю. Спасибо!

    • Похоже на то, что не настроено подключение к mysql. Довекот где-то в другом месте юзеров ищет.

  196. Сергей

    Добрый день, но есть один нюанс, при использовании опции reject_unknown_helo_hostname реджектится будет и тот же yandex. У меня другой вопрос есть, имею вот такие опции:

    smtpd_recipient_restrictions =
    reject_unknown_recipient_domain,
    reject_non_fqdn_recipient,
    reject_unlisted_recipient,
    permit_mynetworks,
    permit_sasl_authenticated,
    reject_unauth_destination,
    check_client_access hash:/etc/postfix/whitelist,
    smtpd_helo_restrictions =
    permit_sasl_authenticated,
    reject_non_fqdn_helo_hostname,
    reject_invalid_helo_hostname,
    check_helo_access pcre:/etc/postfix/helo_access.pcre
    smtpd_sender_restrictions =
    reject_unknown_sender_domain,
    reject_non_fqdn_sender,
    reject_unlisted_sender,
    permit_mynetworks,
    reject_sender_login_mismatch,
    reject_unverified_sender,
    permit_sasl_authenticated,
    check_sender_access hash:/etc/postfix/whitelist

    почтовый сервер, крутится на адресе mail.example.ru, обслуживает данный сервер два домена example.ru и example.com, теперь получаем вот что

    >>telnet mail.example.ru 25
    Trying 192.168.5.5...
    Connected to mail.example.ru.
    Escape character is '^]'.
    220 mail.example.ru ESMTP
    ehlo gmail.com
    250-mail.example.ru
    250-PIPELINING
    250-SIZE 102400000
    250-ETRN
    250-STARTTLS
    250-ENHANCEDSTATUSCODES
    250-8BITMIME
    250 DSN
    mail from:hdspam@gmail.com
    250 2.1.0 Ok
    rcpt to:admin@example.ru
    250 2.1.5 Ok
    data
    354 End data with .
    From:hdspam@gmail.com
    Data: 12.02.1700
    Subject: test
    test mail from telnet
    .
    250 2.0.0 Ok: queued as 8AB525C009E
    ^]
    telnet>

    сервер принял письмо, и поставил его в очередь на доставку, а этого не должно быть, так как ежу понятно что я не подключился с серверов gmail что бы писать от домена gmail.com. Естественно open relay у меня не отработает, такой номер пройдет только если я прописываю левый домен в поле "mail from" а в "rcpt to" прописать домен который обслуживает сервер (example.ru или example.com) во все остальных случаях будет либо ошибка что нет авторизации либо ошибка что relay access denied. И вот как это исправить я не понимаю.

    • "Добрый день, но есть один нюанс, при использовании опции reject_unknown_helo_hostname реджектится будет и тот же yandex."
      Не понял, почему яндекс будет режектиться?

      По поводу поля mail from, я не знаю стандартных проверок, которые контролят актуальность этого поля. Думаю, это не имеет смысла, так как мне даже на gmail приходят письма с поддельным mail from и гугл его пропускает.

      • Сергей

        Не знаю, когда я включаю данную опцию, мой postfix режит все письма, хотя я только что проверил, действительно, ip yandex нормельно резолвится в dns в обе стороны, не понимаю почему postfix тогда режит письма, Юзаю Centos 6 и postfix 2.6

  197. Спасибо,за статью!!!Пробую пошагово делать,но возникают вопросы.
    1-myhostname = mail.zeroxzed.ru
    mydomain = zeroxzed.ru
    Ничего страшного,что hostname моего почтового сервера ,будет совпадать с моим почтовым domain?Или они должны быть разные?
    2-Некоторые строчки в Вашем конфиге у меня не было,это нормально,мне просто вставить недостающие?

  198. 6,9 из 10 баллов на http://www.mail-tester.com
    -3 балла за подпись DKIM

    буду решать )

  199. Добрый день. Не подскажите причину, по которой не доходит сообщение.
    " Anonymous TLS connection established from unknown[80.253.*.*]: TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)
    Apr 10 23:01:00 mail postfix/smtpd[39724]: NOQUEUE: reject: RCPT from unknown[80.253.*.*]: 450 4.7.1 Client host rejected: cannot find your hostname, [80.253.*.*]; from=<SIS@rpa-*$
    Apr 10 23:01:00 mail postfix/smtpd[39724]: disconnect from unknown[80.253.*.*]"
    Пока могу понять что от публичных (mail,gmail,yandex) все ходит правильно.

    • Срабатывает проверка имени сервера.
      Client host rejected: cannot find your hostname
      Почтовый сервер не может отрезолвить ip входящего соединения в имя домена. Это явный признак спама, либо проблем с днс.

      • Под это правило попадает очень много ящиков, но визуально они все от спамов, и вот почта от знакомого вся попадает под это правило, со всего его домена естественно. Просто боюсь что таких серверов станет много и я просто не услежу за сообщениями. А проблема на моей стороне? Или на его?
        nslookup mail.rpa-***.ru
        Server: 193.106.92.92
        Address: 193.106.92.92#53

        Non-authoritative answer:
        Name: mail.rpa-***.ru
        Address: 80.253.***.163

        nslookup 80.253.***.163
        Server: 193.106.92.92
        Address: 193.106.92.92#53

        Non-authoritative answer:
        163.***.253.80.in-addr.arpa name = mail.rpa-***.ru.

        Authoritative answers can be found from:

        • Судя по nslookup домен резолвится нормально. По какой-то причине почтовый сервер в момент приема не смог его отрезолвить. Но он ошибку выдал при этом 450, то есть не отверг письмо полностью, а предложил прийти позже. Так что не факт, что письмо в итоге не дойдет. Может через некоторое время все будет в порядке.

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

          • Спасибо, пока добавил домен в исключение, для reception ветки и helo ветки. Просто по этому правило судя по логам, достаточно много плохих писем отсеивается.
            Покопался и разобрался, в общем еще раз спасибо за отличную статью, у меня скоро наверное каждая страница вашего сайта будет в избранном.

  200. По поводу настройки smtp на 587 порту. Т.е. при этом конфиге работает на 587? Потому что пытаясь зайти по 587 вроде ничего не выходит. Строчки в master.cf достаточно?
    submission inet n - n - - smtpd
    -o syslog_name=postfix/submission
    -o smtpd_tls_wrappermode=no
    -o smtpd_tls_security_level=encrypt
    -o smtpd_sasl_auth_enable=yes
    -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
    -o smtpd_relay_restrictions=permit_mynetworks,permit_sasl_authenticated,defer_unauth_desti$
    -o milter_macro_daemon_name=ORIGINATING
    И она должна быть вместе или вместо?
    smtp inet n - n - - smtpd

  201. Спасибо за статью.
    Сам настраиваю без phpmyadmin, и может быть без установки этого пакета не подтянулись нужные зависимости. В общем дополнительно при разворачивание postfixadmin, я до установил следующие пакеты yum -y install php-mbstring php-common php-pdo php-mysql

  202. Подскажите дураку в этом месте все колом встало

    Создаем группу и пользователя с указанными в конфиге uid 1000.
    # groupadd -g 1000 vmail получаю GID «1000» уже существует
    # useradd -d /mnt/mail/ -g 1000 -u 1000 vmail получаю UID 1000 не является уникальным
    # chown vmail. /mnt/mail получаю неверный пользователь: «vmail.»

    Почему так происходит? Второй раз с самого начала делаю и в этом месте встаю.

    • В данном случае 1000 это идентификатор пользователя vmail. Если он в системе уже есть, то второй раз его создавать не надо. Если же этот идентификатор занят другим пользователем, то надо создать нового пользователя vmail с другим идентификатором и его указать в конфиге dovecot. Он используется именно там.

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

        • Даже не знаю. У Roundcube нет никаких нюансов в работе, обычно всегда встает нормально. Нужно только настроить подключение к БД, указав параметры в конфиге. Это просто набор php скриптов. У нее в папке на веб сервере есть свои логи, можно там посмотреть информацию. Ну и в лог веб сервера на всякий заглянуть, может там подсказка будет.

          • косяк не в Roundcube, почта с сервера уходит, а вот приходить не приходит, похоже косяк с IMAP, точнее с авторизацией.

            • При чем тут imap? Ты же чуть выше писал: "но вот Roundcube не пускает на веб интерфейс, неудачная попытка входа".

              • ну да, но как оказалось почта только уходит,а на сервер не доходит и тондерберд тоже не хочет подключаться и тест Roundcube говорит
                Connecting to localhost...
                IMAP connect: NOT OK какой то конфиг я видать не докурил, но какой не понятно.

    • Добрый день.статья просто супер, но при установке встретилась мне оказия. При установке postfixadmin перехожу в браузере на setup.php и белый экран, а в самом верху браузера на странице наблюдаю только картинку почтового ящика. Даже не знаю куда смотреть

  203. >>> "У некоторых может возникнуть вопрос, а зачем свой почтовый сервер? Почему бы не воспользоваться средствами корпоративной почты, которую представляют популярные почтовые сервисы бесплатно? Я планирую написать по этому поводу отдельную заметку. У меня тоже есть определенный опыт на этот счет. И если некоторое время назад я считал, что свои почтовые серверы в небольших организациях уже не актуальны, то сейчас я так не думаю, поэтому и появилась эта статья."

    Очень хочется почитать.

  204. Установил и при первом заходе на постфикс вместо Ок такая муть, я в где то пропустил поддержку IMAP функции включить или что то еще?
    Warning: Depends on: IMAP functions - NOT FOUND
    To install IMAP support, install php5-imap
    Without IMAP support, you won't be able to create subfolders when creating mailboxes.

    • Модуль php5-imap не установлен. Не помню точно, должен ли он в какой-то зависимости установиться, или его вручную надо ставить. В общем, можно установить вручную:
      yum install php5-imap

    • Это на какой системе ошибка? У меня стоит модуль php - php-imap, этого достаточно. У тебя почему-то именно php5-imap хочет.

      • [root@mail ~]# uname -a
        Linux mail.eeee.ru 3.10.0-514.10.2.el7.x86_64 #1 SMP Fri Mar 3 00:04:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
        Centos 7. я сначала на голый сервер поставил php и phpmyadmin, а потом накатил yum install httpd php phpmyadmin mariadb mariadb-server php-imap может поэтому и произошел какой то косяк, а так тоже пробовал yum install php5-imap - Пакета с названием php5-imap не найдено.
        В каком репозитории искать или проще откатиться и начать заново.

  205. У меня тут вопрос небольшой возник - уже не знаю в какую сторону копать....
    После того как все установил, по maillog все работает, все отлично. На *название_сайта*/postfixadmin и *название_сайта*/phpmyadmin - все открывается, и нормально происходит логин, а вот если логиниться в *название_сайта*/webmail (открывается интерфейс roundcube) - не получается залогиниться - ниже полей ввода появляется "Неверный запрос! Информация не сохранена"... Пробовал писать не просто логин, а логин@домен - ситуация та же... Но вот если заходить через *IP_адрес*/webmail - все нормально, и спокойно пускает в почту...
    *название_сайта* == *IP_адрес*
    Если тут данный комментарий будет лишний - попробую на форуме темку создать (а может тут вообще проблема мелочная).
    Заранее спасибо.

    • Поддерживаю, все работало нормально. Но теперь начались проблемы, возможно я начал добавлять какие то пакеты и они конфликтуют, в изначальной сборке таких ошибок не возникало, пытался прикруть webdav может что то от туда конфликтующее. Я настроил вход через 80 и 443 порт на webmail, по 443 входит без проблем, через 80 постоянно ругается на неверный запрос.

  206. Mar 22 22:43:38 mail postfix/smtpd[2951]: NOQUEUE: reject: RCPT from localhost[::1]: 504 5.5.2 : Helo command rejected: need fully-qualified hostname; from= to= proto=ESMTP helo=

    • Супер секретную информацию в логе можно было бы и оставить, так было бы сразу понятно, в чем причина.

  207. Возникает ошибк:
    Mar 22 22:43:38 mail postfix/smtpd[2951]: NOQUEUE: reject: RCPT from localhost[::1]: 504 5.5.2 : Helo command rejected: need fully-qualified hostname; from= to= proto=ESMTP helo=

    Все конфиги скопированы, какие нужны данные для проверки?

    • В логе же все написано. У тебя включена проверка: reject_non_fqdn_helo_hostname
      Тот, кто отправляет тебе письмо, не передает нормальное helo, и его футболит сервер с описанием причины - need fully-qualified hostname.

  208. Здравствуйте.
    Selinux отключили?

  209. Еще заметил нюанс - в блоке

    debug_peer_level = 2
    debugger_command =
    PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
    ddd $daemon_directory/$process_name $process_id & sleep 5

    нужно прописать PATH и ddd через табуляцию:

    debug_peer_level = 2
    debugger_command =
    PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
    ddd $daemon_directory/$process_name $process_id & sleep 5

    тогда все норм при рестарте. А вот это

    И небольшой штрих в завершении настройки.

    # chown vmail. /var/run/dovecot/auth-master

    у меня не прошло, видать из-за того что Вы использовали рабочий конфиг (а может еще из-за чего то)

    • не прошла табуляция в комменте (даже через пробелы)...

      • Да, это проблема. Табуляцию съедает движок сайта, но даже если тут изловчиться его добавить, то при копировании потеряется. Надо подумать, как объяснить этот момент. В рабочем конфиге эти две строки стоят с табуляцией. Не знал, что это имеет принципиальное значение.

        Опечатку исправил, спасибо.

  210. Нашел еще одну опечатку:

    Добавляем полученную строку в файл конфигурации postfixadmin.

    # mcedit /var/www/postfixadmin/config.inc.php

    пропущен html

    Добавляем полученную строку в файл конфигурации postfixadmin.

    # mcedit /var/www/html/postfixadmin/config.inc.php

    Огромное спасибо за стать - получилось поднять почтовый сервер (пока что только не особо вдавался в подробности, но начало есть).
    Осталось чутка "допилить" - чтоб при заходе на mail.site1.ru сразу открывался roundcude (как то получалось это провернуть на iRedMail - но все равно немного не очень - открывалось что-то типа mail.site1.ri/mail... мб просто как то на отдельном IP / сервере нужно поднимать почтовый... либо просто я еще не докопался до сути).

  211. Почему то не в ответ на коммент пост вставился :(

  212. Согласен)
    Но просто столкнулся с проблемой iRedMail - типа нельзя использовать имя как hostname - и потому не много завис. Да с iRedMail что-то не понятка - после команды reboot по ssh - сервак поднимался только после "хард-ребута" (через питание).. Поэтому буду применять данную статью - хоть в Инете и много страниц про postfix+dovecot и т.д. - но уж лучше Вашу статью возьму, ибо все (почти) расписано.

  213. Доброго времени суток!
    Вроде бы все делал следуя данной статьи - но до конца не дошел.
    Возможно есть опечатка:
    Дальше редактируем конфигурационный файл postfixadmin.

    # mcedit /var/www/postfixadmin/config.inc.php

    но судя по mv - у нас нет такого каталога \ файла.... возможно имеется в виду:

    Дальше редактируем конфигурационный файл postfixadmin.

    # mcedit /var/www/html/postfixadmin/config.inc.php

    Так же где-то еще был нюанс -

    debug_peer_level = 2
    debugger_command =
    PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
    ddd $daemon_directory/$process_name $process_id & sleep 5

    тут понадобилось "=" после ddd - то ли я что-то упустил, то ли не знаю..

    А так - огромное спасибо за статью - буду разбираться, но с нескольких раз - пока что не удалось поднять почтовый север (то ли где то туплю, то ли что-то не так отредактировал - где то что-то есть, ибо почта не ходит) - но будем дальше учиться :)

    • Спасибо за замечание. Опечатка действительно была, забыл html добавить в путь.

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

      • Попробую еще раз все проделать - но вот такой небольшой нюанс... hostname - как это влияет? или как правильно отредактировать hostname и hosts, если все поднимается на VDS / VPS?
        Буду пробовать все проделать - но что-то пока не получилось объединить все, как минимум 3 статьи, в одно действо (настройка CentOS, вэб сервер на CentOS и данную статью... - при выполнении последовательно - мне postfixadmin выдал что нет такого URL).
        Но опять же - возможно туплю, ибо только не давно изучать все это (и поэтому Ваш сайт стал как энциклопедия)

        • hostname лучше всего сделать такое же как dns имя почтового сервера. Так меньше шансов получить где-нибудь ошибку с именем хоста. Но это не обязательно, я настраивал и с локальным именем вида mailsrv.local.

          Почта сложный функуционал, его нахрапом не возьмешь без должной подготовки. Но упорство и труд все перетрут. Я так же начинал с огромной статьи от одного автора лет 10 назад. Повторял но не до конца понимал, что делаю. Со временем разобрался. Главное постоянно работать с этим, тогда получится.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar