Задать вопрос
svetozar
@svetozar
dudin.tv

Как подступиться к ошибке Errno::ECONNREFUSED (Connection refused — connect(2) for «example.com» port 25)?

Каждый раз когда пытаюсь отправить письмо на production сервере я получаю эту ошибку вместо отправленного письма:
Errno::ECONNREFUSED (Connection refused - connect(2) for "example.com" port 25)


production.rb:
Rails.application.configure do
  ...
  config.action_mailer.default_url_options = { host: "localhost" }
  config.action_mailer.default_options = { from: 'no-reply@example.com' }
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true

  config.action_mailer.smtp_settings = {
    address: "example.com",
  }
end


Для отправки почты установил Postfix.

Конфиг /etc/postfix/main.cf :
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
append_dot_mydomain = no
readme_directory = no
compatibility_level = 2

# TLS parameters
smtp_tls_security_level = may
smtp_tls_note_starttls_offer = yes
smtpd_tls_security_level = may
smtpd_tls_cert_file=/etc/letsencrypt/live/example.com/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/example.com/privkey.pem

smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = dsde949-12345.fornex.org
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $myhostname, example.com, dsde949-12345.fornex.org, localhost.fornex.org, localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only
inet_protocols = all


Почтовик работает:
$ sudo systemctl status postfix.service
● postfix.service - Postfix Mail Transport Agent
Loaded: loaded (/lib/systemd/system/postfix.service; enabled; vendor preset: enabled)
Active: active (exited) since Thu 2021-03-18 18:45:36 CET; 29min ago
Process: 1110 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 1110 (code=exited, status=0/SUCCESS)

deploy@xxx:~/rails/current$ telnet example.com 25
Trying 123.123.155.190...
telnet: Unable to connect to remote host: Connection refused

deploy@xxx:~/rails/current$ telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 xxx.fornex.org ESMTP Postfix (Ubuntu)
...


Видно что "telnet example.com 25" не работает, а "telnet localhost 25" вполне.

Если поменять на "localhost"
config.action_mailer.smtp_settings = {
    address: "localhost",
}

то получаю другую ошибку:
OpenSSL::SSL::SSLError (hostname "localhost" does not match the server certificate):


Вообще много чего не понимаю в настройке серверов. Занимаюсь этим первичным деплоингом уже целую неделю. Еще, я впервые деплю вебсайт с SSL сертификатом (Let's Encrypt через Certbot). Может и в этом дело?

Заранее благодарю за любую наводку!
  • Вопрос задан
  • 787 просмотров
Подписаться 2 Средний 4 комментария
Пригласить эксперта
Ответы на вопрос 2
CityCat4
@CityCat4
//COPY01 EXEC PGM=IEBGENER
Я не понял к чему тут подступаться? Что в гуглопереводчике забанили? Не можно подключиться к порту 25 на example.com по каким-то причинам, например потому что там никто не слушает (или забанили в файрволле)
Ответ написан
svetozar
@svetozar Автор вопроса
dudin.tv
Ошибку получилось ликвидировать добавив:

config.action_mailer.smtp_settings = {
    address: "localhost",
    openssl_verify_mode: OpenSSL::SSL::VERIFY_NONE
  }


Нет ошибки, да, но письма тоже не приходят.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы