Статусы ошибок PMTA / Решения
Ошибка доставки в логах: bounced 2020-05-10 15:02:52 mail@mail.ru 4.4.7 (delivery time expired)
Следствие: письма скидываются в bounce по причине истекло время попыток доставки. Если более простым языком — то Ваше письмо находилось в очереди доставки pmta дольше чем указано время периода доставки письма.
Решение: Как правило измените параметра bounce-after на более высокий период (предложен PMTA 4d12h — 4 дня 12 часов) исправит проблему.
Ошибка доставки в логах: ……….failed,5.3.4 (message too big for system),smtp;552 5.3.4 message too large,…….
Следствие: письма скидываются PMTA в bounce по причине превышения допустимого обьема
Решение: Измените размер письма. Обратите внимание ошибка может выдаваться как на обьем кода (строк) так и на общий «вес» письма (письмо, вложение, текстовая версия).
Ошибка Yandex: Error: «451 4.7.1 Sorry, the service is currently unavailable. Please come back later. 1546866816-xLgmf0vnZG-DZRSiFoX» while connected from domain.ru (00.00.000.000) to mx.yandex.ru (213.180.204.89)
Следствие: (временный) отказ почтовой системы принимать письмо
Решение: убедитесь в отсутствии ошибок в конфигурации сервера, dns. Как правило такую ошибку получает PMTA на отправленное письмо:
- с отсутствующей dkim подписью
- с неверной dkim подписью
- не верном ptr
- ошибки в spf
Ошибка Mail: Error: «550 spam message rejected. Please visit http://help.mail.ru/notspam-support/id?c=u5CwlsJTGjcIczev8TxLgYP14fM6i39-kVxD5sMPhAEhAAAAXTQAAP_n9RQ~ or report details to abuse@corp.mail.ru. Error code: 6B090BB371A53C2AF377308814B3CF1F3E1F5837E7F8B3AE6435C9101840FC3. ID: 000000210000345D14F5E7FF.» while connected from domain.ru (00.00.000.000) to mxs.mail.ru
Следствие: Ваше письмо отклонено по причине СПАМ
Решение: ошибка многогранна, описать решение возможно (весь наш сайт в разделах рекомендаций), искать решение в областях:
- доберусь распишу…. 🙂
Ошибка: StatusDnsQueryFailed resolving domain
Следствие: (дословный перевод англ.) Эта ошибка указывает на то, что DNS-запрос для домена не может быть завершен. Это может быть вызвано несколькими причинами, а именно тайм-аутами, когда PowerMTA пытается установить соединение с вашим локальным DNS-сервером, но, скорее всего, тайм-аутами на самом локальном DNS-сервере при попытке установить соединение с другими DNS-серверами.
Решение: Мы не стали вникать в источник проблемы, и просто привели свой файл /etc/resolv.conf к представленному ниже виду, что исключило повтор ошибок на наших серверах:
option timeout:1 option rotate domain domain.ru nameserver 77.88.8.8 nameserver 8.8.8.8 nameserver 8.8.4.4 search domain.ru
В некоторых ОС при перезагрузке resolv.conf может быть перезаписан в исходное состояние.
Запретить перезапись Вы можете следующей командой
chattr +i /etc/resolv.conf
reboot
Так же рекомендуем убедиться в корректности общения Вашего сервера с сервером принимающей стороны:
Проверим DNS маршрутизацию до сервера и проверку его доступности (к примеру mail.ru)
pmta resolve --connect mail.ru
Querying 77.88.8.8 over UDP about MX mail.ru
Read response from 77.88.8.8
answers: ttl=288
mail.ru. 288 IN MX 10 mxs.mail.ru.
Querying 77.88.8.8 over UDP about A mxs.mail.ru
Read response from 77.88.8.8
answers: ttl=32
mxs.mail.ru. 32 IN A 94.100.180.104
mxs.mail.ru. 32 IN A 94.100.180.31
status = StatusOk
pref host name IP addresses
—- ———— —————————-
10 mxs.mail.ru 94.100.180.104 94.100.180.31
connecting from localhost (0.0.0.0) to mxs.mail.ru (94.100.180.104)
connected from 31.148.99.253:59569
>>> 220 mxs.mail.ru ESMTP ready
<<< EHLO localhost
>>> 250-mxs.mail.ru
>>> 250-SIZE 73400320
>>> 250-8BITMIME
>>> 250 STARTTLS
<<< STARTTLS
>>> 220 2.0.0 Start TLS
TLSv1.2 connected with 256-bit ECDHE-RSA-AES256-GCM-SHA384
Cert: /C=RU/L=Moscow/O=LLC Mail.Ru/OU=IT/CN=*.mail.ru; issuer=/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=GeoTrust RSA CA 2018; verified=no
<<< EHLO localhost
>>> 250-mxs.mail.ru
>>> 250-SIZE 73400320
>>> 250 8BITMIME
<<< QUIT
>>> 221 2.0.0 Bye
closed mxs.mail.ru (94.100.180.104) in=180 out=48
— pmta имеет команду
resolve – с её помощью это всё можно сделать одним действием:
В примере выше можно раскрыть информацию о маршрутизации для домена mail.ru.
Команда перечислила два почтовых узла (mxs.mail.ru. 94.100.180.104 и
mxs.mail.ru 94.100.180.31), все с уровнем предпочтения 10, и каждый из них
имеет свой собственный IP-адрес. Параметр —connect указывает, что pmta пытается подключиться к почтовым серверам (что и было сделано в итоге, с «mxs.mail.ru (94.100.180.104)»).
Теперь убедимся готов ли принять наше письмо почтовый сервер.
Трассировка передачи (к примеру на mail.ru)
Опции: pmta trace —log-data —log-resolution —to-log —retry-recipients —source-ip=ip domain/vmta
Даёт PMTA команду открыть соединение с указанным доменом и осуществить попытку доставки сообщений из его очереди. Если используется параметр —to-log, то будет произведена запись лога в файл конфигурации, перезагрузка конфигурации, планировка вызова и отмена всех этих изменений после завершения отладки.
По умолчанию, записываются только SMTP-команды и ответы. Результат этой команды можно
затем найти в файле логов.
Параметры:
—log-data
Включает запись передачи данных, как параметр log-data в файле конфигурации.
—log-resolution
Включает запись раскрытых DNS-данных, как параметр log-resolution в файле конфигурации.
—to-log
Включает запись трассировки в файл лога
—retry-recipients
Немедленно ставит в очередь отправки все письма для получателей в очереди, которые находятся в корзине ожидания переотправки.
—source-ip
Указывает IP-адрес источника, который будет использоваться для попыток соединения из VirtualMTA с несколькими smtp-source-hosts, настроенными для этой VMTA.
domain[/vmta]
Имя очереди(ей) для отображения, в формате domain[/vmta], где domain это имя домена
назначения, а vmta – это VirtualMTA. Если параметр отсутствует, для обоих значений будет
установлен подстановочный знак (то есть */*), и будут показаны все очереди.
pmta trace mail.ru
2019-01-16 17:44:39 starting mail.ru/{default}
2019-01-16 17:44:39 connecting from c-premier.ru (0.0.0.0) to mxs.mail.ru (94.100.180.104)
2019-01-16 17:44:39 connected from 31.148.99.253:50452
2019-01-16 17:44:39 >>> 220 mxs.mail.ru ESMTP ready
2019-01-16 17:44:39 <<< EHLO c-premier.ru
2019-01-16 17:44:39 >>> 250-mxs.mail.ru
2019-01-16 17:44:39 >>> 250-SIZE 73400320
2019-01-16 17:44:39 >>> 250-8BITMIME
2019-01-16 17:44:39 >>> 250 STARTTLS
2019-01-16 17:44:39 <<< STARTTLS
2019-01-16 17:44:39 >>> 220 2.0.0 Start TLS
2019-01-16 17:44:39 tls:TLSv1.2 connected with 256-bit ECDHE-RSA-AES256-GCM-SHA384
2019-01-16 17:44:39 tls:Cert: /C=RU/L=Moscow/O=LLC Mail.Ru/OU=IT/CN=*.mail.ru; issuer=/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=GeoTrust RSA CA 2018; verified=no
2019-01-16 17:44:39 <<< EHLO c-premier.ru
2019-01-16 17:44:39 >>> 250-mxs.mail.ru
2019-01-16 17:44:39 >>> 250-SIZE 73400320
2019-01-16 17:44:39 >>> 250 8BITMIME
2019-01-16 17:44:39 <<< QUIT
2019-01-16 17:44:39 >>> 221 2.0.0 Bye
2019-01-16 17:44:39 closed mxs.mail.ru (94.100.180.104) in=180 out=54
2019-01-16 17:44:39 done mail.ru/{default}
Как мы видим общение с mail.ru нашего сервера проходит в допустимых пределах.
Обратите внимание что такая ошибка так же присутствует при ошибках «общения» сервера получателя и отправителя при отправке письма.
Ошибка: Timed out, status = ETIMEDOUT while connecting from domain.ru (00.00.000.000) to mail.domrnklienta.ru (00.00.000.000)
Следствие: Причин множество, все они вызваны отказом или отсутствием возможности подключения к серверу получателя. Как правило в большинстве случаев — ошибка возникает из за не возможности подключения к порту
Решение: Проверяем pmta resolve —connect mail.domainklienta.ru и pmta trace mail.domainklienta.ru в одном из логов Мы увидим с Вами чем вызвана ошибка.
Команду эти Вы можете вводить в консоли PMTA domain.ru:1001/command
В нашем случае теста — ошибка была в доступности mx получателя
trace mail.domainklienta.ru
2019-01-17 15:56:28 starting mail.domainklienta.ru/{default}
2019-01-17 15:56:28 bounce-upon-no-mx set for queue, no MX records found
2019-01-17 15:56:28 done mail.bskmalt.ru/{default}
Решение: удостоверьтесь в открытости Ваших портов подключения в /etc/sysconfig/iptables / блокировки порта провайдером / а так же корректности файла iptables
Ошибка: Running under user pmta (uid 995); group pmta (gid 991) 2020-06-04 15:38:56
Startup error: Unable to parse «domain.ru/VMTA….,VMTA-domain.serv» (in line 1442) in cold vmta counters file: comma missing
Следствие: PMTA не запускается (FAILED)
Решение: Откройте /var/lib/pmta/cold-vmtas.state и допишите недостающее значение в «поломанную» строку, по аналогии с предыдущими.
Пример: domain.ru/VMTA….,VMTA-domain.serv должна выглядеть domain.ru/VMTA….,VMTA-domain.server.ru,1,0
Ошибка: Не верная маршрутизация писем при выборе vmta из smtp шаблонов
Пример: мы имеем 2 маршрутизируемых smtp, выбор vmta сопоставляется по отправителю from в smtp шаблонах:
mail-from /@sert.msk.ru/ virtual-mta=sert.msk.ru
mail-from /@sert-msk.ru/ virtual-mta=sert-msk.ru
В данном примере PMTA V5+ пересылает часть трафика sert-msk.ru через vmta sert.msk.ru
Решение: Экранируйте (.) в домене для явного отличного разделения доменов from
mail-from /@sert\.msk.ru/ virtual-mta=sert.msk.ru
mail-from /@sert-msk.ru/ virtual-mta=sert-msk.ru
Ошибка Startup error: Error binding socket to 0.0.0.0:2500, status = EADDRINUSE
причина: порт 2500 уже занят другой программой
Решение:
для удобного просмотра программ прослушиваемых порты установим netstat.
Для cenos
Для Centos $ yum install net-tools На Fedora: $ sudo dnf install net-tools На Debian, Ubuntu: $ sudo apt install net-tools
Проверим кто и какие порты прослушивает на нашем сервере
netstat -tulpn
вывод примерно такой
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 665/systemd-resolve tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1026/sshd tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 2068/python3 tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1072/mysqld tcp6 0 0 :::22 :::* LISTEN 1026/sshd tcp6 0 0 :::80 :::* LISTEN 1062/apache2 udp 0 0 127.0.0.53:53 0.0.0.0:* 665/systemd-resolve udp 0 0 192.168.225.22:68 0.0.0.0:* 647/systemd-network udp 0 0 192.168.225.53:68 0.0.0.0:* 647/systemd-network udp6 0 0 fe80::a00:27ff:feff:546 :::* 647/systemd-network udp6 0 0 fe80::a00:27ff:fe7e:546 :::*
Что бы проверить какая программа уже «висит» на нашем порту
netstat -tulpn | grep -w 2500
вывод
tcp 0 0 0.0.0.0:2500 0.0.0.0:* LISTEN 942/exim
в этом случае нужно либо сменить порт для pmta в smtp-listener 0/0:2500, либо освободить порт для pmta.
для того что бы «освободить» порт до перезагрузки, «убьем» текущий процесс (942) на нем
kill 942
После того как Вы открыли и освободили порт для pmta, и получаете все ту же ошибку даже после перезагрузки сети — перезагрузите сервер.