Рейтинг:0

Как заставить postfix использовать smtp relay

флаг fr

Когда я выполняю, постфикс следующей строки использует мой сервер ретрансляции sendgrid

echo "Тема: тест sendmail" | sendmail -v [email protected]

Но когда я выполняю функцию sendmail через PHP-скрипт, она не отправляет ее на сервер ретрансляции. Похоже, он хочет распространять его локально

Любые мысли о том, как заставить postfix использовать опцию smtp relay

  • Обновлять

Похоже, постфикс истекает по тайм-ауту на STARTTLS, я добавил журнал ниже. Может ли это быть связано с моим сертификатом LetsEncrypt?

postfix/smtpd[29268]: > localhost[::1]: 250-www.example.com
postfix/smtpd[29268]: > localhost[::1]: 250-КОНВЕЙЕРНАЯ ПОДГОТОВКА
postfix/smtpd[29268]: > localhost[::1]: 250-SIZE 10240000
postfix/smtpd[29268]: > localhost[::1]: 250-VRFY
postfix/smtpd[29268]: > localhost[::1]: 250-ETRN
postfix/smtpd[29268]: > localhost[::1]: 250-STARTTLS
postfix/cleanup[29279]: 8E2B520B98: message-id=<[email protected]>
postfix/smtpd[29268]: smtp_get: EOF

постконф -н

alias_database = хэш:/и т.д./псевдонимы
alias_maps = хеш:/и т.д./псевдонимы
append_dot_mydomain = нет
биф = нет
config_directory = /etc/postfix
header_size_limit = 4096000
inet_interfaces = все
mailbox_command = procmail -a "$EXTENSION"
почтовый ящик_размер_лимит = 0
мой пункт назначения = $имя_хоста, локальный_хост.$мой_домен,_локальный_хост
мой домен = example.com
myhostname = www.example.com
мои сети = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
readme_directory = нет
получатель_разделитель = +
ретранслятор = smtp.sendgrid.net:587
smtp_sasl_auth_enable = да
smtp_sasl_password_maps = статический: apikey: BLBAABLAABLAA
smtp_sasl_security_options = неанонимный
smtp_sasl_tls_security_options = неанонимный
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_tls_security_level = зашифровать
smtp_tls_session_cache_database = btree:${каталог_данных}/smtp_scache
smtpd_banner = $ имя хоста E
SMTP $mail_name (Debian/GNU)
smtpd_relay_restrictions = Permit_MyNetworks Permit_Sasl_Authenticated defer_unauth_destination
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:${каталог_данных}/smtpd_scache
smtpd_use_tls = да

Кажется, он отлично работает, когда я пишу скрипт на Python, но с PHP swiftmailer он, кажется, терпит неудачу и возвращает EOF

=============== ОБНОВЛЕНИЕ

Реле вроде работает, но теперь мы получаем эту ошибку

Swift_IoException [0]: время ожидания подключения к локальному хосту: 25 истекло

Я могу отправлять письма с помощью sendmail, но когда SwiftMailer использует sendmail, он получает ранее указанную ошибку

Richard Olthuis avatar
флаг fr
Я еще немного отладил и добавил журнал, где, как мне кажется, время ожидания истекло.
djdomi avatar
флаг za
я думаю, вы ищете `relayhost = gateway.mydomain.tld`
Paul avatar
флаг cn
Пожалуйста, опубликуйте вывод `postconf -n`.
Richard Olthuis avatar
флаг fr
Я обновил пост с postconf -n
Paul avatar
флаг cn
Действительно, похоже, у вас есть какая-то проблема вне `postfix`. Я думаю о `smtp` в `postfix` как об отправке на другой сервер, а `smtpd` как о получении от того, что вы настроили для получения. Итак, запись журнала, которую вы разместили для `postfix/smtpd`, сообщает вам, что что-то хочет получить `postfix`, но есть проблема. Я ничего не знаю о SwiftMailer, но вы должны просмотреть конфигурацию этого инструмента, поскольку он, похоже, подключается к порту `localhost` `smtp`, и что-то там идет не так. Кстати, это не значит, что вам больше не нужно что-то добавлять в конфигурацию `postfix`.
Paul avatar
флаг cn
Небольшое замечание: я всегда стараюсь отправлять тестовые сообщения на внешние и внутренние адреса, особенно те, у которых есть псевдонимы для внешних адресов, например `root`. Кроме того, SE изменил способ работы этих комментариев, и я, кажется, больше не получаю уведомления о первом комментарии после моего комментария, если я не отмечен в комментарии.
Richard Olthuis avatar
флаг fr
Спасибо, @paul, ты заставил меня посмотреть на отправленные сообщения! И мне удалось найти ответ
Рейтинг:1
флаг fr

Мне удалось исправить проблему. Выяснилось, что почта, которую отправлял клиент, содержала неавторизованное изображение. Я удалил встроенное изображение, и теперь все работает нормально!

Мне кажется странным, что в подробном журнале постфикса ничего не отображается.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.