Почта на VPS, когда порт 25 закрыт: отправка, приём и PTR/HELO без боли Печать

  • почта, dkim, smtp, 25 port
  • 0

НА НАШИХ VPS ОТКРЫТ 25 ПОРТ!

Большинство бюджетных провайдеров блокируют исходящий 25/tcp (SMTP) из-за спама. Рецепт: отправляем не по 25-му, а через внешний SMTP-релей на 587/465, а входящую почту принимаем на отдельном узле (где 25 открыт) и доставляем по VPN к вашему почтовому серверу дома/в офисе.

Отправка писем через внешний SMTP-релей (Postfix, Ubuntu/Debian)

Установка и базовые пакеты

sudo apt update && sudo apt -y install postfix mailutils libsasl2-modules ca-certificates

Минимальный main.cf под релей (правьте домен и релей-хост)

sudo postconf -e "myhostname = mail.example.com"
sudo postconf -e "mydomain = example.com"
sudo postconf -e "myorigin = \$mydomain"
sudo postconf -e "inet_interfaces = all"
sudo postconf -e "mydestination = localhost"
sudo postconf -e "smtp_tls_security_level = encrypt"
sudo postconf -e "smtp_tls_loglevel = 1"
sudo postconf -e "smtp_sasl_auth_enable = yes"
sudo postconf -e "smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd"
sudo postconf -e "smtp_sasl_security_options = noanonymous"
sudo postconf -e "smtp_sasl_tls_security_options = noanonymous"
# Внешний релей: замените на своего (пример — smtp.relay.example:587)
sudo postconf -e "relayhost = [smtp.relay.example]:587"

Учетные данные для релея

sudo bash -c 'cat >/etc/postfix/sasl_passwd <<EOF
[smtp.relay.example]:587 USERNAME:PASSWORD
EOF'
sudo postmap /etc/postfix/sasl_passwd
sudo chmod 600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
sudo systemctl restart postfix

Проверка исходящей отправки

echo "Test via relay" | mail -s "relay ok" [email protected]
sudo journalctl -u postfix -e --no-pager | tail -n 50

Так почта на vps уходит через авторизованный смарт-хост на 587/465 — блокировку 25го вы обходите легально и без костылей.

 

Как принимать письма, если входящий 25 тоже закрыт

Частый вопрос: «Как принимать письма, если входящий 25 закрыт?»
Ответ: арендуйте микро-VPS со свободным 25/tcp, поднимите на нём MX-узел (Postfix), а доставку внутрь — по VPN-туннелю (WireGuard) к домашнему/офисному серверу. Это удобно для почта на своем домене и даже для корпоративная почта на своем домене, если нет «белого» 25 на месте.

3.1. WireGuard между микро-VPS (MX) и вашим сервером

На микро-VPS (MX):

sudo apt -y install wireguard
umask 077
wg genkey | tee /etc/wireguard/server.key | wg pubkey | tee /etc/wireguard/server.pub
SV_PRIV=$(cat /etc/wireguard/server.key); SV_PUB=$(cat /etc/wireguard/server.pub)

sudo tee /etc/wireguard/wg0.conf >/dev/null <<WG
[Interface]
Address = 10.66.66.1/24
ListenPort = 51820
PrivateKey = ${SV_PRIV}
PostUp = ufw allow 25/tcp; ufw allow 51820/udp
PostDown = ufw delete allow 25/tcp; ufw delete allow 51820/udp
WG
sudo systemctl enable --now wg-quick@wg0

На домашнем/офисном сервере:

sudo apt -y install wireguard
wg genkey | tee ~/client.key | wg pubkey | tee ~/client.pub
CL_PRIV=$(cat ~/client.key); CL_PUB=$(cat ~/client.pub)

# Добавьте peer на MX:
sudo bash -c "cat >>/etc/wireguard/wg0.conf <<WG

[Peer]
PublicKey = ${CL_PUB}
AllowedIPs = 10.66.66.2/32
WG"
sudo systemctl restart wg-quick@wg0

# Конфиг клиента (дом/офис)
sudo tee /etc/wireguard/wg0.conf >/dev/null <<WG
[Interface]
Address = 10.66.66.2/24
PrivateKey = ${CL_PRIV}

[Peer]
PublicKey = ${SV_PUB}
AllowedIPs = 10.66.66.0/24
Endpoint = MX_PUBLIC_IP:51820
PersistentKeepalive = 25
WG
sudo systemctl enable --now wg-quick@wg0

Проверка пинга:

ping -c3 10.66.66.1 && ping -c3 10.66.66.2

3.2. Postfix на микро-VPS как входящий MX и «пересылка по туннелю»

На микро-VPS (MX):

sudo apt -y install postfix
sudo postconf -e "myhostname = mx1.example.com"
sudo postconf -e "mydomain = example.com"
sudo postconf -e "myorigin = \$mydomain"
sudo postconf -e "inet_interfaces = all"
sudo postconf -e "relay_domains = example.com"
sudo postconf -e "transport_maps = hash:/etc/postfix/transport"
sudo postconf -e "smtpd_tls_security_level = may"
sudo postconf -e "smtpd_helo_required = yes"
sudo postconf -e "smtpd_recipient_restrictions = permit_mynetworks,reject_unauth_destination"

# Доставку example.com шлём по WG на домашний сервер (порт 2525)
echo "example.com smtp:[10.66.66.2]:2525" | sudo tee /etc/postfix/transport
sudo postmap /etc/postfix/transport
sudo systemctl restart postfix
sudo ufw allow 25/tcp

На домашнем/офисном сервере слушаем только с туннеля:

sudo postconf -e "inet_interfaces = 10.66.66.2, localhost"
# Дополнительный smtpd на 2525 (правим master.cf)
sudo bash -c 'cat >>/etc/postfix/master.cf <<EOF
2525 inet n - y - - smtpd
-o smtpd_recipient_restrictions=permit_mynetworks,reject_unauth_destination
-o mynetworks=10.66.66.0/24,127.0.0.0/8
EOF'
sudo systemctl restart postfix

Теперь внешние MX-записи домена указывают на микро-VPS, он принимает на 25-й порт и надёжно пересылает письма по VPN внутрь вашей сети.

PTR и HELO: как не потерять доставку в Gmail

Симптом: письма уходят «в никуда», а логи молчат — классика, когда PTR-запись не совпадает с HELO. Что сделать:
1. На исходящем хосте (тот, кто шлёт во внешний мир) задайте честное имя:

sudo postconf -e "smtp_helo_name = mail.example.com"
sudo postconf -e "myhostname = mail.example.com"
sudo systemctl reload postfix

2. Попросите хостера поставить rDNS (PTR) для вашего исходящего IP ровно на mail.example.com.
3. Если у вас /64 IPv6, выдавайте каждому домену уникальный IPv6 + уникальный PTR, и отправляйте с соответствующего адреса (в Postfix это делают через отдельные транспорт-профили и smtp_bind_address6).
4. Не забудьте SPF/DKIM/DMARC: это резко повышает доставляемость для корпоративная почта на своем домене.

Мини-чек-лист для «почта на своем домене»


- Исходящая: только через авторизованный релей (587/465), никакого 25/tcp наружу.
- Входящая: микро-VPS как MX на 25/tcp → доставка по VPN в вашу сеть.
- PTR/HELO: smtp_helo_name совпадает с PTR исходящего IP.
- Записи: MX, A/AAAA для mail., SPF, DKIM, DMARC.
- Логи: journalctl -u postfix -e и postqueue -p — ваши друзья.

 Быстрые тесты

# Отправка через внешний релей
echo "hello" | mail -s "relay test" [email protected]

# Проверка входящей цепочки: MX -> WG -> внутренний 2525
nc -vz 10.66.66.2 2525
telnet mx1.example.com 25


Коротко и по делу: инструмент проверки почты HSTQ — https://hstq.net/dns-tools.html
Сервис проверяет MX, SPF, DKIM, DMARC, PTR/HELO и TLS и дает чёткий вердикт по доставляемости.

И конечно мы настроим бесплатно при аренде сервера у нас: релей, MX-микро-VPS, VPN-туннель и PTR/HELO до «зелёного» света в Gmail.


Помог ли вам данный ответ?

« Назад

Powered by WHMCompleteSolution


База знаний