From 051b649628d8039ff15f0c035c6f8fe5dbf045d6 Mon Sep 17 00:00:00 2001 From: Ushitora Anqou Date: Tue, 13 Mar 2018 05:41:26 +0900 Subject: [PATCH] Detailed SMTP setup (#6759) * add detailed SMTP settings setup in mastodon:setup * add localhost SMTP settings setup in mastodon:setup * SMTP settings setup should exit after successful delivery of test mail --- lib/tasks/mastodon.rake | 53 ++++++++++++++++++++++++++++------------- 1 file changed, 37 insertions(+), 16 deletions(-) diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake index 6ea76d738ed..13df76f9107 100644 --- a/lib/tasks/mastodon.rake +++ b/lib/tasks/mastodon.rake @@ -224,24 +224,43 @@ namespace :mastodon do prompt.say "\n" loop do - env['SMTP_SERVER'] = prompt.ask('SMTP server:') do |q| - q.required true - q.default 'smtp.mailgun.org' - q.modify :strip - end + if prompt.yes?('Do you want to send e-mails from localhost?', default: false) + env['SMTP_SERVER'] = 'localhost' + env['SMTP_PORT'] = 25 + env['SMTP_AUTH_METHOD'] = 'none' + env['SMTP_OPENSSL_VERIFY_MODE'] = 'none' + else + env['SMTP_SERVER'] = prompt.ask('SMTP server:') do |q| + q.required true + q.default 'smtp.mailgun.org' + q.modify :strip + end - env['SMTP_PORT'] = prompt.ask('SMTP port:') do |q| - q.required true - q.default 587 - q.convert :int - end + env['SMTP_PORT'] = prompt.ask('SMTP port:') do |q| + q.required true + q.default 587 + q.convert :int + end - env['SMTP_LOGIN'] = prompt.ask('SMTP username:') do |q| - q.modify :strip - end + env['SMTP_LOGIN'] = prompt.ask('SMTP username:') do |q| + q.modify :strip + end - env['SMTP_PASSWORD'] = prompt.ask('SMTP password:') do |q| - q.echo false + env['SMTP_PASSWORD'] = prompt.ask('SMTP password:') do |q| + q.echo false + end + + env['SMTP_AUTH_METHOD'] = prompt.ask('SMTP authentication:') do |q| + q.required + q.default 'plain' + q.modify :strip + end + + env['SMTP_OPENSSL_VERIFY_MODE'] = prompt.ask('SMTP OpenSSL verify mode:') do |q| + q.required + q.default 'peer' + q.modify :strip + end end env['SMTP_FROM_ADDRESS'] = prompt.ask('E-mail address to send e-mails "from":') do |q| @@ -261,7 +280,8 @@ namespace :mastodon do :user_name => env['SMTP_LOGIN'].presence, :password => env['SMTP_PASSWORD'].presence, :domain => env['LOCAL_DOMAIN'], - :authentication => :plain, + :authentication => env['SMTP_AUTH_METHOD'] == 'none' ? nil : env['SMTP_AUTH_METHOD'] || :plain, + :openssl_verify_mode => env['SMTP_OPENSSL_VERIFY_MODE'], :enable_starttls_auto => true, } @@ -271,6 +291,7 @@ namespace :mastodon do mail = ActionMailer::Base.new.mail to: send_to, subject: 'Test', body: 'Mastodon SMTP configuration works!' mail.deliver + break rescue StandardError => e prompt.error 'E-mail could not be sent with this configuration, try again.' prompt.error e.message