instructure / canvas-lms

The open LMS by Instructure, Inc.
https://github.com/instructure/canvas-lms/wiki
GNU Affero General Public License v3.0
5.52k stars 2.45k forks source link

Emails are not sent/delivered using Amazon SES #2067

Open mezuqu opened 2 years ago

mezuqu commented 2 years ago

Summary:

Our canvaslms cannot send emails using Amazon Ses

Steps to reproduce:

Hello,

I have gone through all of the SMTP configurations.

Our Amazon EC2 server sends email with SMTP information provided by AWS SES without any problem as I have tested it using a php script.

I have also tried to debug the problem in the logs of both canvas and apache2 however no luck. I have seen that there are lots of people having problems with email delivery as most of the issues have not been solved in canvas.

Also it is so strange and I find this by luck, (it was never mentioned anywhere): https://stackoverflow.com/questions/52380448/not-able-to-deliver-the-mail-in-canvas-lms-what-configuration-setting-i-am-miss

and I have enabled this feature.

Do I have to install a smtp sender like “sendemail” and configure it ? Can you point out us to find out the problem I am sure other people will benefit for this.

Here is my outgoing yml (i have also tried lots of other variations): (I have also enabled "enable_starttls_auto" and set authentication to "plain" as well but no luck after i restarted canvas)

production:
address: “[email-smtp.us-east-1.amazonaws.com](http://email-smtp.us-east-1.amazonaws.com/)”
port: “587”
delivery_method: “smtp”
#enable_starttls_auto: false
user_name: “AK…O”
password: “B…a”
authentication: “login” # plain, login, or cram_md5
domain: “online…org”
outgoing_address: “canvas@…org”
default_name: “Instructure Canvas”

Expected behavior:

It sould able to send emails once i reset my password, or I add someone to the course list from the panel.

Actual behavior:

It doesn't deliver any emails

mezuqu commented 2 years ago

I have enabled it also. no luck.

production:
  address: "email-smtp.us-east-1.amazonaws.com"
  port: "587"
  #tls: false
  #delivery_method: "smtp"
  enable_starttls_auto: true
  user_name: "AK........O"
  password: "B........a"
  authentication: "plain" # plain, login, or cram_md5
  domain: "online.......org"
  outgoing_address: "canvas@online.......org"
  default_name: "Instructure Canvas"

No luck with this configuration, as i am getting this error:

2022-06-23 02:49:24.821491< 530 Must issue a STARTTLS command first /opt/bitnami/ruby/lib/ruby/2.7.0/net/smtp.rb:975:in check_auth_response' /opt/bitnami/ruby/lib/ruby/2.7.0/net/smtp.rb:736:inauth_plain' /opt/bitnami/ruby/lib/ruby/2.7.0/net/smtp.rb:728:in authenticate' /opt/bitnami/ruby/lib/ruby/2.7.0/net/smtp.rb:565:indo_start' /opt/bitnami/ruby/lib/ruby/2.7.0/net/smtp.rb:518:in start' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/mail-2.7.1/lib/mail/network/delivery_methods/smtp.rb:109:instart_smtp_session' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/mail-2.7.1/lib/mail/network/delivery_methods/smtp.rb:100:in deliver!' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/mail-2.7.1/lib/mail/message.rb:2159:indo_delivery' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/mail-2.7.1/lib/mail/message.rb:260:in block in deliver' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/actionmailer-6.0.4.2/lib/action_mailer/base.rb:589:inblock in deliver_mail' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.4.2/lib/active_support/notifications.rb:180:in block in instrument' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.4.2/lib/active_support/notifications/instrumenter.rb:24:ininstrument' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.4.2/lib/active_support/notifications.rb:180:in instrument' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/actionmailer-6.0.4.2/lib/action_mailer/base.rb:587:indeliver_mail' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/mail-2.7.1/lib/mail/message.rb:260:in deliver' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/actionmailer-6.0.4.2/lib/action_mailer/message_delivery.rb:115:inblock in deliver_now' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/actionmailer-6.0.4.2/lib/action_mailer/rescuable.rb:17:in handle_exceptions' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/actionmailer-6.0.4.2/lib/action_mailer/message_delivery.rb:114:indeliver_now' /opt/bitnami/canvaslms/app/models/message.rb:1039:in deliver_via_email' /opt/bitnami/canvaslms/app/models/message.rb:736:indeliver' /opt/bitnami/canvaslms/app/models/message.rb:55:in deliver' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/performable_method.rb:40:inperform' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/backend/base.rb:305:in block in invoke_job' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/sentry-inst_jobs-1.0.0/lib/sentry/inst_jobs/plugin.rb:12:inblock (2 levels) in ' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/lifecycle.rb:91:in block (2 levels) in add' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/lifecycle.rb:73:inblock in initialize' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/lifecycle.rb:91:in block in add' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/lifecycle.rb:78:inexecute' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/lifecycle.rb:51:in run_callbacks' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/backend/base.rb:302:ininvoke_job' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/switchman-inst-jobs-3.2.7/lib/switchman_inst_jobs/delayed/backend/base.rb:86:in block in invoke_job' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/switchman-2.2.2/app/models/switchman/shard.rb:596:inblock in activate' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/switchman-2.2.2/app/models/switchman/shard.rb:98:in activate' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/switchman-2.2.2/app/models/switchman/shard.rb:595:inactivate' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/switchman-inst-jobs-3.2.7/lib/switchman_inst_jobs/delayed/backend/base.rb:86:in invoke_job' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/worker.rb:219:inblock (2 levels) in perform' /opt/bitnami/ruby/lib/ruby/2.7.0/benchmark.rb:308:in realtime' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/worker.rb:213:inblock in perform' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-statsd-2.1.2/lib/inst_jobs_statsd/stats/timing/perform.rb:22:in block (2 levels) in enable_perform_timing' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-statsd-2.1.2/lib/inst_jobs_statsd/stats/timing.rb:8:inblock in report_timing' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst_statsd-2.2.0/lib/inst_statsd/statsd.rb:91:in time' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-statsd-2.1.2/lib/inst_jobs_statsd/stats/timing.rb:8:inreport_timing' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-statsd-2.1.2/lib/inst_jobs_statsd/stats/timing/perform.rb:21:in block in enable_perform_timing' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/lifecycle.rb:91:inblock (2 levels) in add' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-statsd-2.1.2/lib/inst_jobs_statsd/stats/timing/perform.rb:13:in block (2 levels) in enable_batching' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst_statsd-2.2.0/lib/inst_statsd/statsd.rb:97:inbatch' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-statsd-2.1.2/lib/inst_jobs_statsd/stats/timing/perform.rb:12:in block in enable_batching' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/lifecycle.rb:91:inblock (2 levels) in add' /opt/bitnami/canvaslms/config/initializers/delayed_job.rb:153:in block (2 levels) in <top (required)>' /opt/bitnami/canvaslms/lib/temp_cache.rb:30:inenable' /opt/bitnami/canvaslms/config/initializers/delayed_job.rb:152:in block in <top (required)>' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/lifecycle.rb:91:inblock (2 levels) in add' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/lifecycle.rb:73:in block in initialize' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/lifecycle.rb:91:inblock in add' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/lifecycle.rb:91:in block in add' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/lifecycle.rb:91:inblock in add' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/lifecycle.rb:78:in execute' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/lifecycle.rb:51:inrun_callbacks' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/worker.rb:210:in perform' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/worker.rb:180:inblock (2 levels) in run' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/worker.rb:285:in block in configure_for_job' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/worker.rb:54:inrunning_job' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/worker.rb:281:in configure_for_job' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/worker.rb:179:inblock in run' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/lifecycle.rb:73:in block in initialize' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/lifecycle.rb:78:inexecute' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/lifecycle.rb:51:in run_callbacks' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/worker.rb:171:inrun' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/switchman-inst-jobs-3.2.7/lib/switchman_inst_jobs/delayed/worker.rb:26:in block in run' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/switchman-2.2.2/app/models/switchman/shard.rb:596:inblock in activate' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/switchman-2.2.2/app/models/switchman/shard.rb:98:in activate' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/switchman-2.2.2/app/models/switchman/shard.rb:595:inactivate' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/switchman-inst-jobs-3.2.7/lib/switchman_inst_jobs/delayed/worker.rb:26:in run' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/worker.rb:135:inblock in start' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/lifecycle.rb:73:in block in initialize' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/lifecycle.rb:78:inexecute' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/lifecycle.rb:51:in run_callbacks' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/worker.rb:134:instart' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/switchman-inst-jobs-3.2.7/lib/switchman_inst_jobs/delayed/worker.rb:19:in block in start' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/switchman-2.2.2/app/models/switchman/shard.rb:596:inblock in activate' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/switchman-2.2.2/app/models/switchman/shard.rb:98:in activate' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/switchman-2.2.2/app/models/switchman/shard.rb:595:inactivate' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/switchman-inst-jobs-3.2.7/lib/switchman_inst_jobs/delayed/worker.rb:19:in start' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/pool.rb:103:inblock in spawn_worker' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/pool.rb:115:in block in fork_with_reconnects' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/pool.rb:111:infork' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/pool.rb:111:in fork_with_reconnects' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/pool.rb:102:inspawn_worker' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/pool.rb:268:in respawn_child' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/pool.rb:229:inblock in maintain_children' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/pool.rb:228:in each' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/pool.rb:228:inmaintain_children' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/pool.rb:175:in block in join' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/pool.rb:174:inloop' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/pool.rb:174:in join' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/pool.rb:50:instart' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/cli.rb:111:in start' /opt/bitnami/canvaslms/vendor/bundle/ruby/2.7.0/gems/inst-jobs-3.0.6/lib/delayed/cli.rb:36:inrun' script/delayed_job:11:in <main>'

Higherings commented 2 years ago

Hello @mezuqu , I have your exact configuration, like:

production: address: "email-smtp.us-east-1.amazonaws.com" port: "587" enable_starttls_auto: true user_name: "AK........O" password: "B........a" authentication: "plain" domain: "online.......org" outgoing_address: "canvas@online.......org" default_name: "Instructure Canvas"

But the difference is authentication: "login", hope this helps.