Некоторое время назад я рассказывал, как настроить почтовый сервер на базе готовой сборки iredmail. Я подробно разобрал все актуальные вопросы почтового сервера на linux на базе postfix. Сейчас хочу настроить похожий функционал, но с нуля, за основу взяв postfix + dovecot. Я расскажу про установку и настройку postfix на centos 7, причем только тех модулей и дополнений, которые сам считаю нужными и полезными на почтовом сервере.
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Содержание:
- 1 Введение
- 2 Установка postfixadmin
- 3 Настройка postfix
- 4 Настройка dovecot
- 5 Проверка работы почтового сервера
- 6 Установка web интерфейса roundcube
- 7 Настройка фильтра почты sieve
- 8 Настройка автоответчика
- 9 Общие папки по imap
- 10 Настройка dkim и spf
- 11 Дополнительный функционал почтового сервера postfix
- 12 Борьба со спамом средствами postfix
- 13 Заключение
Данная статья является частью единого цикла статьей про сервер Centos.
Введение
Я буду настраивать почтовый сервер на ОС linux, а точнее на CentOS 7. За основу будет взят postfix, который присутствует в этой системе из коробки. Инструкция получится универсальной, можно использовать и для других дистрибутивов. Все основные конфиги легко переносятся на разные системы, требуя минимальной правки, в основном путей.
Я напишу статью на самом что ни на есть реальном примере, без какой-либо правки доменов, ip и прочего, чтобы не ошибиться и показать максимально возможный реальный пример. У меня есть технический домен zeroxzed.ru. Я буду использовать его в своей работе. Почтовый сервер будет иметь имя mail.zeroxzed.ru. Всю теорию по подготовке dns к установке и настройке почтового сервера я рассказывал в предыдущей статье о почтовом сервере. Не хочу здесь повторяться. Уточню только список действий, которые вам нужно проделать c ДНС:
- Создаем A запись в DNS - mail.zeroxzed.ru.
- Добавляем или редактируем MX запись, указывая в качестве почтового сервера mail.zeroxzed.ru.
- Просим провайдера прописать PTR для внешнего ip адреса, который будет использовать почтовый сервер. В качестве ptr записи просим установить имя нашего сервера - mail.zeroxzed.ru.
Я предпочитаю в качестве dns хостинга использовать сервера яндекса, даже если не прикрепляю его почту к домену. На картинке показан минимально необходимый набор записей, кроме PTR. Этими записями управляете не вы, а провайдер, который вам выдает ip. Пока с днс все. Позже мы вернемся к этому вопросу, когда будем добавлять dkim и spf записи. Но обо всем по порядку.
Подготовим систему centos к установке и настройке почтового сервера postfix. Если у вас еще нет готовой системы, то рекомендую воспользоваться моими статьями по установке и настройке centos. Отдельно потратьте время на настройку iptables. Я не буду касаться этого вопроса в данной статье, чтобы не раздувать ее второстепенными вещами. Удобнее, когда все по отдельности рассказано и описано с должной глубиной. Сваливать все в одну кучу не хочется.
По вступлению вроде все, основное рассказал. Приступим к настройке нашего почтового сервера.
Установка 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 доступ закрыт. Если все сделали правильно, то увидите примерно следующее.
Сразу создадим тут пользователя postfix и одноименную базу данных. Запомните учетные данные, они нам далее понадобятся.
Веб сервер готов, продолжаем настройку почтового сервера. Скачиваем последнюю версию postfixadmin.
# cd /usr/src # wget https://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-3.0.2/postfixadmin-3.0.2.tar.gz
Распаковываем архив и копируем в директорию веб сервера.
# 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.
# mcedit /var/www/html/postfixadmin/config.inc.php
$CONF['setup_password'] = '67e46bdcc7aeb431f7af9a6d02f43352:30672e5a9deacaf505d32807b967caf9fd0c32ef';
Используя этот пароль, можно создать учетную запись администратора панели управления. Делаем это, учитывая, что пароль должен содержать не менее двух цифр. Если все сделали правильно, то увидите сообщение.
Переходим по ссылке и авторизуемся с помощью учетной записи администратора, которую только что сделали. Вы должны увидеть основную страницу интерфейса postfixadmin.
Теперь нам нужно добавить домен в панель управления. Идем в раздел Список доменов -> Новый домен и добавляем свой домен.
При создании домена были добавлены стандартные алиасы, получателя для которых мы указали еще в конфиге - ящик root@zeroxzed.ru. Создание таких алиасов требование стандартов, но по факту, кроме спама, вы скорее всего ничего не будете получать по этим адресам. Так что их создание оставляйте на свое усмотрения. Я обычно их не делаю, так как ящик для этих алиасов все равно не читаю.
Далее создадим почтовый ящик администратора - root@zeroxzed.ru. Для этого идем в раздел Обзор -> Создать ящик и заполняем поля.
Непосредственно ящик на диске создан не будет, так как у нас еще не настроена почтовая система, но запись в базе данных появится. Это можно проверить через phpmyadmin.
Как мы видим, пароль указан в зашифрованном виде. На этом установку и настройку 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
Для генерации вам зададут несколько вопросов по поводу данных о сертификате. В принципе, можете там писать все, что угодно. Вот мои данные.
Создадим файлы для информации о ящиках, куда будет собираться вся входящая и исходящая почта.
# 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, почтовый клиент предупредит нас о том, что серверу нельзя доверять.
Нас это не пугает, добавляем сертификат в список доверенных и продолжаем работать. Позже получим и настроим нормальный сертификат.
Я подключился к почтовому ящику и увидел тестовые письма. Отвечу на одно из них и посмотрю в логе, как прошла отправка. У меня еще раз выскочило окно с предупреждением о небезопасном сертификате. Еще раз добавляю его в исключения. Это нормально, сертификат проверяется во время получения почты в 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 и такую же базу с полными правами пользователя на нее. Эти параметры указал в настройках.
Так же на этой странице нужно будет указать несколько параметров:
- 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/ Набирать нужно полное имя ящика и пароль. Если все сделали правильно, должны попасть в свой почтовый ящик.
Ну вот и все. Можно пользоваться web интерфейсом для почтового сервера. У меня есть статья по настройке мобильной версии roundcube. Рекомендую ее настроить, если есть необходимость. Тема качественная и добротная. Пользоваться удобно.
Дальше рассмотрим настройку и использование плагинов acl и sieve с помощью roundcube.
Настройка фильтра почты sieve
Sieve очень удобная штука, но вот хорошего интерфейса для управления через почтовый клиент я не знаю. Существует плагин для thunderbird, который так и называется sieve. Но лично мне он не понравился вообще, так как предлагает писать правила определенным кодом. Для этого надо знать синтаксис, тратить время. Можете сами на него посмотреть - https://github.com/thsmi/sieve.
К счастью, есть удобный способ писать правила фильтрации для sieve через roundcube. Там это реализовано отдельным плагином managesieve, который мы активировали во время установки. Для создания правила фильтрации, зайдите в свой почтовый ящик через 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 настроена и подключена. В папке /mnt/mail/shared-folders появился файл с настроенным выше правилом.
На этом настройка пользовательского функционала закончена. В принципе, почтовый сервер полностью готов к работе. Но мы сделаем еще несколько полезных настроек на стороне сервера.
Настройка dkim и spf
Напишу своими словами как я понимаю работу dkim. С помощью dkim вся исходящая почта сервера подписывается электронной цифровой подписью, связанной с именем домена. Открытый ключ шифрования с помощью DNS публикуется в txt записи. Таким образом, удаленный сервер, при получении письма от вас, сравнивает цифровую подпись с опубликованным в dns открытым ключом вашего домена. Если все в порядке, то считает, что ваше письмо в самом деле пришло от вас, а не от мошенников. То есть с помощью этой технологии можно однозначно идентифицировать отправителя.
Некоторые считают, что эта технология помогает бороться со спамом. Не знаю, насколько это верно. Спамеру не составит большого труда настроить на своем сервере 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 | имя почтового домена |
непосредственно имя сервера |
На выходе получаете пару файлов - закрытый (приватный) и открытый ключ. Закрытый останется на сервере, открытый будет опубликован в 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
Убираем кавычки, лишние проблемы и вставляем. Должно получиться вот так:
Проверяю работу. Отправляю письмо на 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 записи в 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
Больше ничего делать не надо. Снова отправляем письмо на gmail и смотрим логи.
Обращаю внимание на прошлый скрин, когда мы проверяли dkim и еще не настроили spf, и этот. Видно, что запись работает, гугл определил наш ip, как доверенный для отправки писем с этого домена.
Дополнительный функционал почтового сервера postfix
Я рассмотрел и настроил наиболее актуальный с моей точки зрения функционал почтового сервера. В статье я основывался исключительно на своем опыте работы с почтой в малых и средних организациях, поэтому не претендую на истину в последней инстанции. Рекомендую осмысленно подходить к настройке своего сервера и решать, что нужно именно вам. Будет хорошо, если кто-то укажет на мои ошибки или подскажет какие-то более удобные и эффективные приемы для решения затронутых задач.
В данном виде почтовый сервер представляет собой готовое и законченное решение, но есть еще несколько вещей, которые ему бы не помешали. Я их сейчас перечислю, а затем постараюсь постепенно писать статьи на указанные темы и ставить на них ссылки в этой теме. Вот список того, что по моему мнению нужно еще настроить на почтовом сервере:
- Защиту от подбора паролей с помощью fail2ban.
- Мониторинг почтового сервера postfix с помощью zabbix.
- Сбор статистики с помощью pflogsumm или чего-то подобного.
- Просмотр и анализ логов с помощью webmin.
- Использование бесплатных сертификатов let's encrypt.
- Регулярную очистку служебных почтовых ящиков.
- Бэкап всей почтовой базы.
Расскажу еще почему я не настраиваю некоторые популярные программы, которые использую на почтовых серверах:
- Clamav - известный антивирус. Считаю, что сейчас он не актуален, так как вирусов, от которых он способен защитить, я уже давно не видел. Сейчас вирусная эпидемия шифровальщиков. От них он не защищает.
- Spamassasin - популярный бесплатный антиспам фильтр. Скажу честно, работал с ним очень мало и могу быть не объективен. Насколько я видел его настройку и работу - он требует к себе некоторого внимания, калибровки, особенно на начальном этапе. Мне обычно не хочется этим заниматься.
- Graylist - эффективное средство борьбы со спамом. Я уже подробно его рассматривал, когда писал про iredmail, так что не буду повторяться. Скажу лишь, что режет спам очень эффективно и бесплатно, но есть существенные неудобства, которые по моему мнению не перекрывают плюсы. Поэтому я не использую.
В качестве антиспама я предпочитаю коммерческое решение - Kaspersky Anti-Spam. Я знаю этот продукт уже лет 8. Он действительно отлично фильтрует спам. Ложных срабатываний вообще не припоминаю, 95% спама фильтрует, может больше. С ним вопрос спама отпадает вообще. Стоит он недорого, можно купить лицензию на меньшее количество ящиков, чем реально используется в системе. Этот вопрос никак не отслеживается и на качество работы не влияет. Но нужно понимать, что это уже нарушение лицензионного соглашения. Но можно всякие хитрости придумать, чтобы и фильтровать и не нарушать.
Борьба со спамом средствами postfix
Сначала хотел сразу все настройки postfix разместить в соответствующем разделе в едином конфиге, но потом передумал и решил все же вынести этот вопрос на отдельное рассмотрение. Возможно, не каждому захочется сразу в эту тему углубляться. Все, что рассказано выше, позволит настроить полноценный почтовый сервер, который будет успешно принимать почту и доставлять ее пользователям. Но в таком виде он будет принимать слишком много спама, но зато не будет проблем с тем, что от кого-то что-то не придет. Как ни крути, но все средства борьбы со спамом так или иначе несут накладные расходы в виде ложных срабатываний с той или иной вероятностью. Если вы решите не заморачиваться и купить Kaspersky Anti-Spam, можете этот раздел не читать. Он сам реализует все те проверки, что мы будем делать. Если же хотите своими силами бороться со спамом средствами postfix, то давайте дальше разбираться.
Я буду использовать штатные возможности postfix, позволяющие отсеять спам по тем или иным параметрам еще до получения письма. Это очень эффективный способ с точки зрения производительности. Благодаря этому, правильно настроенный на отсев спама postfix часто ставят перед exchange, чтобы снизить на него нагрузку. Сразу дам ссылки на официальную документацию с описанием параметров, которые я буду использовать:
- smtpd_helo_restrictions
- smtpd_sender_restrictions
- smtpd_recipient_restrictions
- smtpd_data_restrictions
- 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.
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Приветствую!
Из-за чего может не работать обшие папки ,фильтры не пересылают почту в roundcube
Здравствуйте. Все делаю по вашей инструкции, осталось настроить dkim. При отправке письма выходит ошибка "key data is not secure: opendkim is in group 0 which has multiple users (e.g., "sync")"
В тексте ошибки всё написано. К ключу есть доступ у группы, в которую в том числе входит пользователь sync. Почему это так у вас, я не знаю. По умолчанию так быть не должно. В статье пользователя sync и не создают, и не используют.
Здравствуйте, подскажите пожалуйста возникла ошибка с добавлением 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';
Добрый день, подскажите, пожалуйста, возникла проблема с roundcube
всё установилось, настроилось вроде норм, однако, после входа в веб-интерфейс roundcube, в списке нет писем, а в правом поле, там где тело письма, написано "сайт ... не позволяет установить соединение."
поставил альтернативу, squirellmail, однако и там тоже самое...
я так понимаю, что проблема в апаче, но куда копать - не понимаю
алиасы в httpd.conf прописаны, права на директории выданы
при этом postfixadmin, phpmyadmin на этом же хосте работают без проблем
centos7 apache24 postfix mysql dovecot roundcube
Тут явно ошибка в настройках и работе веб сервера. Посмотрите для начала его лог ошибок. Возможно там будут подсказки. Так заочно трудно что-то посоветовать. Возможно у вас не установлен модуль php для imap. Именно он отвечает за загрузку писем. Возможно именно из-за него не работают оба веб интерфейса именно в окне со списком писем.
Добрый день. Возникла проблема с некоторыми письмами. В частности госуслуги и росказна не принимаются. Остальные письма принимаются/отправляются, никаких проблем.
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 или все равно нет? Спасибо!
По идее да, должно исключать. Но у меня давно не было практики по этой теме, поэтому я рассуждаю больше гипотетически. На практике я не знаю, как сейчас будет в конечном итоге.
Здравствуйте! Все настроено по инструкции. Возник вопрос, где настраивается автоматическое сообщение при создании аккаунта?
Это где-то в настройках или шаблонах postfixadmin. Точно уже не помню.
Привет. Спасибо полезные статьи.
Помогите пожалуйста разобраться.
Настроен postfix , dovecot , сделаны все записи в dns. Почта отлично бегает по всем направлениям.
Единственное уже неделю бьюсь не могу заставить работать PHPList(не отправляет тестовое письмо). Почтовый сервер и PHPList на одной машине. Так же у меня проблема с подключением почтового клиента в этой же сети. Если я настраиваю клиента из другой сети все замечательно , если из локальной там где и сам почтовый сервер, начинаются проблемы. Клиент видит сервер , начинает авторизовываться и вываливается с ошибкой не правильное имя и пароль. Возможно эти две проблемы связаны между собой. Может подскажите куда смотреть ?Больше всего волнует проблема с отправка из phplist .
Лог при отправке тестового письма из PHPList.
Даже не знаю, что сказать. в приведённом логе не вижу никаких ошибок.
Вот печаль. А можно логи более детальные включить на 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 закомментировал логин и пароль. Почта полетела.
Спасибо )
Здравствуйте, настроил по вашей инструкции, всё отлично работало.
Появилась необходимость перенести почтовый сервер на другой ip в другую локальную подсеть. В настройках везде прописал новый локальный ip, на хостинге A записи поменял, у провайдера запросил привязку PTR к новому внешнему ip-адресу. При запросе prt по новому ipтеперь отображается mail.mydomain.ru, но при проверке mail.mydomain.ru отображается ip старого провайдера.
Почта работает, но при получении автоматических настроек отдает сервер mydomain.ru, а не mail.mydomain.ru.
Подскажите пожалуйста, где может быть ошибка?
Вопрос снят, извините. На хостинге исправил А запись для mydomain.ru, но не исправил для mail.mydomain.ru
Здравствуйте. Почитал несколько ваших статей по postfix и не где не нашел упоминания про функцию Catch-All.
А что вы хотели о неё услышать? Я лично сам нигде не использую её. А если нужно, то через postfixadmin такой ящик очень просто создаётся.
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. Об этом прямо говорится.
добрый день
подскажите при попытки добавить возможность ящика 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
Добрый день. Ваши статьи просто супер. Когда что то делаю то смотрю на них как на шпаргалку. Единственно вопрос. При установке postfixadmin когда в браузере перехожу на public/setup.php то страница пустая и есть только изображение почтовой коробки. Куда что копать или может направит. Спасибо
Для меня разгадка нашлась в /var/log/httpd/error_log
устаревшая версия php
Все вроде настроил, но 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 можно поразвернутее включить, не нашел в конфиге
добрый день
подскажите,все настроил по инструкции,все заработало как нужно кроме одного,
внутри сети почта приходит и уходит,а вот с внешними ресурсами проблме отправить письмо могу,оно доходит а вот
письма из вне на серве не приходят,в чем может быть проблема?
Самая очевидная проблема это сеть. К вам в принципе доступ на 25-й порт сервера есть? Если есть, то подключения к нему должны быть отражены в логе postfix. Он хорошо все логирует и проблемы видно. Если подключений нет, разбирайтесь с фаерволом, пробросом портов, если он настроен.
к порту нет подключения не из вне не из сети,хотя проброс сделан,в firewall я открыл прт он числится открытым,
но подключения нет как из вне так и изсети и с самого сервера тоже сама на себя по порту 25 не подключается
Отключите firewall полностью и проверьте. Если без него заработает, значит разбирайтесь с его настройкой.
Вопрос по dovecot снят. Причина сбоев при его запуске нашлась в файле конфигурации с помощью команды
doveconf -n
Только так и не понял связи между dovecot и polkit, который ссылался на freedesktop!
В продолжении к моему прошлому вопросу.
В /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, но не наделяет процесс пользователя правами администратора, а позволяет точно контролировать, что разрешено, а что запрещено.
Здравствуйте.
Пытался поставить почтовый сервер по вашей статье. Но при первом запуске doveсot получил ошибку:
Прошу помощи. Если не ошибаюсь, ошибка в polkitd.
Смотрите системный лог или лог самого dovecot. В статусах службы systemd, которые вы посмотрели, ошибки не видно.
Вы слишком "перемудрили с безопасностью" пляшите от этой печки.
Здравствуйте!!! У меня очень важный вопрос назрел.Я разворачиваю почту у себя в локалке и так сложилось что у нас не все юезры должны иметь доступ к внешней почте, т.е они могут переписываться только в локалке а на вешние почтовые адреса они не имеют права отправлять почты из-за сооброжений инф.безопасности. Как можно настроить чтобы конкретные юзеры не могли отправлять письма на внешние адреса?
Буду очень признателен за ответ!!!
У меня нет готового решения, но я так настраивал. Это возможно. Вот пример - https://www.opennet.ru/base/net/postfix_per_user_acl.txt.html
Спасибо посмотрю
@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) на шлюзе.
канал подняли до 30 мегбит, даже вечером не работает нормально.
Напишите мне на почту noname.rolton@mail.ru попробую помочь.
написал вам , спасибо.
@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 порт для релеея
Добрый день!
Спасибо за отличный сайт!
Подскажите пожалуйста куда копать?
Второй день бьюсь с
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
Спасибо Вам большое!
Добрый день , наверное глупый вопрос, а как сбросить пароль на постфикс администратора ?
Простого способа не знаю. Наверно, надо зайти в базу mysql и вручную сбросить пароль в соответствующем поле.
Приветсвую ! настроил 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]
Вот кусок лога когда я отправляю письмо на внешний адрес
Добрый день ,
возник вопрос, как правильно записать открытый ключ dkim в dns ? файл зоны храню на своем днс сервере
просто скопировать все что у нас имеется в конфиге /etc/postfix/dkim/mail.zeroxzed.ru.txt (в моем случае мой ключ) без изменений и всавить в самый конец конфигурационного фаила ?
Не знаю, что у вас за сервер dns, но формат записи стандартный - txt запись. Можно легко нагуглить, как ее корректно прописывать. В статье у меня есть пример.
Добрый день делалвсе как написнно в статье, все 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 ~]#
Веб морда в roundcubemail, как только загружается, сразу даёт ошибку неверный запрос информация не сохранена. При этом при настройке в installer по imap подключение проходит. В какую сторону копать?
Копать в сторону логов )))))) В правильно заданном вопросе, половина ответа. Какая ошибка? Какой запрос?
если бы я увидел, что нить в логах. При заходе на веб морду, ещё не успел ввести лог и пароль. Уже даёт такую ошибку :(
Идем в /var/log и ищите в логах, apache-а, nginx-а ошибки, вот в этих логах и будет ответ на ваш вопрос.
Спасибо огромное, через експлорер зашел :)
@Zerox Добрый день! не подскажете , настроил все по вашему методу , есть такая проблема , отправляю со своей настроенной почты в mail.ru и gmail.com . проверяю там они в спаме, потом отправил на yandex , а там норм , письмо во входящих . В чем может быть причина ?
Скорее всего в настройках ptr, dkim и spf. А вообще спам фильтры оценивают письмо в том числе и по содержимому. Так что даже технически идеально настроенный сервер не гарантирует отсутствие попадания в спам.
Добрый день!
Судя по логам почта в почтовый ящик попадает, но в RoundCube в папке Входящие пусто. Куда копать?
Зайти напрямую в ящик через консоль и посмотреть, есть ли там реально входящее письмо или нет.
После долгих страданий заработало (как и почему не понял).
Не доставляется почта.
В логах:
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
Где чего не хвататет или не сделалось?
Домен судя по всему не добавлен в базу данных. Либо какая-то проблема с доступом к этой информации из базы. Если делать по инструкции, все получится.
Да вроде все делал по инструкции. База алиасов пустая. Где какие можно посмотреть контрольные точки?
вернее база доменов-алиасов пустая. база алиасов не пустая. Адрес, на который идет отправка почты там есть.
Решил проблему
Каким образом решили проблему? Столкнулся с такой же.
Секрет
Подскажите хотя-бы направление.
Всем доброго времени суток!
Столкнулся с такой задачей. Допустим есть ящик vasya@domen.ru надо сделать так, чтобы на этот ящик в час приходило не более 150 писем, остальных в очередь. плюс оповещении на ящик допустим admin@domen.ru, о превышении лимита. Есть у кого идеи как это реализовать можно?
Реализовать соответственно надо, средствами самого Postfix .
Могу сразу сказать, что такое реализовать на postfix, да и на любом другом сервере непросто. Очень специфичный функционал. Я даже не представляю, с чего тут начинать и как реализовывать. Нужен какой-то скрипт, который будет считать письма за промежуток времени, потом ходить в базу, отключать ящик, слать письмо админу. Потом пересчитывать письма и обратно включать ящик. В общем, задача скорее для программиста. Админу без опыта программирования будет трудно это реализовать.
И так я настроил почту как в статье я могу отправлять на маил и гмаил но плучить с маил или гмаил не могу, в чем может быть проблема?Но с локалных доменов письма приходят и уходят.Где копать?
Смотреть, доходят ли запросы из вне на ваш сервер. Если доходят, то должны быть какие-то ошибки в логах на тему того, что письма не принимаются.
Проблема у меня с 25 потом не могу открыть и постфикс и довекот его не слушают, открывал через iptables и отключал фаервол все рано 25 порт закрыт,проверял и телнетом и nmap порт 25 закрыт,что делать?
Не могу зайти в 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 за труд.
Спасибо за статью, если все делать внимательно, все отлично работает. Я никогда не использовал сервер на 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 — то на исходящую почту это работает сразу, а на исходящую почему то никак.
Исходящая - Исходящая.
Извините за косноязычность, писал в спешке и не перечитал то что написал:
smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/recipient_access - очень хорошо работает на входящую почту (что отлично показано в spam-фильтре средствами postfix)
НО, smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/recipient_access - не работает на исходящую почту (такое ощущение что или не видится или письмо отрабатывается выше)
Я бы попробовал помочь, но вопросов, больше чем ответов, а лички тут нет, иначе мы тут нафлудим "мама не горюй". Если zerox будет не против, могу скинуть ему мой телеграмм, он вам перекинет пообщаемся, и если результат будет положительный выложите здесь решение проблемы.
Спасибо Oleg71106, остается только надеется на Zerox. Потому что я если честно совсем запутался, нашел десятки одинаковых статей, везде все аналогично, но не работает(
Создайте, Алексей, я присоединюсь к ветке.
https://serveradmin.ru/forum/centos/blokirovka-ishodyashhih-soobshhenij-sredstvami-postfix/#post-1855
Создай тему на форуме и подробно опиши все, что надо - https://serveradmin.ru/forum/centos/
Думаю, всем будет полезно, если вы вместе сделаете рабочее решение.
Спасибо, создал тему https://serveradmin.ru/forum/centos/blokirovka-ishodyashhih-soobshhenij-sredstvami-postfix/#post-1855
Всем доброго времени суток!
Столкнулся с такой проблемой, используется связка (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 с работающего сокета.
Иногда, ответ у нас перед глазами, а нам лень посмотреть. Спасибо за совет, а я полдня уже "бегаю" вокруг этой проблемы и не могу решить )))))
Добрый день.Поднял сервер по данной статье.Заработал.Хоть и не с первого раза.Сервер стоит внутри локалки за НАТ.Но есть одна проблема.Мы тут все головы сломали...Раундкуб подключается и работает нормально.А вот Тандерберд авторизуется исключительно на машинах с линукс и макОС. Что внутри сети что с наружи. Файрволы на винде отключали,что только не делали.Так и не смогли ни разу авторизоваться в Тандерберд на Винде.Находит сервер с параметрами без проблем.Но после нажатия на кнопку готово выскакивает ошибка : Не могу войти на сервер.Возможно имеется ошибка в конфигурации, имени пользователя или пароля. Для чистоты эксперимента даже удалили криптопро и все сертификаты чтобы не было конфликта с сертификатами.Все-равно ошибка.Повторюсь,что с линукса и мака все работает на ура!Я в тупике.
Смотрите лог почтового сервера в момент подключения с винды. Там будут подсказки. Думаю, проблема как-то с 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
хотя я эту директорию создал
Он как раз и ругается на то, что это директория. Это не должна быть директория. Если не ошибаюсь, это имя сокета.
Добрый день, не запускается сервис 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, все равно его не цепляет
Он по-умолчанию во всех linux системах есть. Куда он мог пропасть?
>Позже отдельным пунктом я расскажу как использовать полноценные сертификаты.
Добрый вечер.
Где можно ознакомится с данным пунктом ?
Статьи нет. В целом, там и писать нечего. Получаете любым способом сертификат от let's encrypt и просто указываете его в конфиге вместо самоподписного из статьи и все. Никаких нюансов. Статей на тему получения сертификата lets encrypt в интернете полно, в том числе у меня на сайте в статьях про web сервер.
Добрый день.Все установил.Вроде все запустилось.Но вот какая проблемка.При создании учетной записи в Тандерберд сначала все проходит гладко.Программа сама обнаруживает конфигурацию и т.д. Но все когда нажимаешь кнопку готово пишет неправильный пароль.Я перепробовал несколько ящиков настроить-одно и тоже -неправильный пароль.Я уверен что ввожу его правильно.Подскажите куда копать )
Надо лог 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/
Она самая свежая на текущий момент и пока полностью актуальна. Хотя думаю, эта тоже. Скорее всего вы где-то ошиблись просто.
Делюсь соображениями по поводу своего вопроса об невозможности подключиться к imap серверу из за ошибки аутентификации. Проблема была в открытых незашифрованных паролях в базе phpmyadmin параметр md5crypt в конфиге phpmyadmin. Как правильно заметил автор во второй своей статье Centos 8 необходимо тогда поменять параметр на PLAIN в конфиге dovecot-mysql.conf/default_pass_scheme = CRYPT(либо PLAIN) если пароли не шифрованы.
Не могу авторизоваться через 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)
Может кто сталкивался с подобной проблемой? Уже ставил всё с нуля несколько раз, таже самая ошибка!
Добрый день подскажите как решили данную проблему?
У меня такая же ошибка
Возникла ошибка в логах 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 они есть, а вот например Общая папка не появилась в вэб интерфейсе.
в 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 говорит о том, что у вас сам почтовый сервер не работает. Разбирайтесь с ним. Статья рабочая, актуальная. Вы где-то ошиблись.
Почему-то 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.
Может не под root запускаете? Ошибки на права в логе. New main PID 2054 does not belong to service, and PID file is not owned by root. Refusing.
Под root. Все проверил. Пытаюсь настроить в докере, возможно из-за этого.
Скорее всего. Все признаки налицо.
iRedMail или postfixadmin?
iredmail в бесплатной версии сейчас очень урезан. Пользоваться откровенно неудобно, так что я бы его не рекомендовал.
Отлична статья!
все настроил, но есть один нюанс, не могу подключить почту с телефона,
при етом почта через 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.
аааа вопрос решился :)))
проблема была в самоподписанным сертификате,
Спасибо!!!!
@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
Привет всем, в 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
Всем привет !
Отправляю письмо самому себе , на свой локальный адрес , письмо улетает но не поступает , из за чего это может , как сделать чтобы postfix не отправлял письмо в интернет когда пишу на свой локальный адрес , то есть задача такая если это мой локальный адрес то письмо отрабатывает сервак , если это внешний адрес то оно уходит в интернет.
Подскажите пож , как нстроить чтобы postfix отправлял только на локальные адреса, чтобы через интернет не ходил.
Вот тут рабочее решение - https://www.opennet.ru/base/net/postfix_per_user_acl.txt.html
Я настраивал и у меня работало.
Внутренние письма в инет не должны уходить, то есть скажем к примеру в интернет уходят все кроме моего домена(пример @test.ru)
Еще раз всем привет!
Статья огромная, классная, хорошо погружающее в постфикс и, самое главное, рабочая! Если что-то не работает - проверяйте всё еще раз=)
Получается, мы почту входящую и исходящую просто складываем после получения в другое место, вот только потом не очень удобно доставать) Раундкуб пока не стал ставить, ну наверно и другие методы существуют, надо глянуть!
Ещё раз спасибо большущее автору!
Не понял, что значит не удобно доставать? По imap очень удобно. Конечно, тем, кто привык к веб интерфейсам современных почтовых систем, функционал кажется не очень, но сопоставимое удобство с почтой яндекс или gmail локально никак не получить.
Наверно, неправильно выразился)
Имап да, удобно, оставил только его.
Я про тот описанный вами случай, когда ктото удалил письмо и говорит что не получал. Это письмо положилось в all_in, но вот уже найти там будет его довольно сложно, особенно без вводных - даты. Как в этом случае вы ищете удаленные письма дабы восстановить их ?
Почему сложно найти? Подключаешь ящик all_in по imap и ищешь все, что надо. Можно быстро по логу посмотреть, когда и от кого было письмо, чтобы по ящику не искать.
Не понял в чем прикол - настроил что почта работает по ssl/tls, т.е. по логике для сервера достаточны порты: 465, 993, 53, но если не открыты 25, 143, почта не приходит на сервер и соотв. к клиенту, с чем это может быть связано?
Почтовичок поднят по этой статье и робит как барбос...! Сейчас руководство озадачило интегрировать почту в crm битрикс. Точнее сказать подключить почту к битрикс, чтоб сотрудники могли отправлять письма прям с сайта. На просторах инета либо нет нормального мануала, либо я плохо ищу.
Так а что там интегрировать? Надо создать ящики для пользователей и внести настройки для подключения к ящикам в битрикс.
У нас компания example.com, у ящиков имена user1@example.com, user2@example.com. То есть в main.cf постфикса для интеграции ничего дописывать не надо...? Я где-то нашёл что для работы постфикса, битрикс использует msmtp.
Вы пишете:
"Дальше редактируем конфигурационный файл 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 успешно установился.
Хорошая статья, хотелось бы чтобы в ней все было правильно
День добрый.
Не нашел в статье описания того, как отравлять почту через сторонний сервер, к примеру, yandex или gmail.
Не понял, а какое это отношение имеет к теме статьи? Тут же как раз про то, как использовать свой почтовый сервер, а не yandex или gmail. Отправка почты через сторонние серверы у меня рассмотрена отдельно - https://serveradmin.ru/otpravka-pochtyi-cherez-konsol-s-avtorizatsiey-v-linux/
Отличная статья. Но как обычно бывает, этого мало. Мне бы хотелось при получении нового письма запускать свой скрипт, который кладет {from} {to} {subj} и абсолютную ссылку на диске на само письмо в ящике в таблицу SQL.
Вопрос в том, как и где перехватывать событие входящего письма, в master.cf что-то добавить? И наверное самое главное как получить в postfix абсолютную ссылку на файл с самими письмом. Или же о месте хранения письма на диске знает только dovecot?
Еще вопрос. Юзер отправляет письмо через например тандербёрд, а мне надо в это письмо добавить информацию и отправить дальше адресату.
Вот такие хотелки.
Столкнулся со странной траблой: Тандербёрд может получать письма по 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 порт.
Настроил второй почтовый сервер по данной инструкции оба в продакшене и отлично работают. Все DNS записи настроены так, что mail-tester показывает 10/10. Но беда вот в чём. Писем может не быть по часу, а потом как прорыв. Штук 20 разом вываливается. Дело в том, что сервер в дата центре за бугром. В Голландии. Из-за отдалённости их канал в 100 м/бит доходит до Владивостока уже примерно 10 м/бит. Так как сотрудники жалуются уже в тот момент когда почта сыпется, то я не могу отследить по логам проблему. Проблема ли в провайдере или в каком-то зависании одного из пакетов (postfix, dovecot)...?
Можно поднять локально во Владике тестовый сервер и отправлять через него почту на основной. Так будут под рукой все логи. Можно будет понять, в чем именно проблема и где возникает задержка.
@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
@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.
ПРивет! Отличная статья! Всё заработало, почти) Почему то нет папки Inbox никак не появляются входящие письма, что может быть не так?
А у тебя нет статьи, в которой расписывается как организовать поиск писем старше к примеру 30-ти дней в папках all_in и all_out, затем то, что старше, архивировать и складывать куда-нибудь, а после удачной архивации вычищать папки.
Есть - https://serveradmin.ru/ochistka-i-obsluzhivanie-pochtovoy-bazyi-postfix/
Там рассказано все необходимое для реализации.
Автор, как можно с вами связаться?
https://serveradmin.ru/kontaktyi/
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 сам с собой догорился между ПК и сервером.
Посмотрю что будет дальше. Сейчас сервер работает на настройках, что указани в статье.
если соберетесь переработать эту статью по новому, обратите внимание на проблему Довекота с 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
>>И небольшой штрих в завершении настройки.
# chown vmail. /var/run/dovecot/auth-master
Уже не помню, зачем это было нужно, запись осталась в черновиках. Знаю только, что какая-то ошибка всплывала без этого.<<
связано с несоответствием группи в файле /etc/dovecot/conf.d/10-master.conf. нужно dovecot.
статья полезная, но свалівание в кучу всех настроек Довекот усложняет разбор полетов
Это вопрос привычки. Мне удобнее в одном конфиге все настройки держать. Так их оценить разом проще.
А ещё перед выполнением этой команды "chown vmail. /var/run/dovecot/auth-master" нужно создать сам файл auth-master потому что его там нет
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
Вопрос снимается. Невнимательность
smtpd_sasl_path не тот указал
Вот ошибка:
warning: SASL: Connect to private/dovecot-auth failed: No such file or directory
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. Надеюсь, до нового года успею сделать.
Всё супппер...! То, что знал в теории, применил на практике опираясь на эту статью! А как можно реализовать группы рассылок...? К примеру продажники, отдел ВЭД, бухгалтерия и т.п...?
В postfixadmin создается алиас и в него добавляются все получатели.
Ок, с этим понятно. А есть возможность создать алиса к примеру all@чего-то-там.ru так, что бы следующий заведенный юзер автоматически попал в этот алиас...?
Идею понял, но по дефолту в postfixadmin нет автоматической возможности заводить всех новых пользователей в общий алисас. Я руками в таких случаях добавлял. Может просто невнимательно смотрел. Не припоминаю такой возможности.
Ну да ладно, у меня в конторке 35 +/- 5 человек, не обломит ручками добавить пользователя. В любом случае тебе огромное спасибо за статейки. Для меня, как плавно перерастающего лютого эникейщика в скромного сисадмина, который максимально хочет уйти с винды - это клад...! С меня пиво...=)
Нужна помощь. В клиентах вылетает постоянно сообщение о том что используется не подтвержденный сертификат. Как избавиться от проблемы. На просторах сети не могу найти даже намека на причину
Использовать подтвержденный сертификат.
У меня по пути /var/www/html/webmail/plugins/managesieve/ нет файла config.inc.php, но зато есть файл config.inc.php.dist что с ним делать...? Просто изменить расширение...?
Да, убрать .dist
А есть какая-то настройка, когда лицензия куплена по минимуму, а ящиков создано больше и ещё мультидоменность?
Сам KAS не проверяет соответствие лицензии и количество обслуживаемых ящиков. Я даже как-то запрос в ТП на эту тему писал. Следить за соответствием - ваша задача, со всеми вытекающими :)
спасибо за статью, но совсем не понятно как будет организована связка с KAS, можете добавить в статью как настроить связку с Kaspersky AntiSpam
В KAS подробная документация по интеграции с postfix. Там все понятно, не вижу смысла дублировать эту информацию по конкретному продукту в статье общего назначения.
При очередной установке вдруг обнаружил - в статье у Вас в конфиге /etc/opendkim.conf селектор указан:
Selector default (хотя при генерации ключей был: mail)
Добрый день!
У меня все работает. Теперь необходимо еще один домен добавить. Сможете помочь?
В чем нужна помощь? Новый домен добавляется через postfixadmin. Никаких сложностей и доп. настроек делать не надо.
Спасибо! Работает.
На счет dkim. надо ли создать ключ на второй домен?
Да, для каждого домена свой ключ. Второй добавляется аналогично первому.
Спасибо большое за Ваши статьи и ответы в комментариях!
Пытаюсь сейчас выбрать между двумя вариантами настройки почты (на своем ВНЕШНЕМ почтовом сервере или на своем почтовом поддомене, расположенном на отдельном (от сайтов) 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
Доброго времени суток!
Выходит такое сообщение, что может быть не так настроено?
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 четко пишет, в чем проблема, надо копать в этом направлении.
Нужна помощь. При попытке подрубиться к серверу 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 что тут-то может быть причиной. В сети как-то размыто
В практике не встречалось задача mx сервер держать на другом сервере, вроде данной схемы https://wiki.dieg.info/postfix_backup_mx ?
Делал так. Тут нет ничего сложного. Просто поднимается еще один сервер в другом месте и ему прописывается меньший приоритет в mx записи. Условно, у основного 10, у резервного 20. При недоступности основного, почта отправляется на резервный.
имеется в виду у клиентов чаще настроено с резервом или все на одном )
Все на одном. Я несколько раз делал резервные mx, но реально с ними больше проблем, чем пользы. Даже если основа ляжет и вся почта посыпется на резерв, юзеры ее оттуда без перенастройки не получат. Потом, когда поднимается основа, придется как-то перекидывать почту с резерва на основу, которая успела нападать.
Уж лучше пусть во время аварии почта зависнет у отправителей в очереди на их почтовиках, а потом, после восстановления работы, придет на основной сервер.
Резервные mx это для сложных распределенных систем с балансировщиками, чтобы можно было быстро людей переключить на резервный сервер автоматически. Чтобы работа была комфортная, нужна постоянная синхронизация почты между этими двумя серверами.
В общем, это решение для крупного enterprise, где даже минимальный простой недопустим. Всем остальным смертным это слишком дорого и хлопотно.
ясно, спасибо за ответ.
Zerox, с резервного mx почту можно забирать fetchmail! Раньше так делал, с одного почтового сервера забиралась и локальный почтовый. Сейчас думаю резервный в провайдера оставить и указать приоритет, а основной как заработает, fetchmail заберет и разложит в папки.
Да, конечно можно. Я использовал fetchmail, но это все равно лишние заботы и хлопоты. Обхожусь без резервного MX. Все же почта не так критична к непрерывной работе. Она и в штатном режиме иногда ходит с большими задержками.
Дошел до запуска установки 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'; Что я делаю не так?
Вопрос номер 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.
Подскажи, почему могут не создаваться каталоги с почтовыми ящиками, куда копать. Сделал по твоей документации. В логах maillog: SSL_accept error from unknown -1. В Outlook ящик создался. Письма не уходят и не приходят.
Добрый день. Подскажите пожалуйста, как организована работа между почтовыми ящиками all_* и непосредственно клиентскими ящиками. Возможно в статье не заметил это место. Хочу понять каким образом происходит обмен.
Не понял вопрос. Что значит организована работа? Там никакого обмена нет. Просто вся входящая и исходящая почта в момент поступления на сервер копируется в эти ящики.
Я можно сказать про это и спрашивал. Т.е. из каждого ящика она просто копируется или наоборот есть фильтр при помощи которого в ящики копируется или как-то по другому.
Никаких нюансов нет, просто в момент поступления на сервер на этапе передачи письма в ящик пользователя, копия кладется в ящик all. В последствии эти письма никак не связаны. Никакие фильтры почты в ящике пользователя не участвуют в копировании. Это все делается раньше в момент обработки входящего письма.
Я к сожалению того, как это реализовано не увидел. Где в конфигах это прописано.
sender_bcc_maps = hash:/etc/postfix/sender_bcc_maps
recipient_bcc_maps = hash:/etc/postfix/recipient_bcc_maps
Можешь поделиться скриптами по сбору общей почты?
Нет никаких скриптов для этого. Штатный функционал postfix.
В статье пишешь что с ящиков all_in и all_out делал суточные архивы. Хочу посмотреть как. У меня что-то не выходит
Под рукой нет готовых примеров. На их не трудно сделать по примерам из этой статьи - https://serveradmin.ru/ochistka-i-obsluzhivanie-pochtovoy-bazyi-postfix/#i-5
Здравствуйте, у кого получилось победить ошибку по авторизации 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 постоянно именно к ним. Буду тестировать дальше, если что напишу. Спасибо ещё раз!
Всем привет!
Настроил у себя во многом по данному мануалу на 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 ?
Подскажите, пожалуйста при связке 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 была статья с описанием подобной настройки.
Здравствуйте, можете пожалуйста обьяснить как правильно указывать/конфигурировать путь для сохранения архивов почт.
$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. Смотрите их внимательно, там эти настройки прокомментированы.
Хорошо, спасибо большое.
Доброе утро.
Спасибо большое за подробные мануалы, но я только начинаю администрировать сервера Linux
И в данном контексте у меня возникли трудности с авторизацией пользователей.
Пишет что нету соединения по IMAP.
Дело в том что в начале мануала нужно проставлять как я понимаю пути к директориям хранения созданных почт
($CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'YES';)
Далее Вы пишите что можно указывать самостоятельный путь (Получится следующий путь до ящика, если у вас архив почты будет жить, к примеру, в директории /mnt/mail — /mnt/mail/zeroxzed.ru/root@zeroxzed.ru.), но не понимаю как ? Точнее как правильно его указывать в этом конфиге ? Помогите пожалуйста.
Добрый день, сделал все строго по вашей инструкции. Но когда ввожу логин и пароль от почты в THUNDERBIRD. Выдает ошибку "Не могу войти на сервер. Возможно, имеется ошибка в конфигурации, имени пользователя или пароле.". Просто в каком направлении копать? Я так понимаю конфиги настроенны не верно ?
Начинать исследование любых проблем надо с просмотра логов postfix и dovecot. Они в /var/log/ лежат. Там либо будут ошибки, либо если не будет вообще никаких упоминаний о подключении, решать вопрос, а туда ли вы вообще подключаетесь. Эти сервисы хорошо логируются и по логам всегда можно понять, что именно не работает и в чем проблема.
Как заставить Roundcube работать по https??
Это отдельная тема. Пример настройки https в apache есть здесь - https://serveradmin.ru/nastroyka-ssl-v-apache-na-centos/ Единственное, там в примере используются сертификаты от сервиса, который уже не работает. Сейчас надо использовать бесплатные сертификаты от let's encrypt.
"Позже получим и настроим нормальный сертификат." - очень хотелось бы посмотреть!
Пробовал указать в конфиге (/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_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 всё проходит гладко а когда пытаюсь отправить сообщения пишет что не может соединиться.
Делаю по мануалу , есть такая ошибка
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"
Версия такая же как у Вас - 3.0.2. А не подскажете тогда, где можно посмотреть логи postfixadmin, что именно происходит при этом входе, какие сообщения или ошибки появляются? Или может быть дело в том что виртуальная машина?
Виртуалка 100% не при чем. Попробуйте другой браузер.
Здравствуйте, уважаемый автор. Большое спасибо за статью. Начал делать по ней, только вместо 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 летней давности.
В 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 адрес в профиле по умолчанию.
Это да, имеет смысл. Я никогда не обращал внимание, что там такая возможность есть в настройках.
При подключении из оутлука по imap, папки отправленные и т.п. написаны на англ. языке. Есть решение этой проблемы на стороне сервера?
Да, есть плагин для dovecot, который автосоздает папки при первом подключении. Названия папок указываются в настройках. Точно не помню название плагина. Еще надо учитывать, что имена папок должны быть написаны в какой-то кодировке для imap, не помню точно какая. Я кое-где встречал такие настройки, но сам никогда не делал. Я всегда использую латинские названия, так меньше проблем и глюков.
Можно прям в настройках dovecot указать папки на русском и они создадутся в ФС в нужной кодировке и даже outlook будет правильно распределять письма до тех пор пока не войдешь в roundcube. С этого момента в вебе будет 2 папки отправленные, например. Веб будет отправлять письма в .sent а оутлук в отправленные. Не проверял, но думаю, что тандерберд и мобильные клиенты присоединятся к вебу. И оутлук будет сам по себе в сторонке... а хочется, чтобы было все едино. Может кто-то уже боролся с этим?
У этой проблемы нет решения. Смысл в том, что разные клиенты создают разные папки, они так созданы. К примеру, мобильный клиент создаст какие-то свои. Я это постоянно наблюдаю и простого решения не знаю. То же самое будет с папкой для спама. Где-то она будет называться "Нежелательная почта", где-то "Спам", где-то "Spam" и т.д.
Провел еще 1 эксперимент. В настройках отулука при подключении указал путь к корневой папке как inbox
Перезапустил оутлук, все папки на русском, кладет как написано. Но если зайти в тандерберд или роундкуб - во входящей папки появились подпипки - отправленные, черновики и т.п. спешиал фо оутлук)) Причем сам оутлук напроч не хочет видеть папки .Sent. А мобильный клиент на андройде (стандартный) напроч не хочет видеть папки оутлука. Получается такая неразбериха....
Заново переписал все конфиги, теперь выдает ошибку:
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 ?
Здравствуйте. Посмотрите пожалуйста лог, и помогите исправить ошибку:
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!» (может и это знаете как пофиксить). Далее я заполнил вручную созданные таблицы и возможно это как-то влияет на работу.
Заранее благодарен за помощь.
не отправляется лог почему-то, но данную проблему решил комментом строк с 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й на прием почты и все теперь ходит
Порт открыт, ДНС правильно настроил, все равно не работает.
Привет, сделал по твоим конфигам, возникла проблема авторизации. Не заходит, в почту, ни под одним пользователем, пишет, что неверный логин/пароль. И папка с почтой(доменом) в /mnt/mail не создается. В базе все пользователи есть
Надо лог postfix и dovecot смотреть и разбираться предметно. Где-то шибка. Статья рабочая.
Добрый день! Настройку 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)
Я еще ни разу не видел, чтобы по логам чисто, а в ящике пусто. Где-то что-то напутано.
Роман решили ? у меня тоже письмо отправляется, но входящ пусто
Здравствуйте, у меня в 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
За что он отвечает, не знаю, надо погуглить и почитать. Может это баг, а может реально права стоят не правильные. Раз все работает, значит сокет от не критичной службы.
Ну по сути это сервис собирающий статистику и в инете о нём информация толком отсутствует, но всё равно спасибо за ответ.
Встречались упоминания в комментариях к этой статье по поводу exim'a, может кто-то поделится рабочим конфигом exim? Настроено exim+dovecot+mysql+postfixadmin. Уже месяц бьюсь не могу решить проблему. Все тесты сервер проходит: сервер не является публичным пересыльщиком почты, прикрутил spf, dkim, dmarc, user's на proxy и каждую ночь ip попадает в блэклист абузы (abuseat.org), в логах ничего нет.
Добрый день.
Уважаемый гуру)) у меня возникла ситуация. Что от одного заказчика стало с одной почты очень много писем генеррэироваться. По 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.
Так а что посмотреть хочется в логах? Если они шлют вам письма и не получается договориться, то лучше все же не блокировать учетки, а принимать все письма, а левые сразу каким-нибудь фильтром уже в ящике сразу удалять. Тогда хоть будет понятно, что все письма доходят. Опять же, по логу, вы письмо сразу же приняли. Если у вас нет на сервере проблем и от других серверов письма не застревают, то скорее всего это не ваша проблема, а сервера, который отправляет письма. У него огромная очередь отправки и он тормозит, поэтому к вам письма приходят с опозданием.
Вы можете посмотреть по заголовкам письма, которое задержалось, в какое время оно было создано, в какое время было отправлено на исходящий сервер, в какое время попало на ваш сервер. Там и будет видно, где задержки.
Огромное спасибо за уделенное время. После ваших слов у меня появилось больше уверенности для разговора с ними и доказательства что у них что то не так.
Zerox
Подскажите, пожалуйста, сколько все это великолепие кушает ресурсов? Я имею ввиду весь стек из статьи со всеми web панелями и процессами MySQL. Интересует RAM, CPU.
Очень мало. Начинать можно с 1 cpu и 1 gm ram. 50 пользователей запросто тянет конфа с 2 cpu, 4gb ram. Тут больше вопрос к производительности диска. Но до 100 юзеров даже одиночный sata диск справится без проблем.
Добрый день!
Ставил все с 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 ошибки. Наверняка где-то ошибки в конфигах. Можно либо гуглить ошибки в логах и исправлять, либо все с нуля аккуратно настраивать.
Привет! Спасибо за хорошие и очень понятные статьи.
Столкнулся с проблемой - 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, сервис не запускается (
Оставлю так, пожалуй...
К сожалению, старую скачать не удается(
Может у Вас есть рабочая ссылка на старую версию?
Заранее благодарен.
Ссылка из статьи актуальна. Только что проверил.
Добрый день!
Подскажите пожалуйста, может конечно я где-то накосячил.
Делал по вашим инструкциям 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, что в статье. Принципиальных отличий все равно не.
Да эта новая версия
Здравствуйте, после пункта "а также проверяем работу 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 будет работать.
привет,
как всегда полезная инфа, уже не первый раз обращаюсь к ресурсу!
вопрос к колеегам, а вот имея уже установленный почтовик (egroupware+postfix+dovecot+mysql) можно ли прикрутить postfixadmin (конечно, так что б он подтянул конфу почтовика)?
вообще, у меня задача массовая смена поролей пользователей и введение политик длины пароля. вот пока не пойму, как решить
спасибо!
Нужно смотреть структуру текущей базы данных. Если она совпадает с postfixadmin, то можно его добавить. Если нет, то нужно переносить данные из старой базы в новую для postfixadmin.
угу. была такая мысль... ок, это длинный путь, как я полнял. есть подозрение, что структура иная
тогда, может будут идеи как с паролями решить? пока роюсь в настройках dovecot и т.д. - не вижу
У вас пользователи сами меняют свои пароли? Если не сами, то в чем проблема при выдаче пароля сразу делать сложный? Этот вопрос решается в момент создания учетки. Соответственно, настраивается в менеджере учетных записей.
сорри, я совсем не подробно все обрисовал...
есть уже работающая система и есть уже почти 1000 пользователей. Сейчас принято решение поменять все пароли и задать политику длины пароля. вот ищу как эту политику реализовать на моей связке (postfix+egroupware+dovecot).
вот, спросил совета, мож кто делал ;)
Как в роундкубе сделать общую адрессную книгу, хотя бы тех контактов которые есть в базе данных постфикс (существующих контактов домена)
Здравствуйте. А почему ничего не написано про DMARC?
Я не использую эту технологию.
Добрый день, настраивал по вышей инструкции. Почта не ходит, подскажите куда смотреть?
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.
Не могу понять, где может быть пропущено =
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.
Добрый день, 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
Добрый день!
Есть ли смысл обновлять Postfix до последней версии?
Сейчас в CentOs 7 1804 по умолчанию Postfix версии 2.10.1, а на оф сайте последняя стабильная версия уже 3.3.
Я никогда не обновляю, смысла не вижу, но он может и есть :)
Добрый день! Спасибо за отличную статью! Когда-то давно я поднимал почтарь на лине. Все было отлично. Сейчас поднял по Вашей статье и у меня такая проблемка. Все перепроверил/перерыл, но не могу найти решение. Это связано с сертификатами?
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 тут не при чем.
Здравствуйте, спасибо за ваш труд переодически просматриваю ваши статьи, может кто подскажет, есть 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. Буду очень признателен за подказку уже весь инет перерил, спс.
разобрался )))
+ прикрутил rspamd
Еще косяк в конфиге выше
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
и ни хре на не работает
Мало того
Теперь для конфига нужно использовать 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)
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
Статья шикарная!
Но вот заработало у меня через dovecot только после добавления
local_transport = dovecot
Добавить хотел старые девайсы репорты шлют только по smtp а нужно чтобы пересылка была по smtps
Отличная статья но у меня вопрос другого характера. в сетке очень много старых девайсов, стоит задача сделать некий "почтовик" который бы принимал от них репорты и пересылал на почту например яндекса. Каким образом это реализовать ?
Postfix умеет так делать. На нем можно настроить почтовый релей вообще без авторизации, если старые устройства не умеют это делать. Перечислить их по ip. Затем настроить отправку всей почты в какой-то другой ящик. Это сделать реально, но готовых инструкций у меня нет.
В статье ошибка.
Тк ранее хеширование паролей было отключено то соотв. в dovecot-mysql.conf нужно указать, что пароль идет прямым текстом:
default_pass_scheme = CLEARTEXT
Если у пользователи будет входить на почту только с помощью браузера-web интерфейс (т.е. pop3 не нужен вообще), тогда dovecot не нужен?
Не пойму зачем нужен dovecot вообще? Только для pop3?
Будет ли это всё работать без dovecot, если на почту будем входить только с помощью бразуера-web интерфейс?
Dovecot в том числе и imap сервер. Без него web интерфейс работать не будет.
Пришлось качать именно postfixadmin-3.0.2.tar.gz
т.к. 3.1 - ругается на отсутствие папки tempaltes_c
3.2 - отсутствие файла setup.php
в 3.2 setup.php находится в public/, там же создай ручками templates_c и дай права на нее
Что такое "backupmx"?
Обычно это резервный mx сервер, у которого более низкий приоритет, по сравнению с основным. По-умолчанию вся почта идет на основной сервер, но если он не доступен, то почта будет отправляться на второй сервер.
а зачем тут "Прошу поделиться в комментариях тем, у кого есть бОльший опыт" буква о - большая?
чтобы не перепутали с болЬший или большИй?
Приветствую!
Недавно заметил небольшой косяк в настройках Postfix.
В принципе, совсем некритичный но все же.
Косяк касается Postfix reverse DNS lookup — https://serverfault.com/questions/911789/postfix-forced-reverse-lookup-for-incoming-connections
При желании, если найдёте инфу полезной можете добавить в статью.
В тексте ошибки все есть:
fatal: /etc/postfix/mysql/relay_domains.cf: bad string length 0 < 1: dbname =
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 давал, не хочет что-то, что делать? Ставлю версию из статьи.
По умолчанию запись в каталог содержимого apache через SELINUX запрещена. Чтобы разрешить (конечно, это многовато):
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/postfixadmin(/.*)?"
restorecon -Rv /var/www/html/postfixadmin
Привет! У меня тут такая ошибка типа нажимаю на получение почты, а там через 30 сек говорит "Не возможно соединиться с сервером"? посоветуйте чьё ни будь?
Настройте соединение с сервером :) В ошибке все сказано. Сервер либо не запущен, либо до него нет доступа.
Возникла проблема в 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.
Здравствуйте, а вы не подскажите, с помощью какого инструмента можно забрать почту из другого почтового ящика?
С помощью fetchmail можно.
А у вас никакой статьи по этому поводу не написано?
На эту тему ничего нет.
Хорошо, спасибо. А то привык к вашим статьям, всегда они приходятся по делу. У ваших статей есть только один недостаток, сайт довольно долго открывается, я думаю что из-за большого количество комментов. Попробую найти что-нибудь в инете по fetchmail.
Привет! слушай братан. Вот Я тебя не как не понимаю, давно слижу за твои статьи и у твоих статьей есть один минус. Ты вот на данный момент рассказываешь про почту, а тут нужно использовать разных инструментов типа php phpmyadmin httpd mariadb и т.д. Потом ты говоришь Я подробно говорил про настройку httpd отдельно, вот зачем крутит новичков вокруг своих очень больших статьей?!. Просто настрой необходимое шаг за шагом, чтобы не бегать между твоими статьями. А то лично Я запутаюсь или у меня что-то не получиться. Но эта реально бесить и это правильно. Просто делай всё на одном статье.
Каждая статья всегда самодостаточна. Ссылки идут только за подробностями. А какой мне смысл писать одно и то же, как попка попугай, в каждой статье? Я дроблю статьи по темам и даю на них ссылки. Если что-то где-то изменится, то мне достаточно будет поменять одну статью, где были изменения, а не все, где есть упоминание о теме.
Что бы раздел отпуск заработал надо сделать:
mkdir /vmail/sieve/
chown -R vmail:vmail /vmail/sieve/
И в разделе фильтр включить глобально managesievis
Это указано в статье, только путь для sieve другой в конфигах стоит, соответственно, директории тоже другие создаются. Отпуск работает через модуль sieve, поэтому он однозначно должен быть включен, настроен и работать.
Добрый день
Подскажите плиз. С исходящими все ок.
А со входящими траблы. Это в логе /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)
Письмо не попадает в ящик.
Надо смотреть в логи довекота. С ним какие-то проблемы. Доставка письма в ящик осуществляется им, и в логе видно, что тут какая-то проблема.
Здравствуйте, чтобы добавить фильтрацию по типу вложений каким инструментом можно воспользоваться?
Доброго времени суток! Хотел спросить. Если прикрутить почтарь к ad, смогу я потом добавлять пользователей левых? Для этого еще бд надо ставить на него? Или так нельзя?
Я не понял ничего в вопросе :) Что значит прикрутить к AD? Кто такие левые пользователи? О какой БД идет речь?
Если настроить ldap, так как около 300 пользователей в офисе. Но у меня ещё куча пользователей мобильные и офисы в других городах.
Если завернуть юзеров на ldap, то придется там их создавать в любом случае. Но я ни разу не настраивал. Можно ли настроить разные бд для хранения пользователей тоже не знаю. Да я бы и не стал так делать. Создал бы просто в AD отдельный OU и там бы хранил всех, кто не имеет отношения к домену, а использует только почту.
Как вариант. Спасибо за ответ и помощь!
Здравствуйте , большое спасибо за статью , практически все получилось . Единственное , почему-то не работает отправка через Roundcube ( через почтовые клиенты все ок ) , выдает ошибку в конфигураторе Roundcube ( тот же эфект и через веб-панель ) SMTP send: NOT OK(Failed to add recipient 'test@gmail.com'. 4.7.1 : Relay access denied (Code: 454)) .
Скорее всего ошибка в настройках smtp сервера в конфиге roundcube.
Здравствуйте, отличная статья, дает знания но не разжевывает до состояния манной каши. Все сделал все работает, кроме функции автоответчика. У меня есть только конфиг /var/www/html/webmail/plugins/managesieve/config.inc.php.dist, в нем я нашел функцию $config['managesieve_vacation'] = 1; Но вкладка Отпуск в Настройках просто не появляется. И второе, при расшаривании папок по imap, классная функция кстати, если указываешь просто пользователя или Гости - все хорошо, а если Все пользователи (любые) - выскакивает ошибка "Невозможно добавить права доступа". Вроде все круто, а такая фигня весь аппетит портит. Еще раз спасибо за статью, очень толково написано
Это нормально, что сразу все не получилось. Тема почтового сервера достаточно сложная и без опыта сходу не берется. Возможно где-то неправильно конфиг поняли или не те правки внесли, возможно пакеты обновились и теперь статью надо поправлять. В любом случае, это вопросы решаемые, как раз их решение приносит опыт. Главное, что в целом система заработала и почта забегала. Это уже успех, если делается первый раз.
Это да. В статье про блокировку спама с помощью postfix, не расписан пункт про smtpd_data_restrictions, вы обычно используете те настройки которые указаны по умолчанию в основной статье?
Не помню уже подробностей по этой теме. Чаще всего настройки на разных серверах разные, в зависимости от обстоятельств.
Доброго времени суток, отличный мануал, очень бы хотелось увидеть что-то подобное для debian 9, а так же настройку для использования нескольких доменов
Есть мысли это сделать, но увы, нет времени. Возможно когда-нибудь это будет сделано.
Добрый вечер.
Подскажите пожалуйста, как бороться с ошибкой:
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
Добрый день, уважаемый 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
куда можно копать?
Ответил на форуме.
Все работает. Но ящики в папке создаются вида admin@example.ru Я хотел без Домена хранить и выставил опцию в /var/www/html/postfixadmin/config.local.php
$CONF['domain_in_mailbox'] = 'NO';
, но ящики все равно создаются в папке так же с доменом
Редактировать надо /var/www/html/postfixadmin/config.inc.php
Он так же отредактирован
Как отключить аутентификацию из вне полностью, задрали подборщики паролей, стоит проброс портов на маршрутизаторе, но если убрать 25 порт не пойдут письма, нужно как то убрать средствами постфикса
Как отключить аутентификацию извне, в основном все заходят в почту только на работе, задрали подборщики паролей, загремел в блеклист гугла)))
Можете помочь?
Старался следовать этой статье.
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 есть. Никак не могу понять что не так(
В общем дошел я до отправки писем со всеми подводными косяками что были разобрался.Но вот беда почта не ходит )
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.
да да я все починил не заметил сразу
А в чем может быть проблема создаю пользователя админ все проходит хорошо но когда пытаюсь под ним авторизоваться ничего не происходит просто обновляется страница и все при этом нет ошибки что пароль или логин не верны?
Добрый день!
у меня такая проблема, имею 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
да и в любом случае, я этот параметр весь "перебрал" по очереди....
Вообще то это странно. Алгоритм один и тот же, он не может поменяться в зависимости от версии библиотеки. Может быть с паролями что-то случилось при переносе базы данных? С кодировкой может быть какие-то проблемы возникли.
я дампом переносил всё.....пароли на английском..
запрос одни и тот же, локаль проверить мб....
сейчас проверю
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
что я делаю не так?
Автор скажи честно !!!
зачем было тратить врем я на написание ЭТОГО гО*НА????
такое чувство что аФФТОР НАКОПИПАСТИЛ конфигов взятых непонятно откуда и даже смысла не понимая что в них за что отвечает !!!
по меньше бы такого мусора в инете!!!
У тебя наверняка есть статьи покруче. Показывай, я поучусь у тебя.
Да все верно !!! По круче !!!)))) Если уж ты захотел пиписьками мерятся !!!
ПЫСЫ: твоя статья это КОПИЯ https://habrahabr.ru/post/193220/
)))))))))))))))))
Теперь посмотри внимательно хотя бы по оглавлению, что есть там, а что есть здесь. Эти статьи совершенно разные, а похожи они ровно настолько, насколько могут быть похожи настройки идентичных сервисов.
В # 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, постфикс завёлся. Но я конфигурировал не так, как у тебя в статье, и наверняка есть какое-то объяснение этому.
Значит все же не пропустил, это радует :) Но тем не менее у меня как и у Вас все стоит на одном сервере, т.е. и у Вас roundcube является почтовым клиентом для dovecot, но в Ваших логах все хорошо, а вот в моих (сейчас извне даже еще раз перепроверил - rip локальный увы...) неверный.... Я наверное покажусь занудой, но тем не менее я так и не понял как мне это поправить )))
Я больше не знаю, что еще добавить. Из того, что вы пишите, я вижу, что вы не понимаете тему вообще. В общем, то, что у вас одинаковые ip адреса в логе это нормально. Так и должно быть. Когда подключитесь сторонним почтовым клиентом, например thunderbird, тогда адреса будут разные.
Спасибо за ответ. Видимо я был в какой то момент невнимателен и что то упустил. Просто следуя логике повествования установки я понял, что 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.
Доброй ночи! Так же хотел присоединится к благодарностям за прекрасную статью. Но как же без вопроса )) Возможно покажется глупым, но не могу сам пока понять ОТКУДА это берется в моем логе, касательно вот этой части статьи:
"В /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.
Огромное спасибо за статью!
У меня postfix находится во внутренней сети, за почтовым шлюзом. Как ему сказать, что почту надо слать на почтовый шлюз? Что и в каких конф. файлах надо изменить? Домены внешней почты и внутри локалки, естественно, отличаются.
У меня нет точных настроек, обычно не использую такую конфигурацию. Но ничего сложного тут нет, искать в инете инфу на тему, как указать почтовый релей для postfix. Эта тема перекликается с тем, что я описывал здесь: https://serveradmin.ru/otpravka-pochtyi-cherez-konsol-s-avtorizatsiey-v-linux/ Только у меня есть еще и авторизация, у вас возможно релей без авторизации работает.
Вывел серевер из-за 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 это было. Но дело наверняка не в версии системы.
Доброго времени суток , подскажите ???
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 тут так все и оставлять?
Спасибо за статью!!! Делал все пошагово, возникло пару моментов:
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 портов?
Спасибо за Вашу статью! Настроил практически все согласно Ваших инструкций. Все работает!
Спасибо за вашу работу. Респект
Получилось настроить по статье?
Я пока только ищу хороший мануал по установке и настройке. Решил остановиться на вашем. Все понравилось и понятно. Как только установлю, обязательно отпишусь о своём опыте
Добрый день.
Подскажите пожалуйста, как в этой связке организовать "мультидоменность"? Может быть у Вас есть статья на эту тему? Поиском пользовался, но не нашел ничего (может плохо искал:) )
Ничего особенного делать не надо. Настраиваете DNS записи второго домена на этот же сервер. Затем добавляете новый домен через postfixadmin. И все будет работать. Отдельно надо не забыть добавить новые записи по аналогии со старыми в настройки dkim.
Здравствуйте, поднял сервер по Вашей инструкции, но при отправке сообщения с 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 сервере провайдера настроена и порты открыты. Куда копать?
Уже разобрался. Ошибка в правилах MikroTik была.
Я так понял просто 25-й порт на вход был закрыт?
Нет, веселее. Намудрил с блокировкой подключений по 25 порту.
Создаю пользователя в постфикс админе, вижу его в базе, но при отправке ему письма, письма не доходят, получаю в логах - User unknown in local recipient table, хотя с него почта уходит. Подскажите кто нибудь куда копать?
Конфиг virtual_mailbox_maps.cf надо проверить на правильность подключения к mysql. Postfix не видит пользователя при получении письма и пишет об этом.
Добрый день. Сделал все по вашей статье, исходяшая почта работает, а входящая не хочет. Отправляю с gmail на свой почтовый, письмо ушло, в логах вижу соединение с gmail потом идет запись Connection refused и в скобках адрес моего сервера, а также не могу зайти через клиенты на почту, тупо пишет ошибка сети при попытке авторизации с почтового клиента
Подробнее логи надо смотреть. Возможно какие-то сетевые проблемы, или с ssl. Connection refused неприятная ошибка, так как за ней может много чего скрываться. Нужно подробно смотреть и на проблему с клиентами, возможно эти 2 ошибки связаны, но не обязательно.
И так, после часов мучений новая заметочка. Если вы столкнулись со следующим:
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
Выключать СЕЛинукс считаю профанацией.
Полагаю, что вместо :
# 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
У нас почему-то раньше всех затык. Веб-сервер работает нормально - страница-заглушка отображается.
phpmyadmin - работает. postfixadmin работать отказывается, в браузере - внутренняя ошибка сайта - HTTP 500.
Уже пробовали копировать все команды с сайта, но старницу setup.php не открывает. Все каталоги и расположения - стандартные.
В конфиге httpd действительно нигде не нужно указывать каких-то настроек связанных с postfixadmin?
ДВС.
Упёрся в
"chown vmail. /mnt/mail".
ЧТО эта команда делает?
У меня фря 10,3, точка в конце vmail вызывает
illegal user name
Голову уже сломал...
Это аналог:
chown vmail:vmail /mnt/mail
Просто писать короче :)
Спасибо разобрался )))
Здравствуйте Подскажите пожалуйста. Все сделал по мануалу но выдает ошибку 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) Спасибо)
Добрый день.
Подскажите как можно заблокировать прием всей почты из определенной зоны? Сейчас сильно активизировался спам из зоны *.bid Хотелось письма из этой зоны вообще не принимать.
Нужна помощь или наставление, сервак завелся все нормально, почта уходит, но входящие письма реджектятся, а реджектит их СПФ, так как сервак у меня внутри локалки, и все писма приходят от 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 отправителей.
Вот и я о том же, с маршрутизатора ИП идет нормальный, а вот прокся подставляет свой, в ХЕЛО письма записан норм айпи, ну а по конфиге Таблеса все норм?
Подменил не на долго сервак, почта доходит но только с более менее нормальных сервисов, может вообще проксю вырежу с цепи, она особо свою роль и не выполняет, все равно все лазят где хотят, а все компы в АД, без пароля никто и так не зайдет
Доброй ночи!
А не хотите ли со временем написать подобную статью, только с использованием exim4 как MTA?!
Например, как это описано здесь — http://t-machine.org/index.php/2014/06/27/webmail-on-your-debian-server-exim4-dovecot-roundcube/
Думал об этом. Exim популярный почтовик, возможно даже более популярный, чем postfix. Но для меня это будет только трата времени. Я неплохо знаю postfix, умею на нем реализовывать все потребности почты, поэтому не вижу для себя смысла изучать еще и exim.
Приветствую!
А Вы не пользовались веб-интерфейсом и органайзером SOGo?
Понимаю, что круглокубик прост и надёжен как АК-47, но все-таки :-)
И да, поднял по данной инструкции почтовик на Debian 8, все завелось.
Нужно только учитывать, что в Центе и в Дебиане dovecot опакечен по разному.
В Дебе пакетов больше ;-)
Пользовался. Мне у него интерфейс не нравится, хотя он предлагает некоторый дополнительный функционал.
Да и нужно отметить, что интерфейс у него достаточно тормозной.
Не знаю, может в Хромимуме все по-другому, но у меня в Лисе так.
Спасибо за статьи. Сделал все по гайду, подключаюсь через тандерберд коннект проходит, но сообщения не загружаются и при отправке почты ошибка: 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.
Что я делаю не так?
Гуглить ошибки надо и исправлять.
проблема: не удается подключиться по 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 снаружи или почтовый клиент по внешнему адресу не работает.
помогите найти, куда копать, что проверить?
решено, всё ок.
В чем была проблема?
со связкой centos+postfix+dovecot всё было в порядке. связано с кривой настройкой маршрутов.
со сторонних компьютеров из внешнего мира работает как надо.
Добрый день, спасибо за статью, настроил и все почти заработало, но есть проблема, письма из вне не доходят, в логе "/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 порт, отправлять письмо и смотреть, в какой момент возникают проблемы и разрыв соединения.
Удивительно, но решилось созданием пустой папки templates_c и с правами apache
возможно это проблема postfixadmin 3.1
Спасибо!
Помогло.
Добрый день, спасибо за статью.
Можете подсказать, почему если я пытаюсь запустить скрипт 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
Нужно создать директорию templates_c в /var/www/html/postfixadmin/
Тогда ошибка исчезнет
Хотелось бы увидеть данную развертку, на основе контейнера turnkey NGINX в proxmox. Ну в принципе можно развернуть контейнер на основе centOS, но мне больше нравится debian.
Основы тут расписаны, в контейнеры уже сами собирайте :) У меня нет времени этим заниматься, хотя мысли такие были. Но тут либо меньше статей, но с готовыми образами/контейнерами, либо больше статей, но только с описаниями/конфигами. Мне самому интереснее второе, так как больше тем успеваю охватить.
И на том спасибо, сейчас пытаюсь все это запихнуть в "дебиане стретч", посмотрим что выйдет, как сделаю отпишусь.
Приветствую!
Еще такой вопрос, а почему Вы не создавали список доверенных хостов для opendkim, файл trustedhosts ?
Здравствуйте. Огромное спасибо Вам за Ваши статьи. Впервые настраиваю почтовый сервер, сделал всё как написано у Вас. Вроде всё получилось и даже есть возможность обмениваться почтой внутри моего почтовика и отправлять почту наружу. Но вот с наружи почта не приходит, письмо отправляется но до моего сервера не доходит и в ответ нечего не возвращается, в логах тоже нечего нет. Подскажите в чем может быть причина, или куда мне посмотреть. И еще вопрос должен ли проходить 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 Я как то упустил этот момент.
Доброе утро!
Скажите, а как Вы думаете, например, для Debian Jessie/Stretch последовательность шагов по настройке сильно будет отличаться?
Практически не будет отличаться. Все пакеты настраиваются примерно одинаково на этих системах. Разница может быть небольшая в названиях во время установки, в некоторых путях, но сами конфиги основных программ - postfix, dovecot будут одинаковые.
Все отлично, спасибо за статью, но вот беда... на моем CentOS 6.9 пишет что:
No package dovecot available.
No package dovecot-mysql available.
No package dovecot-pigeonhole available.
Error: Nothing to do
И похоже такой беды ни у кого не случалось)
Репозиторий epel может не подключен. А в чем сейчас смысл использовать centos6? Срок поддержки уже наполовину истек. Уже семерка года три как вышла.
Лог dovecot .
Вроде известная ошибка, но пока ничего не нагугливается. Пароль к БД 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.
Как я и думал :)
Уже разобрался, вопрос снимается.
Привет!
А где у Вас написано, что postfix должне слушать 25-й порт?
Вроде же как одним 587-м обойтись нельзя ;-)
Так он по-умолчанию на нем работает. Специально не надо указывать. Я даже не помню, где это настраивается, никогда не менял и не трогал.
В "Битрикс Веб Окружение" (php7.0, mariadb 5.5) пришлось для круглокубика ставить постгрес, т.к. Roundcube, не работает с php-mysqlnd :-( Просто задача привелосипедить почтовый сервис к битриксу, вот и мучаюсь потихоньку. Спасибо за статью, пока вроде ошибок в ней не обнаружил :-D
Это, кстати, известная проблема. С php-mysqlnd много чего не работает. У меня тут уже жаловались в комментариях к другим статьям.
Добрый день.
Может кто помочь с такой бедой
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
Только при отправке писем на ящики Яндекса
Могу предположить, что ты из Украины и у тебя забанили Яндекс.
Добрый день. Еще вопросик. Я правильно понимаю если использовать несколько доменов то пункт "Настройка 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 русских благодарностей за быстрый ответ и хорошую статью. Приятно читать твои статьи. Спасибо
Добрый день! Можете подсказать? Я настроил 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?
В iRedMail dkim уже настроен из коробки. Надо только dns записи установить.
Записи прописал, если я OpenDkim удалю, встроенный подхватится?
Добрый день. Подскажите в чем может быть проблема. Если 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 и пошла почта.
Добрый день! У меня проблема с отправкой локальной почты. Отправляю письмо с 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. Довекот где-то в другом месте юзеров ищет.
Добрый день, но есть один нюанс, при использовании опции 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
Спасибо,за статью!!!Пробую пошагово делать,но возникают вопросы.
1-myhostname = mail.zeroxzed.ru
mydomain = zeroxzed.ru
Ничего страшного,что hostname моего почтового сервера ,будет совпадать с моим почтовым domain?Или они должны быть разные?
2-Некоторые строчки в Вашем конфиге у меня не было,это нормально,мне просто вставить недостающие?
6,9 из 10 баллов на http://www.mail-tester.com
-3 балла за подпись DKIM
буду решать )
Добрый день. Не подскажите причину, по которой не доходит сообщение.
" 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 ветки. Просто по этому правило судя по логам, достаточно много плохих писем отсеивается.
Покопался и разобрался, в общем еще раз спасибо за отличную статью, у меня скоро наверное каждая страница вашего сайта будет в избранном.
По поводу настройки 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
Все работает, я просто опечатался в iptables, вместо 587 указал 578.
Спасибо за статью.
Сам настраиваю без phpmyadmin, и может быть без установки этого пакета не подтянулись нужные зависимости. В общем дополнительно при разворачивание postfixadmin, я до установил следующие пакеты yum -y install php-mbstring php-common php-pdo php-mysql
Подскажите дураку в этом месте все колом встало
Создаем группу и пользователя с указанными в конфиге 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 какой то конфиг я видать не докурил, но какой не понятно.
Может просто dovecot не запущен. Он является imap сервером.
Добрый день.статья просто супер, но при установке встретилась мне оказия. При установке postfixadmin перехожу в браузере на setup.php и белый экран, а в самом верху браузера на странице наблюдаю только картинку почтового ящика. Даже не знаю куда смотреть
>>> "У некоторых может возникнуть вопрос, а зачем свой почтовый сервер? Почему бы не воспользоваться средствами корпоративной почты, которую представляют популярные почтовые сервисы бесплатно? Я планирую написать по этому поводу отдельную заметку. У меня тоже есть определенный опыт на этот счет. И если некоторое время назад я считал, что свои почтовые серверы в небольших организациях уже не актуальны, то сейчас я так не думаю, поэтому и появилась эта статья."
Очень хочется почитать.
Половину статьи написал уже. В ближайшие дни опубликую свои рассуждения.
Установил и при первом заходе на постфикс вместо Ок такая муть, я в где то пропустил поддержку 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 не найдено.
В каком репозитории искать или проще откатиться и начать заново.
У меня тут вопрос небольшой возник - уже не знаю в какую сторону копать....
После того как все установил, по maillog все работает, все отлично. На *название_сайта*/postfixadmin и *название_сайта*/phpmyadmin - все открывается, и нормально происходит логин, а вот если логиниться в *название_сайта*/webmail (открывается интерфейс roundcube) - не получается залогиниться - ниже полей ввода появляется "Неверный запрос! Информация не сохранена"... Пробовал писать не просто логин, а логин@домен - ситуация та же... Но вот если заходить через *IP_адрес*/webmail - все нормально, и спокойно пускает в почту...
*название_сайта* == *IP_адрес*
Если тут данный комментарий будет лишний - попробую на форуме темку создать (а может тут вообще проблема мелочная).
Заранее спасибо.
Поддерживаю, все работало нормально. Но теперь начались проблемы, возможно я начал добавлять какие то пакеты и они конфликтуют, в изначальной сборке таких ошибок не возникало, пытался прикруть webdav может что то от туда конфликтующее. Я настроил вход через 80 и 443 порт на webmail, по 443 входит без проблем, через 80 постоянно ругается на неверный запрос.
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=
Супер секретную информацию в логе можно было бы и оставить, так было бы сразу понятно, в чем причина.
Возникает ошибк:
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.
Здравствуйте.
Selinux отключили?
Да.
Еще заметил нюанс - в блоке
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
у меня не прошло, видать из-за того что Вы использовали рабочий конфиг (а может еще из-за чего то)
не прошла табуляция в комменте (даже через пробелы)...
Да, это проблема. Табуляцию съедает движок сайта, но даже если тут изловчиться его добавить, то при копировании потеряется. Надо подумать, как объяснить этот момент. В рабочем конфиге эти две строки стоят с табуляцией. Не знал, что это имеет принципиальное значение.
Опечатку исправил, спасибо.
может что-то типа:
и сделать примечание - что это знак табуляции?
хм... даже "" (без кавычек) не прошло...
эх... только наверное четыре точки поможет )) типа: .... - типа знак табуляции)
Все просто - добавил комментарий в кофниг :))
Четко! :)
Правда что-то я нафлудил тут в комментах к статье...
Если что - можно подчистить :)
Нашел еще одну опечатку:
Добавляем полученную строку в файл конфигурации 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 / сервере нужно поднимать почтовый... либо просто я еще не докопался до сути).
Почему то не в ответ на коммент пост вставился :(
Согласен)
Но просто столкнулся с проблемой iRedMail - типа нельзя использовать имя как hostname - и потому не много завис. Да с iRedMail что-то не понятка - после команды reboot по ssh - сервак поднимался только после "хард-ребута" (через питание).. Поэтому буду применять данную статью - хоть в Инете и много страниц про postfix+dovecot и т.д. - но уж лучше Вашу статью возьму, ибо все (почти) расписано.
Доброго времени суток!
Вроде бы все делал следуя данной статьи - но до конца не дошел.
Возможно есть опечатка:
Дальше редактируем конфигурационный файл 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 назад. Повторял но не до конца понимал, что делаю. Со временем разобрался. Главное постоянно работать с этим, тогда получится.