Make log mailer for testing (#5893)
* Create log mailer for testing email settings Signed-off-by: Andrew Thornton <art27@cantab.net> * Switch on the log mailer for the integration tests This ensures that the sending mail process works Signed-off-by: Andrew Thornton <art27@cantab.net> * rename the from user for mysql/mssql * rename log sender to dummy sender * update the integration tests
This commit is contained in:
		
							parent
							
								
									67567eff0e
								
							
						
					
					
						commit
						3d91bb2f2d
					
				
					 8 changed files with 60 additions and 12 deletions
				
			
		|  | @ -414,8 +414,8 @@ USER = | |||
| PASSWD = | ||||
| ; Send mails as plain text | ||||
| SEND_AS_PLAIN_TEXT = false | ||||
| ; Enable sendmail (override SMTP) | ||||
| USE_SENDMAIL = false | ||||
| ; Set Mailer Type (either SMTP, sendmail or dummy to just send to the log) | ||||
| MAILER_TYPE = smtp | ||||
| ; Specify an alternative sendmail binary | ||||
| SENDMAIL_PATH = sendmail | ||||
| ; Specify any extra sendmail arguments | ||||
|  |  | |||
|  | @ -228,10 +228,14 @@ Values containing `#` or `;` must be quoted using `` ` `` or `"""`. | |||
| - `PASSWD`: **\<empty\>**: Password of mailing user.  Use \`your password\` for quoting if you use special characters in the password. | ||||
| - `SKIP_VERIFY`: **\<empty\>**: Do not verify the self-signed certificates. | ||||
|    - **Note:** Gitea only supports SMTP with STARTTLS. | ||||
| - `USE_SENDMAIL`: **false** Use the operating system's `sendmail` command instead of SMTP. | ||||
| - `MAILER_TYPE`: **smtp**: \[smtp, sendmail, dummy\] | ||||
|    - **smtp** Use SMTP to send mail | ||||
|    - **sendmail** Use the operating system's `sendmail` command instead of SMTP. | ||||
|    This is common on linux systems. | ||||
|    - **dummy** Send email messages to the log as a testing phase. | ||||
|    - Note that enabling sendmail will ignore all other `mailer` settings except `ENABLED`, | ||||
|      `FROM` and `SENDMAIL_PATH`. | ||||
|    - Enabling dummy will ignore all settings except `ENABLED` and `FROM`. | ||||
| - `SENDMAIL_PATH`: **sendmail**: The location of sendmail on the operating system (can be | ||||
|    command or full path). | ||||
| - ``IS_TLS_ENABLED`` :  **false** : Decide if SMTP connections should use TLS. | ||||
|  |  | |||
|  | @ -36,7 +36,9 @@ LFS_JWT_SECRET   = Tv_MjmZuHqpIY6GFl12ebgkRAMt4RlWt0v4EHKSXO0w | |||
| APP_DATA_PATH    = integrations/gitea-integration-mssql/data | ||||
| 
 | ||||
| [mailer] | ||||
| ENABLED = false | ||||
| ENABLED = true | ||||
| MAILER_TYPE = dummy | ||||
| FROM = mssql-integration-test@gitea.io | ||||
| 
 | ||||
| [service] | ||||
| REGISTER_EMAIL_CONFIRM            = false | ||||
|  | @ -47,6 +49,7 @@ REQUIRE_SIGNIN_VIEW               = false | |||
| DEFAULT_KEEP_EMAIL_PRIVATE        = false | ||||
| DEFAULT_ALLOW_CREATE_ORGANIZATION = true | ||||
| NO_REPLY_ADDRESS                  = noreply.example.org | ||||
| ENABLE_NOTIFY_MAIL                = true | ||||
| 
 | ||||
| [picture] | ||||
| DISABLE_GRAVATAR        = false | ||||
|  |  | |||
|  | @ -36,7 +36,9 @@ LFS_JWT_SECRET   = Tv_MjmZuHqpIY6GFl12ebgkRAMt4RlWt0v4EHKSXO0w | |||
| APP_DATA_PATH    = integrations/gitea-integration-mysql/data | ||||
| 
 | ||||
| [mailer] | ||||
| ENABLED = false | ||||
| ENABLED = true | ||||
| MAILER_TYPE = dummy | ||||
| FROM = mysql-integration-test@gitea.io | ||||
| 
 | ||||
| [service] | ||||
| REGISTER_EMAIL_CONFIRM            = false | ||||
|  | @ -47,6 +49,7 @@ REQUIRE_SIGNIN_VIEW               = false | |||
| DEFAULT_KEEP_EMAIL_PRIVATE        = false | ||||
| DEFAULT_ALLOW_CREATE_ORGANIZATION = true | ||||
| NO_REPLY_ADDRESS                  = noreply.example.org | ||||
| ENABLE_NOTIFY_MAIL                = true | ||||
| 
 | ||||
| [picture] | ||||
| DISABLE_GRAVATAR        = false | ||||
|  |  | |||
|  | @ -36,7 +36,9 @@ LFS_JWT_SECRET   = Tv_MjmZuHqpIY6GFl12ebgkRAMt4RlWt0v4EHKSXO0w | |||
| APP_DATA_PATH    = integrations/gitea-integration-pgsql/data | ||||
| 
 | ||||
| [mailer] | ||||
| ENABLED = false | ||||
| ENABLED = true | ||||
| MAILER_TYPE = dummy | ||||
| FROM = pgsql-integration-test@gitea.io | ||||
| 
 | ||||
| [service] | ||||
| REGISTER_EMAIL_CONFIRM            = false | ||||
|  | @ -47,6 +49,7 @@ REQUIRE_SIGNIN_VIEW               = false | |||
| DEFAULT_KEEP_EMAIL_PRIVATE        = false | ||||
| DEFAULT_ALLOW_CREATE_ORGANIZATION = true | ||||
| NO_REPLY_ADDRESS                  = noreply.example.org | ||||
| ENABLE_NOTIFY_MAIL                = true | ||||
| 
 | ||||
| [picture] | ||||
| DISABLE_GRAVATAR        = false | ||||
|  |  | |||
|  | @ -44,6 +44,7 @@ REQUIRE_SIGNIN_VIEW               = false | |||
| DEFAULT_KEEP_EMAIL_PRIVATE        = false | ||||
| DEFAULT_ALLOW_CREATE_ORGANIZATION = true | ||||
| NO_REPLY_ADDRESS                  = noreply.example.org | ||||
| ENABLE_NOTIFY_MAIL                = true | ||||
| 
 | ||||
| [picture] | ||||
| DISABLE_GRAVATAR        = false | ||||
|  | @ -66,3 +67,8 @@ LEVEL = Debug | |||
| INSTALL_LOCK   = true | ||||
| SECRET_KEY     = 9pCviYTWSb | ||||
| INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE0OTI3OTU5ODN9.OQkH5UmzID2XBdwQ9TAI6Jj2t1X-wElVTjbE7aoN4I8 | ||||
| 
 | ||||
| [mailer] | ||||
| ENABLED = true | ||||
| MAILER_TYPE = dummy | ||||
| FROM = sqlite-integration-test@gitea.io | ||||
|  |  | |||
|  | @ -6,6 +6,7 @@ | |||
| package mailer | ||||
| 
 | ||||
| import ( | ||||
| 	"bytes" | ||||
| 	"crypto/tls" | ||||
| 	"fmt" | ||||
| 	"io" | ||||
|  | @ -237,6 +238,20 @@ func (s *sendmailSender) Send(from string, to []string, msg io.WriterTo) error { | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| // Sender sendmail mail sender
 | ||||
| type dummySender struct { | ||||
| } | ||||
| 
 | ||||
| // Send send email
 | ||||
| func (s *dummySender) Send(from string, to []string, msg io.WriterTo) error { | ||||
| 	buf := bytes.Buffer{} | ||||
| 	if _, err := msg.WriteTo(&buf); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	log.Info("Mail From: %s To: %v Body: %s", from, to, buf.String()) | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| func processMailQueue() { | ||||
| 	for { | ||||
| 		select { | ||||
|  | @ -265,10 +280,13 @@ func NewContext() { | |||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	if setting.MailService.UseSendmail { | ||||
| 		Sender = &sendmailSender{} | ||||
| 	} else { | ||||
| 	switch setting.MailService.MailerType { | ||||
| 	case "smtp": | ||||
| 		Sender = &smtpSender{} | ||||
| 	case "sendmail": | ||||
| 		Sender = &sendmailSender{} | ||||
| 	case "dummy": | ||||
| 		Sender = &dummySender{} | ||||
| 	} | ||||
| 
 | ||||
| 	mailQueue = make(chan *Message, setting.MailService.QueueLength) | ||||
|  |  | |||
|  | @ -1529,6 +1529,7 @@ type Mailer struct { | |||
| 	FromName        string | ||||
| 	FromEmail       string | ||||
| 	SendAsPlainText bool | ||||
| 	MailerType      string | ||||
| 
 | ||||
| 	// SMTP sender
 | ||||
| 	Host              string | ||||
|  | @ -1541,7 +1542,6 @@ type Mailer struct { | |||
| 	IsTLSEnabled      bool | ||||
| 
 | ||||
| 	// Sendmail sender
 | ||||
| 	UseSendmail  bool | ||||
| 	SendmailPath string | ||||
| 	SendmailArgs []string | ||||
| } | ||||
|  | @ -1562,6 +1562,7 @@ func newMailService() { | |||
| 		QueueLength:     sec.Key("SEND_BUFFER_LEN").MustInt(100), | ||||
| 		Name:            sec.Key("NAME").MustString(AppName), | ||||
| 		SendAsPlainText: sec.Key("SEND_AS_PLAIN_TEXT").MustBool(false), | ||||
| 		MailerType:      sec.Key("MAILER_TYPE").In("", []string{"smtp", "sendmail", "dummy"}), | ||||
| 
 | ||||
| 		Host:           sec.Key("HOST").String(), | ||||
| 		User:           sec.Key("USER").String(), | ||||
|  | @ -1574,7 +1575,6 @@ func newMailService() { | |||
| 		KeyFile:        sec.Key("KEY_FILE").String(), | ||||
| 		IsTLSEnabled:   sec.Key("IS_TLS_ENABLED").MustBool(), | ||||
| 
 | ||||
| 		UseSendmail:  sec.Key("USE_SENDMAIL").MustBool(), | ||||
| 		SendmailPath: sec.Key("SENDMAIL_PATH").MustString("sendmail"), | ||||
| 	} | ||||
| 	MailService.From = sec.Key("FROM").MustString(MailService.User) | ||||
|  | @ -1584,6 +1584,13 @@ func newMailService() { | |||
| 		MailService.SendAsPlainText = !sec.Key("ENABLE_HTML_ALTERNATIVE").MustBool(false) | ||||
| 	} | ||||
| 
 | ||||
| 	if sec.HasKey("USE_SENDMAIL") { | ||||
| 		log.Warn("USE_SENDMAIL is deprecated, use MAILER_TYPE=sendmail") | ||||
| 		if MailService.MailerType == "" && sec.Key("USE_SENDMAIL").MustBool(false) { | ||||
| 			MailService.MailerType = "sendmail" | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	parsed, err := mail.ParseAddress(MailService.From) | ||||
| 	if err != nil { | ||||
| 		log.Fatal(4, "Invalid mailer.FROM (%s): %v", MailService.From, err) | ||||
|  | @ -1591,7 +1598,11 @@ func newMailService() { | |||
| 	MailService.FromName = parsed.Name | ||||
| 	MailService.FromEmail = parsed.Address | ||||
| 
 | ||||
| 	if MailService.UseSendmail { | ||||
| 	if MailService.MailerType == "" { | ||||
| 		MailService.MailerType = "smtp" | ||||
| 	} | ||||
| 
 | ||||
| 	if MailService.MailerType == "sendmail" { | ||||
| 		MailService.SendmailArgs, err = shellquote.Split(sec.Key("SENDMAIL_ARGS").String()) | ||||
| 		if err != nil { | ||||
| 			log.Error(4, "Failed to parse Sendmail args: %v", CustomConf, err) | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue