Не отправляется почта с сервера
Письма с сервера не уходят вообще или все падают в спам — знакомая боль каждого, кто поднимал свой SMTP. В девяти случаях из десяти причина не в почтовом сервере, а в двух вещах: провайдер закрыл 25-й порт, либо у вашего IP нет правильных DNS-записей. Ниже — решение проблемы по шагам, от быстрой диагностики до полной настройки доставляемости, с командами, которые можно копировать сразу.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Быстрая диагностика: куда уходит письмо
Прежде чем чинить, поймите, на каком этапе письмо теряется. Отправьте тестовое письмо через командную строку и сразу смотрите лог.
echo "test body" | mail -s "test subject" you@gmail.com
tail -f /var/log/mail.log # Debian/Ubuntu
tail -f /var/log/maillog # CentOS/RHEL
В логе вы увидите одну из трёх картин. Первая: status=sent — письмо ушло с сервера, проблема на стороне получателя (спам-фильтр). Вторая: Connection timed out при попытке достучаться до чужого MX — у вас закрыт исходящий 25-й порт. Третья: Relay access denied или authentication failed — проблема в конфиге самого Postfix.
Сразу проверьте, слушает ли сервер и открыт ли порт наружу:
ss -tlnp | grep :25
telnet gmail-smtp-in.l.google.com 25
Если telnet висит без ответа — почти наверняка провайдер блокирует 25-й порт. Это самая частая причина, и разбираем её первой.
Прежде чем двигаться дальше, важно разделить два принципиально разных случая, потому что лечатся они противоположными способами. Если письмо в логе помечено как отправленное, но не пришло, — это проблема репутации и доставляемости, и чинить её нужно на уровне DNS-записей и чистоты IP. Если же письмо вообще не уходит с сервера, — это проблема сети или конфигурации, и DNS тут ни при чём. Люди часто тратят дни, настраивая SPF и DKIM, тогда как у них банально закрыт порт, — или наоборот, бьются с портом, когда письма давно уходят и просто оседают в спаме. Первые строки лога избавляют от этой путаницы, поэтому не пропускайте шаг с диагностикой и не переходите к настройке вслепую.
Заблокирован порт 25 — главная причина
Большинство хостеров и облачных провайдеров закрывают исходящий порт 25 по умолчанию, чтобы с их сетей не рассылали спам. Ваш Postfix при этом работает идеально, но физически не может отдать письмо чужому серверу.
Проверка предельно простая:
telnet aspmx.l.google.com 25
# либо
nc -zv aspmx.l.google.com 25
Ответ Connected — порт открыт. Зависание или Connection refused — закрыт. Решения три, по возрастанию надёжности:
- Попросить провайдера открыть порт. Многие открывают 25-й по тикету после верификации аккаунта. Это идеальный путь для собственного почтового сервера.
- Отправлять через relay-хост (smart host) — внешний SMTP-сервис по порту 587 с авторизацией. Postfix отдаёт письма ему, а он доставляет дальше.
- Взять сервер, где 25-й порт открыт изначально. У MAATRIX исходящий SMTP не блокируется, а на выделенный IP можно поставить корректный PTR — без этого чистая доставляемость невозможна.
Если выбрали relay, минимальный конфиг Postfix выглядит так:
# /etc/postfix/main.cf
relayhost = [smtp.provider.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = encrypt
После правки создайте файл с паролем и перезапустите сервис — команды в разделе про Postfix ниже.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать сервер с чистым IPPTR-запись: без неё письма летят в спам
Даже когда порт открыт и письмо уходит, крупные почтовики (Gmail, Outlook, Mail.ru) отвергают его, если у вашего IP нет обратной DNS-записи — PTR. Это запись вида «IP → имя хоста», зеркальная к обычной A-записи. Её проверяют в первую очередь.
Проверьте свой PTR:
dig -x ВАШ_IP +short
# должно вернуть mail.вашдомен.ru, а не что-то вида
# 123-45-67-89.pool.provider.net
Ключевой момент: PTR настраивает не вы в своей DNS-зоне, а владелец IP-адреса — то есть хостинг-провайдер. Вы указываете A-запись mail.вашдомен.ru → IP, а провайдер прописывает обратную IP → mail.вашдомен.ru. Обе должны совпадать (это называется FCrDNS — forward-confirmed reverse DNS).
Это ещё одна причина брать почтовый сервер там, где можно управлять PTR. На дешёвом shared-хостинге вы к этой записи не подступитесь, и решение проблемы доставляемости застрянет намертво.
Стоит понять, почему почтовики придают PTR такое значение. Обратная запись — это самый дешёвый для получателя способ отсеять массовый спам: легитимные почтовые серверы всегда имеют осмысленное имя, зеркальное к адресу, а армии заражённых машин и наспех поднятых спам-узлов — нет. Поэтому письмо с IP, у которого PTR указывает на что-то вроде безликого пула провайдера, вызывает подозрение ещё до того, как получатель заглянет в его содержимое. Настроив совпадающие прямую и обратную записи, вы проходите этот первый и самый грубый фильтр, и дальше уже играют роль SPF, DKIM и репутация. Без PTR же остальные усилия во многом бесполезны — письмо отклонят раньше, чем проверят подпись.
SPF, DKIM и DMARC — три записи против спама
Три текстовые DNS-записи убеждают получателя, что письмо действительно от вас, а не подделка. Без них современные почтовики режут доставку жёстко.
SPF перечисляет, каким серверам разрешено слать почту от вашего домена. TXT-запись в корне домена:
вашдомен.ru. IN TXT "v=spf1 mx a ip4:ВАШ_IP -all"
DKIM подписывает каждое письмо криптоключом. Ставим OpenDKIM:
apt install opendkim opendkim-tools
opendkim-genkey -s mail -d вашдомен.ru
# публичный ключ из mail.txt публикуем как TXT-запись mail._domainkey
DMARC говорит получателю, что делать с письмами, не прошедшими проверку:
_dmarc.вашдомен.ru. IN TXT "v=DMARC1; p=quarantine; rua=mailto:postmaster@вашдомен.ru"
Начните с p=none для мониторинга, а после того как отчёты покажут, что всё легитимное проходит SPF и DKIM, ужесточите до quarantine или reject.
Эти три записи работают в связке, и понимание их ролей помогает не запутаться. SPF отвечает на вопрос «имел ли право этот сервер отправлять письмо от домена», DKIM — «не подменили ли письмо по дороге и точно ли оно подписано владельцем домена», а DMARC связывает их и говорит получателю, как поступать с нарушителями и куда слать отчёты. Ошибка новичка — настроить одну запись и ждать чуда: по отдельности они дают лишь частичный эффект, а крупные почтовики смотрят на все сразу. Ещё одна тонкая ловушка — SPF со слишком мягким окончанием вместо строгого -all: такая запись формально есть, но фактически никого не отсекает. Поэтому после настройки обязательно проверьте записи внешним инструментом, а не только глазами — синтаксическая опечатка в одной из них молча роняет всю доставляемость.
Проверяем и чиним конфигурацию Postfix
Когда сеть и DNS в порядке, а письма всё равно не уходят, дело в самом Postfix. Проверьте базовые параметры:
postconf -n | grep -E 'myhostname|mydomain|inet_interfaces|mynetworks'
Типичные ошибки. myhostname должен быть FQDN и совпадать с PTR. inet_interfaces = all — иначе сервер слушает только localhost. Для relay не забудьте применить пароль:
postmap /etc/postfix/sasl_passwd
chmod 600 /etc/postfix/sasl_passwd*
systemctl restart postfix
Смотрите очередь — застрявшие письма расскажут причину:
mailq # что висит в очереди
postqueue -p | tail -5
postcat -q ID_ПИСЬМА # причина отбоя по конкретному письму
Если в очереди deferred с ошибкой Connection timed out — вернитесь к порту 25. Если Host not found — проблема в DNS-резолвинге сервера, проверьте /etc/resolv.conf.
Проверка репутации и тестовая отправка
Настроили всё — проверьте результат объективно, а не «вроде дошло». Есть бесплатные сервисы, которые показывают оценку по всем пунктам сразу.
Отправьте тестовое письмо на адрес, который выдаёт mail-tester, и получите балл из 10 с разбором: прошёл ли SPF, валиден ли DKIM, есть ли PTR, не в чёрных ли списках IP. Цельтесь в 10/10 — всё, что ниже, означает конкретную недоделку из разделов выше.
Отдельно проверьте, не попал ли IP в блэклисты (частая беда «грязных» адресов, которыми раньше спамили):
# проверьте IP на mxtoolbox.com/blacklists.aspx
# или через dig по конкретному DNSBL:
dig +short ОБРАТНЫЙ.IP.zen.spamhaus.org
Пустой ответ — чисто. Если IP в списках, а вы им не спамили, значит адрес достался «с историей». На чистом выделенном IP такой проблемы нет — это ещё один аргумент в пользу сервера с персональным адресом.
Чек-лист и когда пора менять сервер
Соберём всё в короткий порядок действий. Идите строго сверху вниз — каждый пункт зависит от предыдущего:
- Порт 25 открыт наружу (
telnet ... 25). - PTR-запись настроена провайдером и совпадает с
myhostname. - SPF, DKIM, DMARC опубликованы и валидны.
- Postfix слушает
all, очередь безdeferred-ошибок. - IP не в чёрных списках, mail-tester даёт 9–10/10.
Если после всех проверок упирается в закрытый 25-й порт, невозможность поставить PTR или «грязный» IP из блэклистов — проблема не в ваших руках, а в самом сервере. Дешёвый хостинг, спроектированный против самостоятельной рассылки, вы не переубедите. Разумнее взять сервер, изначально пригодный для почты: открытый SMTP, управляемый PTR и чистый выделенный IP решают три главные причины разом.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать сервер с чистым IPОбсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Частые вопросы
Почему письма уходят, но падают в спам?
Скорее всего нет PTR-записи или не настроены SPF/DKIM/DMARC. Прогоните домен через mail-tester — он покажет, какой именно проверки не хватает.
Как понять, что провайдер закрыл порт 25?
Выполните telnet aspmx.l.google.com 25. Если соединение зависает или отклоняется, исходящий SMTP заблокирован — открывайте порт через тикет или используйте relay по 587.
Можно ли обойтись без своего PTR?
Для стабильной доставки — практически нет. Крупные почтовики отвергают письма с IP без обратной записи. PTR ставит владелец IP, поэтому нужен сервер, где вы этим управляете.
Как оплатить сервер под почту из России?
MAATRIX принимает карты РФ, СБП, криптовалюту и токен MAAT — иностранная карта не нужна, а на выделенный IP сразу ставится корректный PTR.
Нужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.