У меня есть свой сервер Postfix. Я могу без проблем отправлять электронную почту через него, используя Thunderbird. Для smtp у меня есть:
port - 587
Normal Password
STARTTLS
Однако я не могу отправить электронное письмо через тот же сервер через собственное приложение. Настройки такие:
server: "mail.my_server.com",
username: "aaa@my_domain123.com",
password: "fdsafdsafdsfds"",
port: 587,
allowed_tls_versions: [:"tlsv1", :"tlsv1.1", :"tlsv1.2"],
retries: 5,
auth: :if_available
// tls: :always,
// ssl: true,
// no_mx_lookups: false, # can be `true`
// auth: :always,
У меня исключение:
450 4.7.1 Client host rejected: cannot find your reverse hostname: 11.22.33.44
Где 11.22.33.44 - мой внешний IP-адрес моего домашнего компьютера
Как я могу отправлять электронную почту с домашний компьютер через Thunderbird, но не мое собственное приложение, работающее на том же домашнем компьютере, с тем же сервером и, предположительно, с настройками?
Держу пари, это связано с тем, что ваше приложение отправляет что-то вроде localhost
или localhost.localdomain
в EHLO, или вообще не отправлять EHLO. Скорее всего, Thunderbird отправляет более подходящее значение.
Не могли бы вы опубликовать вывод /var/log/maillog
для обоих, когда вы пытаетесь отправить почту из вашего приложения, а затем, когда вы отправляете почту из Thunderbird?
Быстрое решение может заключаться в удалении reject_unknown_helo_hostname директива от smtpd_helo_restrictions конфигурация. Более безопасным и, вероятно, таким же быстрым решением было бы настроить mynetworks а затем используйте allow_mynetworks директива smtpd_helo_restrictions конфигурация.