Errno :: EADDRNOTAVAIL: Невозможно назначить запрошенный адрес - connect (2) для порта «mail.domain.de» 587 - PullRequest
3 голосов
/ 19 сентября 2019

У меня есть приложение Rails, размещенное на сервере Digitalocean.Я использую email server от моего провайдера домена (checkdomain.de).Я настроил почтовый сервер со следующими конфигурациями:

config.action_mailer.smtp_settings = {
address: "host162.checkdomain.de",
port: 587,
domain: <my-domain>,
authentication: "plain",
enable_starttls_auto: true,
user_name: <my-username>,
password: <my-password>,
:openssl_verify_mode  => 'none'
}

Я использую sidekiq для фоновых заданий по отправке электронной почты.Иногда, когда я пытаюсь отправить emails, я получаю следующие ошибки:

Errno::EADDRNOTAVAIL: Cannot assign requested address - connect(2) for "host162.checkdomain.de" port 587

ИЛИ

SocketError: getaddrinfo: Temporary failure in name resolution

Ниже приведены настройки sidekiq в моем приложении:

sidekiq_config = { url: ENV['REDIS_URL'], password: ENV['REDIS_PASSWORD'] }
Sidekiq.configure_server do |config|
  config.redis = sidekiq_config
end

Sidekiq.configure_client do |config|
  config.redis = sidekiq_config
end

Когда я пытаюсь отправить электронную почту без использования sidekiq, иногда я получаю такие же ошибки.Я очень озадачен этой проблемой, потому что иногда я могу успешно отправлять электронные письма, а иногда эта ошибка возникает без изменений.Я связался с digitalocean (провайдер сервера), чтобы убедиться, что все порты smtp работают нормально и не заблокированы ими.Я видел, что это может быть проблемой из-за включения службы IPV6 вместо digitalocean, которая приводит к блокировке smtp.У меня также не включено firewalls для моей капли.

По этой причине я изменил конфигурации своей капли, чтобы предпочесть IPV4 над IPV6 для электронных писем.Я раскомментировал следующую строку в файле /etc/gai.conf и перезагрузил систему

#precedence ::ffff:0:0/96 100

Но, к сожалению, это также не помогло.Теперь я запутался в том, что может быть актуальной проблемой для этой проблемы.Единственное, что я могу попробовать, это полностью отключить IPV6 из моей капли вручную, так как digitalocean не позволяет делать это автоматически.Я не уверен, будет ли это действительно полезно или может оказать плохое влияние на сервер, потому что мы не можем выдержать простои сервера, или это может повлиять на домен или может сделать домен недоступным.Отправка emails является наиболее важной частью нашего приложения, и в настоящее время я могу справиться с ней, пытаясь отправить электронную почту в случае сбоя, но это, очевидно, не хорошее решение, есть вероятность того, что электронная почта не будет отправлена ​​даже после многократных повторных попыток.Пожалуйста, помогите мне: /

...