Issues setting up hostmail

Hi there. Hope you don’t mind me hijacking the thread.

My hosting provider has no issues with email. All tests using various tools work - ports are open and should be able to send mail. Problem is - it doesn’t work with Discourse.

Regardless of the port I try, I still get the same errors.

I manually created accounts and can log in, but emails are needed for invites and validation. I tested with MailGun and it works - but I can’t figure why it doesn’t work with my hosting provider. I contacted them and they’ve said everything should be fine - so I’m at a bit of a loss.

As a new user I can only post two links - but those should take you to the rest of the photos.

Let me know if there are any logs you’d like me to pull - limited *NIX experience, but I can follow instructions. Thanks in advance.

Thanks @JammyDodger for the split/move. Hoping to get some assistance with this. The server isn’t permanent - it’s for testing - so any logs or commands required can be put through to find a solution.

Basically - email works (mostly) with MailGun but not with the hosting provider. Emails from MailGun to free services (GMAIL, etc) work fine. Attempts to send from MailGun to my domain/hosted email fail. Not sure what’s going on. Use of the domain email works quite fine in any other application - OSTicket/InvoiceNinja/Windows Mail/ThunderBird/etc.

Any help appreciated. Thanks in advance.

It is quite odd, for sure, if your hostmail credentials work in other tools and assuming it’s properly pasted in discourse config. Do you have security tools that might block hostmail domain?

You can also try to look at <discourse_url>/logs to see if there is a detailed error on what’s happening.

Thanks for your reply. Here’s some info.

Message (12 copies reported)

Job exception: execution expired


Backtrace

/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/net-smtp-0.4.0/lib/net/smtp.rb:631:in `initialize'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/net-smtp-0.4.0/lib/net/smtp.rb:631:in `open'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/net-smtp-0.4.0/lib/net/smtp.rb:631:in `tcp_socket'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/net-smtp-0.4.0/lib/net/smtp.rb:641:in `block in do_start'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/timeout-0.4.0/lib/timeout.rb:186:in `block in timeout'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/timeout-0.4.0/lib/timeout.rb:193:in `timeout'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/net-smtp-0.4.0/lib/net/smtp.rb:640:in `do_start'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/net-smtp-0.4.0/lib/net/smtp.rb:610:in `start'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb:109:in `start_smtp_session'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb:100:in `deliver!'

So to clarify - “hostmail” is just the name I gave it since it’s my hosting provider (GlowHost) email from the domain I’m testing - discourse.carlosthomas.net - which works MOSTLY OK with MailGun - but not with the hosted email.

Was unaware of the /logs - I can redo the settings and clear the logs then attempt emails and post the info if you like. I could also clear the logs now - send to Gmail - which will be successful - then send to my hosted email - which will fail - and send the logs.

Adding some context. Friends running a site on vBulletin 4.2.5 and I’m temporarily hosting Discourse for them to get a feel of it. The issue is the emails - I can follow instructions enough to manually create the accounts, but should the decide on Discourse, they’ll need the emails to add users. There’s also the importing part of things - which I found this link that I think may help.

But the email needs to be resolved. I’m only keeping the box with Discourse up until we get this issue resolved. And I’m kinda trying to showcase what the support is like. My experience with the details in the forums and what I’ve seen suggests that usage/migration/support should be fairly easy once the requirements for hosting the platform are met. And once the official methods are used, getting support should be easy enough.

But yeah - that’s where we’re at. Waiting on feedback.

1 Like

Hi all. Will attempt some stuff over the weekend all being well. I intend to scrub/reinstall and post the progress. If anyone has suggestions before then - please let me know.

Once I get to that point, I intend to pull whatever logs can be found and post here. Will be using some random generated passwords for the process to allow persons that want to help access. Let’s see how it goes.

Currently doing checks and changes to the app.yml file - cleared the logs before - will attempt emails out and advise.

EDIT
So clearing logs and sending emails to Gmail or my own domain show no errors. I get mails at Gmail but none at my domain.

Logs at MailGun basically say this:

{
	"recipient": "me@mydomain",
	"id": "SCBCSJxDSqupdU9Da29rRw",
	"envelope": {
		"sender": "postmaster@mg.mydomain",
		"targets": "me@mydomain",
		"transport": "smtp",
		"sending-ip": "192.168.0.1"
	},
	"timestamp": 1697462206.8430145,
	"user-variables": {},
	"message": {
		"headers": {
			"from": "Discourse Test Forum <postmaster@mg.mydomain>",
			"message-id": "9d3b190d-bcbd-4378-8eb6-fc90cd57fe35@discourse.mydomain",
			"to": "me@mydomain",
			"subject": "[Discourse Test Forum] Email Deliverability Test"
		},
		"attachments": [],
		"size": 4546
	},
	"storage": {
		"region": "us-west1",
		"key": "BAABAQUOTl3y4PtvsqlN5Z2OvaxXslLlZA",
		"env": "production",
		"url": "https://storage-us-west1.api.mailgun.net/v3/domains/mg.mydomain/messages/BAABAQUOTl3y4PtvsqlN5Z2OvaxXslLlZA"
	},
	"reason": "generic",
	"delivery-status": {
		"enhanced-code": "",
		"mx-host": "mydomain",
		"description": "",
		"certificate-verified": true,
		"attempt-no": 1,
		"code": 550,
		"message": "Verification failed for <bounce+674b6a.be6180c-me=mydomain@mg.mydomain>\nThe mail server does not recognize bounce+674b6a.be6180c-me=mydomain@mg.mydomain as a valid sender.\nSender verify failed",
		"session-seconds": 40.878,
		"tls": true
	},
	"campaigns": [],
	"severity": "permanent",
	"tags": [],
	"recipient-domain": "mydomain",
	"flags": {
		"is-routed": false,
		"is-authenticated": true,
		"is-test-mode": false,
		"is-system-test": false
	},
	"log-level": "error",
	"event": "failed"
}

I only get this if I try on my own domain. If I try any other domain it’s fine - free mail or not.

Current settings in the app.yml are:

## this is the all-in-one, standalone Discourse Docker container template
##
## After making changes to this file, you MUST rebuild
## /var/discourse/launcher rebuild app
##
## BE *VERY* CAREFUL WHEN EDITING!
## YAML FILES ARE SUPER SUPER SENSITIVE TO MISTAKES IN WHITESPACE OR ALIGNMENT!
## visit http://www.yamllint.com/ to validate this file as needed

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  ## Uncomment the next line to enable the IPv6 listener
  #- "templates/web.ipv6.template.yml"
  - "templates/web.ratelimited.template.yml"
  ## Uncomment these two lines if you wish to add Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

## which TCP/IP ports should this container expose?
## If you want Discourse to share a port with another webserver like Apache or nginx,
## see https://meta.discourse.org/t/17247 for details
expose:
  - "80:80"   # http
  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Set db_shared_buffers to a max of 25% of the total memory.
  ## will be set automatically by bootstrap based on detected RAM, or you can override
  db_shared_buffers: "2048MB"

  ## can improve sorting performance, but adds memory usage per-connection
  #db_work_mem: "40MB"

  ## Which Git revision should this container use? (default: tests-passed)
  #version: tests-passed

env:
  LC_ALL: en_US.UTF-8
  LANG: en_US.UTF-8
  LANGUAGE: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en

  ## How many concurrent web requests are supported? Depends on memory and CPU cores.
  ## will be set automatically by bootstrap based on detected CPUs, or you can override
  UNICORN_WORKERS: 8

  ## TODO: The domain name this Discourse instance will respond to
  ## Required. Discourse will not work with a bare IP number.
  DISCOURSE_HOSTNAME: mydomain

  ## Uncomment if you want the container to be started with the same
  ## hostname (-h option) as specified above (default "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: List of comma delimited emails that will be made admin and developer
  ## on initial signup example 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'me@mydomain'

  ## TODO: The SMTP mail server used to validate new accounts and send notifications
  # SMTP ADDRESS, username, and password are required
  # WARNING the char '#' in SMTP password can cause problems!
  
  DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: postmaster@mg.mydomain
  DISCOURSE_SMTP_PASSWORD: "mailgunpassword"
  #DISCOURSE_SMTP_ENABLE_START_TLS: true             # (optional, default true)
  #DISCOURSE_SMTP_FORCE_TLS: true
  DISCOURSE_SMTP_DOMAIN: mydomain
  DISCOURSE_NOTIFICATION_EMAIL: postmaster@mg.mydomain


  ## If you added the Lets Encrypt template, uncomment below to get a free SSL certificate
  LETSENCRYPT_ACCOUNT_EMAIL: freemailaccount

  ## The http or https CDN address for this Discourse instance (configured to pull)
  ## see https://meta.discourse.org/t/14857 for details
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com
  
  ## The maxmind geolocation IP address key for IP address lookup
  ## see https://meta.discourse.org/t/-/137387/23 for details
  #DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456

## The Docker container is stateless; all data is stored in /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## Plugins go here
## see https://meta.discourse.org/t/19157 for details
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-spoiler-alert.git
          - git clone https://github.com/discourse/discourse-solved.git
          - git clone https://github.com/discourse/discourse-docs.git
## Any custom commands to run after building
run:
  - exec: echo "Beginning of custom commands"
  ## If you want to set the 'From' email address for your first registration, uncomment and change:
  ## After getting the first signup email, re-comment the line. It only needs to run once.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "End of custom commands"

Really - the only changes made to this would be:

DISCOURSE_SMTP_ADDRESS: smtp.mydomain
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: email@mydomain
  DISCOURSE_SMTP_PASSWORD: "mydomainmailpassword"
  #DISCOURSE_SMTP_ENABLE_START_TLS: true             # (optional, default true)
  #DISCOURSE_SMTP_FORCE_TLS: true
  DISCOURSE_SMTP_DOMAIN: mydomain
  DISCOURSE_NOTIFICATION_EMAIL: email@mydomain

Once I get a reply from someone I’ll make those changes and check back in the logs. Or…maybe I just do it - post the logs - and wait for a reply. Shouldn’t take too long. Will see.

1 Like

Honestly, I don’t know. :thinking: That doesn’t seem to be an issue with Discourse. I mean, the email was sent by Discourse properly, but Mailgun failed to deliver it to the email address.

Error 550 means “The user’s mailbox was unavailable (such as - not found)

1 Like

Thanks for your reply. I don’t know what’s up - the email works fine. Just doesn’t like my domain I guess.

I’ve changed the setting to use my domain email to send. Let me check the logs now and see what errors I get.

EDIT
No error in the logs - but I got this.

Let me try from ./discourse-doctor - but logs are legit empty at /logs.

And I get the same errors posted at the start.

The email address in use works. I copy/paste the details including the password. I’ve tested the same email on ThunderBird / Windows Mail with no problems whatsoever. So…

I contacted my hosting provider support previously - this was the reply.

So I dunno. Maybe there’s something I’m missing? Test emails work with 465 / 587 and there’s no issues. I’m at a loss.

Are there any special characters that would be blocked or cause an issue with the email settings?

Changed settings to port 465 and only seeing this in /logs.

Nothing of major consequence I think.

I’d like to send kudos and thanks to @Arkshine for assistance thus far. Apparently the VPS cannot reach the hosted domain - hence the mails don’t work. That’s pretty weird, but I’m contacting the hosting provider to check on it. Will update.

That was pretty quick and easy. A simple ping to the hosted domain from a SSH session to the VPS running Discourse showed what was up. Let’s see how it goes.

EDIT
Kinda wished @Arkshine had replied so I could mark that as the solution. Anyways - heard back from the hosting provider. Apparently their servers automatically blocked the VPS IP due to failed attempts of SMTP. Not sure what was up with that - will change settings and run tests again and see. Should be good now - hosted IP is pingable from VPS now. Tested email settings and we’re good to go!

Hopefully this info helps someone. If I could edit the OP then I’d just put in a TLDR - or they can just click the link to go to the solution.

Again - many thanks to @Arkshine for all the help. Keep up the good work!

2 Likes

I agree, he is a great help and resource. :slight_smile:

3 Likes

Would also like to mention that his DP and profile background are really cool. I like.

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.