No email settings, only "Arguments -i"

Hi all,

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:

Been searching this forum and haven’t seen any reference to this issue. If anyone has any ideas, I’m all ears.

Some questions:

  • Did you complete a ./launcher rebuild app after both app.yml changes?
  • Are you seeing any other issues? Errors in /logs, browser console, etc?
  • Have you verified that your app.yml is valid? http://www.yamllint.com/
  • Please upload (or copy paste in) your app.yml making sure to remove passwords first!

Also, for a support topic, please share a link to the forum.

3 Likes

Thanks, Joshua. Here’s a link to the forum: http://caldata.net

In answer to your questions:

  • Yes, ./launcher rebuild after all app.yml changes
  • 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"

I’m not seeing anything jump out at me from the app.yml.

Off Topic: when pasting in code, it is helpful to surround it with 3 back ticks. Reference: http://commonmark.org/help/tutorial/07-code.html

The only thing I haven’t seen before is SEGMENT_IO_KEY. I’m assuming that’s related to this plugin? https://github.com/kylewelsby/discourse-segment-io-plugin Does the error still occur when the plugin is removed from your app.yml?

4 Likes

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.

1 Like

@jomaxro FYI, I’m commented out the Segment.io plugin (and all custom plugins) and am still seeing the same error on the email settings page in admin.

1 Like

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?

We’ve now surpassed my email knowledge, sorry! Perhaps @zogstrip might have a thought or two, he does a lot of email related development.

1 Like

The issue is because of this line

## Plugins go here
env:
  SEGMENT_IO_KEY: XXXXXXX

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
4 Likes

@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 :slight_smile:

1 Like