2016-09-14 25 views
0

我使用sidekiq來排隊我的Rails應用程序將發送的電子郵件。發送電子郵件可用於開發,但在生產中,sidekiq會收到網絡超時錯誤。這是怎麼回事?Sidekiq上的Net :: OpenTimeout(執行過期)異常

這是我在production.rb

config.action_mailer.delivery_method = :smtp 
config.action_mailer.smtp_settings = { 
    address:    'smtp.gmail.com', 
    port:     578, 
    domain:    ENV["PPRODUCTION_DOMAIN"], 
    user_name:   ENV["GMAIL_USERNAME"], 
    password:    ENV["GMAIL_PASSWORD"], 
    authentication:  :plain, 
    enable_starttls_auto: true 
} 

config.active_job.queue_adapter = :sidekiq 

我曾嘗試以下配置:

  1. 禁用IPv6和設置的IPv4作爲首選
  2. 使用非標準端口(2525),而不是587
  3. 嘗試通過telnet smtp.gmail.com 587連接。我收到以下錯誤:telnet: Unable to connect to remote host: Network is unreachable。可能值得注意的是我在代理之後運行 - 在這種情況下是否應該有額外的設置?
  4. sudo ufw allow 587

我是一個Ubuntu 14.04服務器上,並使用麒麟和nginx的設置我的應用程序。

我一直在這個好幾天。 :(任何幫助將不勝感激

更新:

我也試過如下:

  • 刪除sidekiq使用Rails的郵件發送電子郵件來代替。同樣的結果。
  • 通過telnet smtp.gmail.com 465連接。這一個工程,所以我試着設置在生產中465端口,但我仍然得到同樣的錯誤。
  • 刪除域,用我們的生產領域,並使用localhost:3000。什麼都沒發生。
  • +0

    1)嘗試刪除'域'選項,但我不認爲它有幫助。 2)一些提供商/主機阻塞所有SMTP流量。似乎這是你的情況,因爲你檢查了這個使用telnet命令。嘗試聯繫您的託管支持。 –

    +0

    你嘗試過'telnet 74.125.206.108 587'嗎?也許IPv6不會被禁用。代理可以指示問題。也許網絡中的防火牆禁止smtp訪問外部服務器。 – slowjack2k

    +0

    @ slowjack2k我收到以下錯誤:'telnet:無法連接到遠程主機:連接超時'。 'cat/proc/sys/net/ipv6/conf/all/disable_ipv6'也給了我一個'1'的輸出,所以我起訴了IPv6被禁用。 – meyagen

    回答

    0

    不知怎的,通過將端口更改爲456來代替它。

    我改變了端口,因爲某些原因,telnet smtp.gmail.com 587不起作用,但telnet smtp.gmail.com 465呢。 587可能已被網絡阻止。

    此外,我不確定以下更改是否也有幫助,但我也將身份驗證更改爲:login而不是:plain,並添加了ssl: true。希望這有助於任何遇到同樣問題的人。

    0

    由於每Rails guide's行動郵件基本知識,你給的端口號不正確。因爲它是587而不是578.

    config.action_mailer.delivery_method = :smtp 
    config.action_mailer.smtp_settings = { 
        address:    'smtp.gmail.com', 
        port:     587, 
        domain:    'example.com', 
        user_name:   '<username>', 
        password:    '<password>', 
        authentication:  'plain', 
        enable_starttls_auto: true } 
    

    我希望這有助於!

    +0

    啊,這是一個錯字。我解決了它,但它仍然不起作用。 – meyagen

    相關問題