Я столкнулся с рядом проблем, заставляя sendmail работать. Ни одно из решений, которые я пробовал, не сработало.
Во-первых: sendmail зависал 60 секунд, а затем не отправлял письмо.
Чтобы решить эту проблему, я использовал предложения из Интернета, чтобы установить /etc/hostname
на полное доменное имя (FQDN), а затем введите его /etc/hosts
также. это сделал избавьтесь от зависания, но я до сих пор не получаю писем, отправленных с sendmail.
Второе: Установлен постфикс
Это не устранило проблему. Отправка электронного письма через sendmail
или mail
в командной строке оба не работают. Пример:
echo "a message" | sendmail someemail@gmail.com
echo "a message" | mail someemail@gmail.com
Обе команды возвращаются мгновенно без ошибок, но на учетную запись Gmail никогда не поступает электронное письмо.
Я также убедился, что порт 25 в маршрутизаторе открыт (хотя это не должно быть проблемой, поскольку Thunderbird может отправлять электронные письма за маршрутизатором).
Мне нужно, чтобы это работало для PHP, но я не могу понять, где на многих этапах от программы до удаленного почтового сервера происходит сбой. Как мне понять это?
сервер должен иметь возможность подключаться к другим серверам smtp
$ nc -v mta5.am0.yahoodns.net 25
Connection to mta5.am0.yahoodns.net 25 port [tcp/smtp] succeeded!
220 mta1193.mail.ne1.yahoo.com ESMTP YSmtpProxy service ready
^C
Вот как это может выглядеть, когда порт 25 закрыт для исходящего трафика:
$ nc -v mta5.am0.yahoodns.net 25
nc: connect to mta5.am0.yahoodns.net port 25 (tcp) failed: Connection timed out
Посмотрите, блокируются ли запросы в ваших брандмауэрах.
Вы пробовали другие порты, кроме 25? Скорее всего, у вас не будет этой проблемы, если вы не пользуетесь услугами домашнего провайдера. Кроме того, когда вы говорите, что thunderbird отправляет почту, вы аутентифицируетесь на рассматриваемом сервере? В противном случае вы, вероятно, подключаетесь к другому серверу через порт ssl.