The discussion revolves around an issue with Discourse’s email settings, where the user grodeska is only seeing “Arguments -i” instead of the SMTP settings they saved in app.yml.
jomaxro suggests several troubleshooting steps, including rebuilding the app, checking for errors, and validating the app.yml file. grodeska provides the app.yml file and reports that they have tried rebuilding the app and checking for errors, but the issue persists.
jomaxro doesn’t find any issues with the app.yml file and suggests that the problem might be related to the Segment.io plugin. grodeska tries commenting out the plugin, but the issue remains.
After trying different SMTP settings and commenting out all custom plugins, grodeska is still unable to resolve the issue. jomaxro suggests seeking help from zogstrip, who eventually identifies the problem: a redefinition of the env key in the app.yml file, which causes all DISCOURSE_ settings to be lost.
zogstrip provides a solution by moving the SEGMENT_IO_KEY under the DISCOURSE_CDN_URL line, which resolves the issue for grodeska.
Banging my head against an inexplicable (to me) problem which has arisen when moving off sandbox mailgun SMTP to a new domain.
A few hours ago I switched the URL setting in app.yml to the new domain, and install is working fine. Then I moved to email settings and changed necessary settings in app.yml to the Mailgun settings for my verified domain (all DNS is good to do in Mailgun).
Instead of seeing the SMTP settings I saved in app.yml, I’m only seeing one line under “Delivery Method” that shows “Arguments -i”. Here’s a screenshot:
No errors in logs but browser console is reporting “Failed to load resource: the server responded with a status of 502 (Bad Gateway)”. However, this seems to be an intermittent error. Saw it once this morning and have not seen it again.
app.yml is valid and pasted below (FYI, I had to remove all links since I’m not allowed to post more than two URLs as a new user…)
## 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"
- "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?
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 o$
db_shared_buffers: "256MB"
## 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:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
## How many concurrent web requests are supported? Depends on memory and CPU $
## will be set automatically by bootstrap based on detected CPUs, or you can $
UNICORN_WORKERS: 4
## TODO: The domain name this Discourse instance will respond to
DISCOURSE_HOSTNAME: caldata.net
## 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: 'lawrence@civicmakers.com'
## TODO: The SMTP mail server used to validate new accounts and send notifica$
DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: postmaster@caldata.net
DISCOURSE_SMTP_PASSWORD: XXXXXXX
DISCOURSE_SMTP_ENABLE_START_TLS: false # (optional, default true)
## If you added the Lets Encrypt template, uncomment below to get a free SSL $
#LETSENCRYPT_ACCOUNT_EMAIL: me@example.com
## The CDN address for this Discourse instance (configured to pull)
#DISCOURSE_CDN_URL: [REMOVED]
## 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
env:
SEGMENT_IO_KEY: XXXXXXX
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone [REMOVED]
- git clone [REMOVED]
## 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, u$
## After getting the first signup email, re-comment the line. It only needs t$
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse$
- exec: echo "End of custom commands"
Thanks, Joshua. For the code pasting tip, and the response.
Yep, that’s a plugin for Segment.io, and the mail settings were working when I was using Mailgun’s sandbox SMTP settings and had that same plugin installed. I can try commenting that out of app.yml and see what happens, but m y guess is that’s not the problem. Will let you know if anything changes when I have a chance to try that later.
I’ve also now tried going back to Mailgun sandbox SMTP settings and creating a Sparkpost account and using those SMTP settings. Still only seeing the “arguments -i” line in the email settings admin page.
I’m totally confused. Anyone have any ideas on what else I can try?
You are redefining the “env” key (which is defined earlier) and thus all of the “DISCOURSE_” settings are gone…
To fix it, you need to move the “SEGMENT_IO_KEY” under the “#DISCOURSE_CDN_URL” line, like so
env:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
# [...]
## The CDN address for this Discourse instance (configured to pull)
#DISCOURSE_CDN_URL: [REMOVED]
SEGMENT_IO_KEY: XXXXXXX
## 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
@zogstrip Thank you! That did it. I saw the extra “env” statement there, but didn’t stop to think it would redeclare all environment variables. Thanks again, it’s a relief to see my SMTP settings back