Google Channel [Outbound] - Timeout Error

Info:

  • Used Zammad version: 6.4.1-1741933941.0923b150.noble
  • Used Zammad installation type: package (apt)
  • Operating system: Ubuntu 24.04.2 LTS
  • Browser + version: N/A (Server-side issue)
  • Error: - Channel: Google::Account out #<Net::OpenTimeout: execution expired>

Expected behavior:

  • Google email channels should successfully connect to Gmail’s SMTP servers
  • Emails should be sent through configured Google workspace accounts
  • SMTP connections should establish within the timeout period

Actual behavior:

  • Multiple Google account channels experiencing Net::OpenTimeout errors
  • SMTP connections timing out during initial connection attempt
  • Error occurs in lib/core_ext/net/smtp.rb during do_start
  • DNS resolution works (resolves smtp.gmail.com successfully)
  • Cannot establish TCP connection to SMTP ports (465/587)
  • Issue persists across channel resets and server restarts
  • Affects multiple Google accounts simultaneously
  • IMAP (incoming) connections work correctly
  • System was working correctly for months prior to this issue
  • Similar issues occurred before but self-resolved; current issue has persisted for 4 days

Steps to reproduce the behavior:

  1. Configure Google workspace account in Zammad
  2. Attempt to send outgoing email
  3. Channel fails with Net::OpenTimeout
  4. Reset channel status - issue persists
  5. Reauthenticate - issue persists
  6. Delete Google Channel and re-add - issue persists
  7. Verified:
    • UFW allows outbound connections
    • DNS resolution works
    • Cannot establish raw TCP connection to smtp.gmail.com:465/587 (This one is concerning. Is it an issue with Google?)
    • No stuck jobs in delayed job queue
    • Issue affects multiple Google accounts simultaneously
    • System was previously stable and functional
    • Issue began approximately 4 days ago with no apparent configuration changes

Additional Information

Screenshots

Logs

[2025-03-18T22:32:57.378034#185720-183900]  INFO -- : Completed 200 OK in 51ms (Views: 0.3ms | ActiveRecord: 22.3ms | Allocations: 10866)
I, [2025-03-18T22:32:57.801667#185726-183620]  INFO -- : 2025-03-18T22:32:57+0000: [Worker(host:support pid:185726)] Job TaskbarUpdateRelatedTasksJob [d61a116e-2eee-4a86-a4b8-1036f7235059] from DelayedJob(default) with arguments: [[]] (id=826577) (queue=default) RUNNING
I, [2025-03-18T22:32:57.831984#185726-183620]  INFO -- : 2025-03-18T22:32:57+0000: [Worker(host:support pid:185726)] Job TaskbarUpdateRelatedTasksJob [d61a116e-2eee-4a86-a4b8-1036f7235059] from DelayedJob(default) with arguments: [[]] (id=826577) (queue=default) COMPLETED after 0.0299
I, [2025-03-18T22:32:57.835547#185726-183620]  INFO -- : 2025-03-18T22:32:57+0000: [Worker(host:support pid:185726)] Job TicketOnlineNotificationSeenJob [2e5a5a66-8c38-438c-960a-a65bdadea35d] from DelayedJob(default) with arguments: [83493, 14207] (id=826578) (queue=default) RUNNING
I, [2025-03-18T22:32:57.912762#185726-183620]  INFO -- : 2025-03-18T22:32:57+0000: [Worker(host:support pid:185726)] Job TicketOnlineNotificationSeenJob [2e5a5a66-8c38-438c-960a-a65bdadea35d] from DelayedJob(default) with arguments: [83493, 14207] (id=826578) (queue=default) COMPLETED after 0.0770
I, [2025-03-18T22:32:57.916398#185726-183620]  INFO -- : 2025-03-18T22:32:57+0000: [Worker(host:support pid:185726)] Job TicketArticleCommunicateEmailJob [60540ce9-ff38-4e16-aea3-28baa336b027] from DelayedJob(default) with arguments: [195256] (id=826579) (queue=default) RUNNING
I, [2025-03-18T22:32:58.073387#185726-183600]  INFO -- : ProcessScheduledJobs running...
I, [2025-03-18T22:32:58.103623#185726-185680]  INFO -- : execute Ticket.process_escalation (try_count 0)...
I, [2025-03-18T22:32:58.412984#185720-184020]  INFO -- : Started GET "/api/v1/recent_view/?full=true&_=1742336963029" for 159.118.195.101 at 2025-03-18 22:32:58 +0000
I, [2025-03-18T22:32:58.421508#185720-184020]  INFO -- : Processing by RecentViewController#index as JSON
I, [2025-03-18T22:32:58.421637#185720-184020]  INFO -- :   Parameters: {"full"=>"true", "_"=>"1742336963029"}
I, [2025-03-18T22:32:58.611607#185720-184020]  INFO -- : Completed 200 OK in 190ms (Views: 6.2ms | ActiveRecord: 39.0ms | Allocations: 36822)
I, [2025-03-18T22:32:58.634638#185726-185680]  INFO -- : ended Ticket.process_escalation took: 0.555702982 seconds.
I, [2025-03-18T22:32:59.077707#185726-183600]  INFO -- : Running job thread for 'Check 'Channel' streams.' (Channel.stream) status is: sleep
I, [2025-03-18T22:32:59.077969#185726-183600]  INFO -- : Running job thread for 'Check channels.' (Channel.fetch) status is: sleep
I, [2025-03-18T22:32:59.078040#185726-183600]  INFO -- : Running job thread for 'Generate 'Session' data.' (Sessions.jobs) status is: sleep
I, [2025-03-18T22:32:59.078447#185726-183600]  INFO -- : Running job thread for 'Execute planned jobs.' (Job.run) status is: sleep
I, [2025-03-18T22:32:59.153712#185720-184220]  INFO -- : Started PUT "/api/v1/taskbar/11423" for 159.118.195.101 at 2025-03-18 22:32:59 +0000
I, [2025-03-18T22:32:59.162045#185720-184220]  INFO -- : Processing by TaskbarController#update as JSON
I, [2025-03-18T22:32:59.162209#185720-184220]  INFO -- :   Parameters: {"key"=>"Ticket-83493", "callback"=>"TicketZoom", "state"=>{"ticket"=>{}, "article"=>{"form_id"=>"89882a1f-7ffe-4d65-8328-7a39dadf4b01"}}, "params"=>{"ticket_id"=>"83493", "shown"=>true}, "prio"=>3, "notify"=>false, "active"=>true, "attachments"=>[], "updated_at"=>"2025-03-18T22:32:56.627Z", "id"=>"11423"}
I, [2025-03-18T22:32:59.258495#185720-184220]  INFO -- : Completed 200 OK in 96ms (Views: 0.4ms | ActiveRecord: 37.1ms | Allocations: 13179)
I, [2025-03-18T22:33:02.738619#185726-183640]  INFO -- :  - no message
I, [2025-03-18T22:33:02.912635#185726-183640]  INFO -- : fetching imap (imap.gmail.com/orders@impactsolutionpro.com port=993,ssl=true,starttls=false,folder=INBOX,keep_on_server=true,auth_type=XOAUTH2)
I, [2025-03-18T22:33:09.080043#185726-183600]  INFO -- : ProcessScheduledJobs running...
I, [2025-03-18T22:33:09.085114#185726-183600]  INFO -- : Running job thread for 'Check 'Channel' streams.' (Channel.stream) status is: sleep
I, [2025-03-18T22:33:09.085456#185726-183600]  INFO -- : Running job thread for 'Check channels.' (Channel.fetch) status is: sleep
I, [2025-03-18T22:33:09.085522#185726-183600]  INFO -- : Running job thread for 'Process ticket escalations.' (Ticket.process_escalation) status is: sleep
I, [2025-03-18T22:33:09.085611#185726-183600]  INFO -- : Running job thread for 'Generate 'Session' data.' (Sessions.jobs) status is: sleep
I, [2025-03-18T22:33:09.085909#185726-183600]  INFO -- : Running job thread for 'Execute planned jobs.' (Job.run) status is: sleep
I, [2025-03-18T22:33:19.094816#185726-183600]  INFO -- : ProcessScheduledJobs running...
I, [2025-03-18T22:33:19.098619#185726-183600]  INFO -- : Running job thread for 'Check 'Channel' streams.' (Channel.stream) status is: sleep
I, [2025-03-18T22:33:19.098879#185726-183600]  INFO -- : Running job thread for 'Check channels.' (Channel.fetch) status is: sleep
I, [2025-03-18T22:33:19.098914#185726-183600]  INFO -- : Running job thread for 'Process ticket escalations.' (Ticket.process_escalation) status is: sleep
I, [2025-03-18T22:33:19.098964#185726-183600]  INFO -- : Running job thread for 'Generate 'Session' data.' (Sessions.jobs) status is: sleep
I, [2025-03-18T22:33:19.099255#185726-183600]  INFO -- : Running job thread for 'Execute planned jobs.' (Job.run) status is: sleep
E, [2025-03-18T22:33:28.015516#185726-183620] ERROR -- : Can't use Channel::Driver::Smtp: #<Net::OpenTimeout: execution expired>
E, [2025-03-18T22:33:28.015707#185726-183620] ERROR -- : execution expired (Net::OpenTimeout)
lib/core_ext/net/smtp.rb:10:in `block in do_start'
lib/core_ext/net/smtp.rb:9:in `do_start'
app/models/channel/driver/smtp.rb:98:in `deliver'
app/models/channel.rb:266:in `deliver'
app/jobs/ticket_article_communicate_email_job.rb:56:in `perform'
lib/background_services/service/process_delayed_jobs.rb:25:in `block (2 levels) in launch'
lib/background_services/service/process_delayed_jobs.rb:23:in `block in launch'
lib/background_services/service/process_delayed_jobs.rb:20:in `loop'
lib/background_services/service/process_delayed_jobs.rb:20:in `launch'
lib/background_services/service.rb:27:in `block in run'
lib/application_handle_info.rb:19:in `use'
lib/background_services/service.rb:33:in `block in run_in_service_context'
lib/background_services/service.rb:32:in `run_in_service_context'
lib/background_services/service.rb:26:in `run'
lib/background_services.rb:71:in `block in start_as_thread'
E, [2025-03-18T22:33:28.113985#185726-183620] ERROR -- : Can't use Channel::Driver::Smtp: #<Net::OpenTimeout: execution expired>

Additional Details

  • No configuration or network changes were made prior to the issue, outgoing was working as expected.
  • SMTP connections to Gmail (ports 465/587) continue to time out, while IMAP connections work fine.
  • I’ve verified DNS resolution and that outbound connections via UFW are allowed.
  • The error persists across multiple Google accounts
  • I have also generated a new Google Cloud client ID and secret for the Gmail connection, but this did not resolve the issue.
  • There are no stuck jobs in the delayed job queue.

Hi Nick - are you hosting your Zammad instance on Digital Ocean? We have a similar issue and looks like DO are blocking outbound connections on 25/465/587. 2525 remains open - but Google doesn’t seem to have any support for that on their SMTP endpoints.

Hey @thiscouldbejd, thanks for the response.

In fact, I reached out to digital ocean and they told me just the same…

Unfortunately it appears they’ve decided to take an “all-or-nothing” approach when it comes to SMTP ports on their servers/“droplets”. Very disappointing.

Solution: I’m in the process of migrating my Zammad server to a different cloud provider (Google Cloud). Seems like it’s my only option at this point.

Thanks again for giving this some attention. Should I mark this resolved?

Hi,

Yeah, I would mark the issue as closed, as it isn’t really a Zammad ‘issue’! I’ve reached out to Digital Ocean too, just in case they might show some compassion on this one! We only use authenticated SMTP, and only back to Google for ticketing. But, if not - we will likely move over to Google cloud too!

Yours,

JD.