
Postfix отказывается отправлять почту как relayhost. Он постоянно говорит:
подключиться к mydomain.com[xxx.xx.xxx.xxx]:25: Подключение отклонено
Однако порт 25 открыт:
sudo netstat -ntlp
tcp 0 0 127.0.0.1:33060 0.0.0.0:* LISTEN 39162/mysqld
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 57910/proftpd: (acc
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 614/systemd-resolve
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 762/sshd: /usr/sbin
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 70265/master
tcp6 0 0 :::3306 :::* LISTEN 39162/mysqld
tcp6 0 0 :::80 :::* LISTEN 61217/apache2
tcp6 0 0 :::22 :::* LISTEN 762/sshd: /usr/sbin
tcp6 0 0 ::1:25 :::* LISTEN 70265/master
tcp6 0 0 :::443 :::* LISTEN 61217/apache2
Я понятия не имею, откуда взялась эта проблема.
Может ли кто-нибудь мне помочь?
решение1
Ваш relayhost требует аутентификации. То есть вам нужно доказать, что вам разрешено отправлять почту через этот relayhost. Обычно оператор relayhost предоставляет вам учетные данные (логин и пароль), которые вы настраиваете в своем Postfix для использования при общении с relayhost.
Конфигурация аутентификации клиента SMTP (которая используется, когда ваш Postfix взаимодействует с ретранслятором, который является сервером SMTP) описана вPostfix SASL Руководство. Вот как:
В постфиксе main.cf
:
relayhost = [relay.host.name]
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
Первая строка задает хост-ретранслятор, вторая включает аутентификацию, а третья строка указывает файл, в котором хранятся учетные данные для каждого хоста-ретранслятора — то есть /etc/postfix/sasl_passwd
. В этом файле вы помещаете:
[relay.host.name] username:password
Всегда запускать postmap /etc/postfix/sasl_passwd
после внесения изменений в этот файл и postfix reload
после редактирования main.cf
. Также ограничьте доступ к этому файлу, так как он содержит конфиденциальную информацию:
chmod 0600 /etc/postfix/sasl_passwd
chown root:root /etc/postfix/sasl_passwd
Обратите внимание, что если ваш relayhost ожидает отправки данных на другом порту (например, когда мне нужно было настроить relayhost, я сделал это на smtp submission
порту tcp/587
), вам необходимо указать это и в relayhost = [relay.host.name]:submission
файле , main.cf
и в sasl_passwd
файле .
Клиент Postfix SMTP не поддерживает "прямой SMTPS" (они называют это "wrappermode"), где сервер SMTP-over-SSL ожидает SSL-рукопожатия непосредственно на порту tcp/465
(как это делает Google). Он поддерживает только TLS через порт 25 или 587, запускаемый командой STARTTLS.
решение2
Connection refused
означает, что на данном порту на данном интерфейсе ничего не прослушивается. И ваш вывод netstat показывает, что порт 25 прослушивается только на 127.0.0.1
интерфейсе loopback.
Если вы попытаетесь получить к нему доступ с другого компьютера, он будет недоступен.
Чтобы Postfix прослушивал все интерфейсы, вам нужно изменитьinet_interfaces
:
inet_interfaces = all
Если у вас несколько интерфейсов и вы не хотите, чтобы он прослушивал их все, вы также можете указать список IP-адресов, которые он должен прослушивать, разделенный запятыми.