--- stage: Systems group: Distribution info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments --- # SMTP settings DETAILS: **Tier:** Free, Premium, Ultimate **Offering:** Self-managed If you would rather send application email via an SMTP server instead of via Sendmail or Postfix, add the following configuration information to `/etc/gitlab/gitlab.rb` and run `gitlab-ctl reconfigure`. WARNING: Your `smtp_password` should not contain any String delimiters used in Ruby or YAML (f.e. `'`) to avoid unexpected behavior during the processing of config settings. There are [example configurations](#example-configurations) at the end of this page. ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.server" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "smtp user" gitlab_rails['smtp_password'] = "smtp password" gitlab_rails['smtp_domain'] = "example.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_openssl_verify_mode'] = 'peer' # If your SMTP server does not like the default 'From: gitlab@localhost' you # can change the 'From' with this setting. gitlab_rails['gitlab_email_from'] = 'gitlab@example.com' gitlab_rails['gitlab_email_reply_to'] = 'noreply@example.com' # If your SMTP server is using a self signed certificate or a certificate which # is signed by a CA which is not trusted by default, you can specify a custom ca file. # Please note that the certificates from /etc/gitlab/trusted-certs/ are # not used for the verification of the SMTP server certificate. gitlab_rails['smtp_ca_file'] = '/path/to/your/cacert.pem' ``` ## SMTP connection pooling You can enable SMTP connection pooling with the following setting: ```ruby gitlab_rails['smtp_pool'] = true ``` This allows Sidekiq workers to reuse SMTP connections for multiple jobs. The maximum number of connections in the pool follows the [maximum concurrency configuration for Sidekiq](https://docs.gitlab.com/ee/administration/sidekiq/extra_sidekiq_processes.html#concurrency). ## Using encrypted credentials Instead of storing the SMTP credentials in the configuration files as plain text, you can optionally use an encrypted file for the SMTP credentials. To use this feature, you first need to enable [GitLab encrypted configuration](https://docs.gitlab.com/ee/administration/encrypted_configuration.html). The encrypted configuration for SMTP exists in an encrypted YAML file. By default the file will be created at `/var/opt/gitlab/gitlab-rails/shared/encrypted_configuration/smtp.yaml.enc`. This location is configurable in the GitLab configuration. The unencrypted contents of the file should be a subset of the settings from your `smtp_*'` settings in the `gitlab_rails` configuration block. The supported configuration items for the encrypted file are: - `user_name` - `password` The encrypted contents can be configured with the [SMTP secret edit Rake command](https://docs.gitlab.com/ee/administration/raketasks/smtp.html). **Configuration** If initially your SMTP configuration looked like: 1. In `/etc/gitlab/gitlab.rb`: ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.server" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "smtp user" gitlab_rails['smtp_password'] = "smtp password" gitlab_rails['smtp_domain'] = "example.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_openssl_verify_mode'] = 'peer' ``` 1. Edit the encrypted secret: ```shell sudo gitlab-rake gitlab:smtp:secret:edit EDITOR=vim ``` 1. The unencrypted contents of the SMTP secret should be entered like: ```yaml user_name: 'smtp user' password: 'smtp password' ``` 1. Edit `/etc/gitlab/gitlab.rb` and remove the settings for `smtp_user_name` and `smtp_password`. 1. Reconfigure GitLab: ```shell sudo gitlab-ctl reconfigure ``` ## Example configurations ### SMTP on localhost This configuration, which simply enables SMTP and otherwise uses the default settings, can be used for an MTA running on localhost that does not provide a `sendmail` interface or that provides a `sendmail` interface that is incompatible with GitLab, such as Exim. ```ruby gitlab_rails['smtp_enable'] = true ``` ### SMTP without SSL By default SSL is enabled for SMTP. If your SMTP server does not support communication over SSL use following settings: ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = 'localhost' gitlab_rails['smtp_port'] = 25 gitlab_rails['smtp_domain'] = 'localhost' gitlab_rails['smtp_tls'] = false gitlab_rails['smtp_openssl_verify_mode'] = 'none' gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['smtp_ssl'] = false gitlab_rails['smtp_force_ssl'] = false ``` ### Gmail NOTE: Gmail has [strict sending limits](https://support.google.com/a/answer/166852) that can impair functionality as your organization grows. We strongly recommend using a transactional service like [SendGrid](https://sendgrid.com/en-us) or [Mailgun](https://www.mailgun.com/) for teams using SMTP configuration. ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.gmail.com" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "my.email@gmail.com" gitlab_rails['smtp_password'] = "my-gmail-password" gitlab_rails['smtp_domain'] = "smtp.gmail.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = false gitlab_rails['smtp_openssl_verify_mode'] = 'peer' # Can be: 'none', 'peer', 'client_once', 'fail_if_no_peer_cert', see http://api.rubyonrails.org/classes/ActionMailer/Base.html ``` _Don't forget to change `my.email@gmail.com` to your email address and `my-gmail-password` to your own password._ _If you encounter authentication errors, ensure you have [allowed less secure apps to access the account](https://support.google.com/accounts/answer/6010255) or try [turning on 2-step validation](https://support.google.com/accounts/answer/185839) and using [an application password](https://support.google.com/mail/answer/185833)._ ### Google SMTP relay You can route outgoing non-Gmail messages through Google [using Google's SMTP relay service](https://support.google.com/a/answer/2956491?hl=en). ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp-relay.gmail.com" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_domain'] = "yourdomain.com" gitlab_rails['gitlab_email_from'] = 'username@yourdomain.com' gitlab_rails['gitlab_email_reply_to'] = 'username@yourdomain.com' ``` ### Mailgun ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.mailgun.org" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_authentication'] = "plain" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_user_name'] = "postmaster@mg.gitlab.com" gitlab_rails['smtp_password'] = "password" gitlab_rails['smtp_domain'] = "mg.gitlab.com" ``` ### Amazon Simple Email Service (AWS SES) - Using STARTTLS ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "email-smtp.region-1.amazonaws.com" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "IAMmailerKey" gitlab_rails['smtp_password'] = "IAMmailerSecret" gitlab_rails['smtp_domain'] = "yourdomain.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true ``` Make sure to permit egress through port 587 in your ACL and security group. - Using TLS Wrapper ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "email-smtp.region-1.amazonaws.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "IAMmailerKey" gitlab_rails['smtp_password'] = "IAMmailerSecret" gitlab_rails['smtp_domain'] = "yourdomain.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_ssl'] = true gitlab_rails['smtp_force_ssl'] = true ``` Make sure to permit egress through port 465 in your ACL and security group. ### Mandrill ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.mandrillapp.com" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "MandrillUsername" gitlab_rails['smtp_password'] = "MandrillApiKey" # https://mandrillapp.com/settings gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true ``` ### SMTP.com You can use the [SMTP.com](https://www.smtp.com/) email service. [Retrieve your sender login and password](https://kb.smtp.com/article/1043-my-account-1) from your account. To improve delivery by authorizing `SMTP.com` to send emails on behalf of your domain, you should: - Specify `from` and `reply_to` addresses using your GitLab domain name. - [Set up SPF and DKIM for the domain](https://kb.smtp.com/article/1039-email-authentication-spf-dkim-dmarc). ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = 'send.smtp.com' gitlab_rails['smtp_port'] = 25 # If your outgoing port 25 is blocked, try 2525, 2082 gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_authentication'] = 'plain' gitlab_rails['smtp_user_name'] = 'your_sender_login' gitlab_rails['smtp_password'] = 'your_sender_password' gitlab_rails['smtp_domain'] = 'your.gitlab.domain.com' gitlab_rails['gitlab_email_from'] = 'user@your.gitlab.domain.com' gitlab_rails['gitlab_email_reply_to'] = 'user@your.gitlab.domain.com' ``` Check the [SMTP.com Knowledge Base](https://kb.smtp.com/) for further assistance. ### SparkPost ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.sparkpostmail.com" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "SMTP_Injection" gitlab_rails['smtp_password'] = "SparkPost_API_KEY" # https://app.sparkpost.com/account/credentials gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true ``` ### Gandi ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "mail.gandi.net" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_authentication'] = "plain" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_user_name'] = "your.email@domain.com" gitlab_rails['smtp_password'] = "your.password" gitlab_rails['smtp_domain'] = "domain.com" ``` ### Zoho Mail This configuration was tested on Zoho Mail with a custom domain. ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.zoho.com" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_authentication'] = "plain" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_user_name'] = "gitlab@mydomain.com" gitlab_rails['smtp_password'] = "mypassword" gitlab_rails['smtp_domain'] = "smtp.zoho.com" gitlab_rails['gitlab_email_from'] = 'gitlab@example.com' gitlab_rails['gitlab_email_reply_to'] = 'noreply@example.com' ``` ### SiteAge, LLC Zimbra Mail ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = 'mail.siteage.net' gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = 'gitlab@domain.com' gitlab_rails['smtp_password'] = 'password' gitlab_rails['smtp_authentication'] = 'login' gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['gitlab_email_from'] = "gitlab@domain.com" gitlab_rails['smtp_tls'] = true ``` ### OVH ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "ssl0.ovh.net" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "username@domain.com" gitlab_rails['smtp_password'] = "password" gitlab_rails['smtp_domain'] = "ssl0.ovh.net" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['smtp_tls'] = true gitlab_rails['smtp_openssl_verify_mode'] = 'none' ``` ### Outlook ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp-mail.outlook.com" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "username@outlook.com" gitlab_rails['smtp_password'] = "password" gitlab_rails['smtp_domain'] = "smtp-mail.outlook.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_openssl_verify_mode'] = 'peer' ``` ### Office365 ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.office365.com" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "username@yourdomain.com" gitlab_rails['smtp_password'] = "password" gitlab_rails['smtp_domain'] = "yourdomain.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_openssl_verify_mode'] = 'peer' gitlab_rails['gitlab_email_from'] = 'username@yourdomain.com' ``` ### Office365 relay ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "your mx endpoint" gitlab_rails['smtp_port'] = 25 gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_domain'] = "yourdomain.com" gitlab_rails['gitlab_email_from'] = 'username@yourdomain.com' gitlab_rails['gitlab_email_reply_to'] = 'noreply@yourdomain.com' ``` ### Online.net ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtpauth.online.net" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "username@domain.com" gitlab_rails['smtp_password'] = "password" gitlab_rails['smtp_domain'] = "online.net" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['smtp_tls'] = true gitlab_rails['smtp_openssl_verify_mode'] = 'none' ``` ### Amen.fr / Securemail.pro ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp-fr.securemail.pro" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "username@domain.com" gitlab_rails['smtp_password'] = "password" gitlab_rails['smtp_tls'] = true ``` ### 1&1 ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.1and1.com" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "my.email@domain.com" gitlab_rails['smtp_password'] = "1and1-email-password" gitlab_rails['smtp_domain'] = "domain.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true ``` ### yahoo ```ruby gitlab_rails['gitlab_email_from'] = 'user@yahoo.com' gitlab_rails['gitlab_email_reply_to'] = 'user@yahoo.com' gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.mail.yahoo.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "user@yahoo.com" gitlab_rails['smtp_password'] = "password" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['smtp_tls'] = true gitlab_rails['smtp_openssl_verify_mode'] = 'peer' ``` ### QQ exmail QQ exmail (腾讯企业邮箱) ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.exmail.qq.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "xxxx@xx.com" gitlab_rails['smtp_password'] = "password" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['smtp_tls'] = true gitlab_rails['gitlab_email_from'] = 'xxxx@xx.com' gitlab_rails['smtp_domain'] = "exmail.qq.com" ``` ### NetEase Free Enterprise Email NetEase Free Enterprise Email (网易免费企业邮) ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.ym.163.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "xxxx@xx.com" gitlab_rails['smtp_password'] = "password" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['smtp_tls'] = true gitlab_rails['gitlab_email_from'] = 'xxxx@xx.com' gitlab_rails['smtp_domain'] = "smtp.ym.163.com" ``` ### SendGrid with username/password authentication ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.sendgrid.net" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "a_sendgrid_crendential" gitlab_rails['smtp_password'] = "a_sendgrid_password" gitlab_rails['smtp_domain'] = "smtp.sendgrid.net" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = false ``` ### SendGrid with API Key authentication If you don't want to supply a username/password, you can use an [API key](https://docs.sendgrid.com/for-developers/sending-email/getting-started-smtp): ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.sendgrid.net" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "apikey" gitlab_rails['smtp_password'] = "the_api_key_you_created" gitlab_rails['smtp_domain'] = "smtp.sendgrid.net" gitlab_rails['smtp_authentication'] = "plain" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = false # If use Single Sender Verification You must configure from. If not fail # 550 The from address does not match a verified Sender Identity. Mail cannot be sent until this error is resolved. # Visit https://sendgrid.com/docs/for-developers/sending-email/sender-identity/ to see the Sender Identity requirements gitlab_rails['gitlab_email_from'] = 'email@sender_owner_api' gitlab_rails['gitlab_email_reply_to'] = 'email@sender_owner_reply_api' ``` Note that `smtp_user_name` must literally be set to `"apikey"`. The API Key you created must be entered in `smtp_password`. ### Brevo This configuration was tested with the Brevo [SMTP relay service](hhttps://www.brevo.com/free-smtp-server/). To grab the relevant account credentials via the URLs commented into this example, [log in to your Brevo account](https://login.brevo.com). For further details, refer to the Brevo [help page](https://help.brevo.com/hc/en-us/articles/209462765-What-is-Brevo-SMTP). ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp-relay.sendinblue.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "" # https://app.brevo.com/settings/keys/smtp gitlab_rails['smtp_password'] = "" # https://app.brevo.com/settings/keys/smtp gitlab_rails['smtp_domain'] = "" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['smtp_tls'] = true gitlab_rails['gitlab_email_from'] = '' gitlab_rails['gitlab_email_reply_to'] = '' ``` ### SMTP2GO This configuration was tested using [SMTP2GO](https://www.smtp2go.com/). To get the relevant account credentials using the URLs commented in this example, [sign in to your SMTP2GO account](https://app.smtp2go.com/login/). ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "mail.smtp2go.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "" # https://app.smtp2go.com/settings/users gitlab_rails['smtp_password'] = "" # https://app.smtp2go.com/settings/users gitlab_rails['smtp_domain'] = "" # https://app.smtp2go.com/settings/sender_domains gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['smtp_tls'] = true ``` ### Yandex ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.yandex.ru" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "login" gitlab_rails['smtp_password'] = "password" gitlab_rails['smtp_domain'] = "yourdomain_or_yandex.ru" gitlab_rails['gitlab_email_from'] = 'login_or_login@yandex.ru' gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_tls'] = true gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['smtp_openssl_verify_mode'] = 'peer' ``` ### UD Media ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "mail.udXX.udmedia.de" # Replace XX, see smtp server information: https://www.udmedia.de/login/mail/ gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "login" gitlab_rails['smtp_password'] = "password" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_openssl_verify_mode'] = 'peer' ``` ### Microsoft Exchange (no authentication) ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "example.com" gitlab_rails['smtp_port'] = 25 gitlab_rails['smtp_domain'] = "example.com" gitlab_rails['smtp_enable_starttls_auto'] = true ``` ### Microsoft Exchange (with authentication) ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "mail.example.com" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "username@domain.com" gitlab_rails['smtp_password'] = 'password' gitlab_rails['smtp_domain'] = "mail.example.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true ``` ### Strato.de ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.strato.de" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "username@stratodomain.de" gitlab_rails['smtp_password'] = "strato_email_password" gitlab_rails['smtp_domain'] = "stratodomain.de" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['smtp_tls'] = true gitlab_rails['smtp_openssl_verify_mode'] = 'none' ``` ### Rackspace ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "secure.emailsrvr.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "username@domain.com" gitlab_rails['smtp_password'] = "password" gitlab_rails['smtp_domain'] = "domain.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['smtp_tls'] = true gitlab_rails['smtp_openssl_verify_mode'] = 'peer' gitlab_rails['gitlab_email_from'] = 'username@domain.com' gitlab_rails['gitlab_email_reply_to'] = 'username@domain.com' ``` ### DomainFactory (df.eu) ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "sslout.df.eu" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "username@domain.com" gitlab_rails['smtp_password'] = "password" gitlab_rails['smtp_domain'] = "domain.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['smtp_tls'] = true gitlab_rails['smtp_openssl_verify_mode'] = 'none' ``` ### Infomaniak (infomaniak.com) ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "mail.infomaniak.com" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "username" gitlab_rails['smtp_password'] = "password" gitlab_rails['smtp_domain'] = "mail.infomaniak.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = false gitlab_rails['smtp_openssl_verify_mode'] = 'none' ``` ### GoDaddy (TLS) - European servers: smtpout.europe.secureserver.net - Asian servers: smtpout.asia.secureserver.net - Global (US) servers: smtpout.secureserver.net ```ruby gitlab_rails['gitlab_email_from'] = 'username@domain.com' gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtpout.secureserver.net" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "username@domain.com" gitlab_rails['smtp_password'] = "password" gitlab_rails['smtp_domain'] = "domain.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['smtp_tls'] = true ``` ### GoDaddy (No TLS) See GoDaddy (TLS) entry above for mail server list. ```ruby gitlab_rails['gitlab_email_from'] = 'username@domain.com' gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtpout.secureserver.net" gitlab_rails['smtp_port'] = 80 gitlab_rails['smtp_user_name'] = "username@domain.com" gitlab_rails['smtp_password'] = "password" gitlab_rails['smtp_domain'] = "domain.com" gitlab_rails['smtp_authentication'] = "plain" gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['smtp_tls'] = false ``` ### OpenSRS (hostedemail.com) ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "mail.hostedemail.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "username@domain.com" gitlab_rails['smtp_password'] = "password" gitlab_rails['smtp_domain'] = "domain.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_tls'] = true gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['smtp_openssl_verify_mode'] = 'peer' gitlab_rails['gitlab_email_from'] = 'username@domain.com' gitlab_rails['gitlab_email_reply_to'] = 'username@domain.com' ``` ### Aruba (aruba.it) ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtps.aruba.it" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "user@yourdomain.com" gitlab_rails['smtp_password'] = "password" gitlab_rails['smtp_domain'] = "yourdomain.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_ssl'] = true ``` ### Alibaba Cloud Direct Mail (No TLS) ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtpdm-ap-southeast-1.aliyun.com" # Set to the Direct Mail service region in use, refer to: https://www.alibabacloud.com/help/en/directmail/latest/smtp-service-address gitlab_rails['smtp_port'] = 80 gitlab_rails['smtp_user_name'] = "" # Direct Mail sender address gitlab_rails['smtp_password'] = "" # Set Direct Mail password gitlab_rails['smtp_domain'] = "" # Email domain configured in Direct Mail gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['smtp_tls'] = false gitlab_rails['smtp_openssl_verify_mode'] = 'none' gitlab_rails['gitlab_email_from'] = "" # Email domain configured in Direct Mail ``` ### Alibaba Cloud Direct Mail (TLS) ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtpdm-ap-southeast-1.aliyun.com" # Set to the Direct Mail service region in use, refer to: https://www.alibabacloud.com/help/en/directmail/latest/smtp-service-address gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "" # Direct Mail sender address gitlab_rails['smtp_password'] = "" # Set Direct Mail password gitlab_rails['smtp_domain'] = "" # Email domain configured in Direct Mail gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['smtp_tls'] = true gitlab_rails['gitlab_email_from'] = "" # Email domain configured in Direct Mail ``` ### Aliyun Direct Mail Aliyun Direct Mail (阿里云邮件推送) ```ruby gitlab_rails['gitlab_email_from'] = 'username@your domain' gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtpdm.aliyun.com" gitlab_rails['smtp_port'] = 80 gitlab_rails['smtp_user_name'] = "username@your domain" gitlab_rails['smtp_password'] = "password" gitlab_rails['smtp_domain'] = "your domain" gitlab_rails['smtp_authentication'] = "login" ``` ### Aliyun Enterprise Mail with TLS Aliyun Enterprise Mail with TLS (阿里企业邮箱) ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.qiye.aliyun.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "username@your domain" gitlab_rails['smtp_password'] = "password" gitlab_rails['smtp_domain'] = "your domain" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['smtp_tls'] = true ``` ### FastMail FastMail requires an [App Password](https://www.fastmail.help/hc/en-us/articles/360058752854-App-passwords) even when two-step verification is not enabled. ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.fastmail.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "account@fastmail.com" gitlab_rails['smtp_password'] = "app-specific-password" gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['smtp_tls'] = true gitlab_rails['smtp_openssl_verify_mode'] = 'peer' ``` ### Dinahosting ```ruby gitlab_rails['gitlab_email_from'] = 'username@example.com' gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "example-com.correoseguro.dinaserver.com" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "username-example-com" gitlab_rails['smtp_password'] = "mypassword" gitlab_rails['smtp_domain'] = "example-com.correoseguro.dinaserver.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['smtp_tls'] = false gitlab_rails['smtp_openssl_verify_mode'] = 'peer' ``` ### GMX Mail ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "mail.gmx.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "my-gitlab@gmx.com" gitlab_rails['smtp_password'] = "Pa5svv()rD" gitlab_rails['smtp_domain'] = "mail.gmx.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['smtp_tls'] = true gitlab_rails['smtp_openssl_verify_mode'] = 'peer' ### Email Settings gitlab_rails['gitlab_email_enabled'] = true gitlab_rails['gitlab_email_from'] = 'my-gitlab@gmx.com' gitlab_rails['gitlab_email_display_name'] = 'My GitLab' gitlab_rails['gitlab_email_reply_to'] = 'noreply@gmx.com' ``` ### Hetzner ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "mail.your-server.de" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "user@example.com" gitlab_rails['smtp_password'] = "mypassword" gitlab_rails['smtp_domain'] = "mail.your-server.de" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = false gitlab_rails['gitlab_email_from'] = "example@example.com" ``` ### Snel.com ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtprelay.snel.com" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_domain'] = "example.com" gitlab_rails['smtp_authentication'] = false gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = false gitlab_rails['gitlab_email_from'] = "example@example.com" gitlab_rails['gitlab_email_reply_to'] = "example@example.com" ``` ### JangoSMTP ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "express-relay.jangosmtp.net" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_authentication'] = "plain" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_user_name'] = "your.username" gitlab_rails['smtp_password'] = "your.password" gitlab_rails['smtp_domain'] = "domain.com" gitlab_rails['gitlab_email_from'] = 'gitlab@domain.com' gitlab_rails['gitlab_email_reply_to'] = 'noreply@domain.com' ``` ### Mailjet ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "in-v3.mailjet.com" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "mailjet-api-key" gitlab_rails['smtp_password'] = "mailjet-secret-key" gitlab_rails['smtp_domain'] = "in-v3.mailjet.com" gitlab_rails['smtp_authentication'] = "plain" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = false gitlab_rails['gitlab_email_from'] = 'gitlab@domain.com' gitlab_rails['gitlab_email_reply_to'] = 'noreply@domain.com' ``` ### Mailcow ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.example.com" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "yourmail@example.com" gitlab_rails['smtp_password'] = "yourpassword" gitlab_rails['smtp_domain'] = "smtp.example.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = false gitlab_rails['smtp_openssl_verify_mode'] = 'none' ``` ### ALL-INKL.COM ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = ".kasserver.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "" gitlab_rails['smtp_password'] = "" gitlab_rails['smtp_domain'] = "" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_tls'] = true ``` ### webgo.de ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "sXX.goserver.host" # or serverXX.webgo24.de gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "webXXXpX" gitlab_rails['smtp_password'] = "Your Password" gitlab_rails['smtp_domain'] = "sXX.goserver.host" # or serverXX.webgo24.de gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['gitlab_email_from'] = 'Your Mail Address' gitlab_rails['gitlab_email_reply_to'] = 'Your Mail Address' ``` ### mxhichina.com ```ruby gitlab_rails['gitlab_email_from'] = "username@company.com" gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.mxhichina.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "username@company.com" gitlab_rails['smtp_password'] = "password" gitlab_rails['smtp_domain'] = "mxhichina.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['smtp_tls'] = true ``` ### Postmark ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.postmarkapp.com" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "your_api_token" gitlab_rails['smtp_password'] = "your_api_token" gitlab_rails['smtp_domain'] = "example.com" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = false gitlab_rails['gitlab_email_from'] = 'gitlab@example.com' gitlab_rails['gitlab_email_reply_to'] = 'noreply@example.com' ``` ### easyDNS (outbound mail) Check if it's available/enabled and configuration settings in the [control panel](https://cp.easydns.com/manage/domains/mail/outbound/). ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "mailout.easydns.com" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_force_ssl'] = true gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_user_name'] = "example.com" gitlab_rails['smtp_domain'] = "example.com" gitlab_rails['smtp_password'] = "password_you_set" gitlab_rails['gitlab_email_from'] = 'no-reply@git.example.com' ``` ### Campaign Monitor ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.api.createsend.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "your_api_token" # Menu > Transactional > Send with SMTP > SMTP tokens > Token gitlab_rails['smtp_password'] = "your_api_token" # Same as gitlab_rails['smtp_user_name'] value gitlab_rails['smtp_domain'] = "example.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = false gitlab_rails['smtp_openssl_verify_mode'] = 'peer' gitlab_rails['gitlab_email_from'] = 'gitlab@example.com' gitlab_rails['gitlab_email_reply_to'] = 'noreply@example.com' ``` ### Freehostia ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "mbox.freehostia.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "username@example.com" gitlab_rails['smtp_password'] = "password_you_set" gitlab_rails['smtp_domain'] = "mbox.freehostia.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['smtp_tls'] = true gitlab_rails['smtp_openssl_verify_mode'] = 'none' ``` ### Mailbox.org ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.mailbox.org" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "username@example.com" gitlab_rails['smtp_password'] = "password_you_set" gitlab_rails['smtp_domain'] = "smtp.mailbox.org" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['smtp_tls'] = true gitlab_rails['smtp_openssl_verify_mode'] = 'none' ``` ### Mittwald CM Service (mittwald.de) ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "mail.agenturserver.de" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "username@example.com" gitlab_rails['smtp_password'] = "password_you_set" gitlab_rails['smtp_domain'] = "example.com" gitlab_rails['smtp_authentication'] = "plain" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['gitlab_email_from'] = "username@example.com" gitlab_rails['gitlab_email_reply_to'] = "username@example.com" ``` ### Unitymedia (.de) ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "submit.unitybox.de" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "username@unitybox.de" gitlab_rails['smtp_password'] = "yourPassword" gitlab_rails['smtp_domain'] = "submit.unitybox.de" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = false gitlab_rails['smtp_openssl_verify_mode'] = 'none' gitlab_rails['gitlab_email_from'] = 'gitlab@example.com' gitlab_rails['gitlab_email_reply_to'] = 'noreply@example.com' ``` ### united-domains AG (united-domains.de) ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.udag.de" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "example-com-0001" gitlab_rails['smtp_password'] = "smtppassword" gitlab_rails['smtp_domain'] = "example.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['smtp_tls'] = true gitlab_rails['smtp_openssl_verify_mode'] = 'peer' gitlab_rails['gitlab_email_enabled'] = true gitlab_rails['gitlab_email_from'] = 'gitlab@example.com' gitlab_rails['gitlab_email_display_name'] = 'GitLab - my company' gitlab_rails['gitlab_email_reply_to'] = 'noreply@example.com' ``` ### IONOS by 1&1 (ionos.de) ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.ionos.de" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "your-user@your-domain.de" gitlab_rails['smtp_password'] = "Y0uR_Pass_H3r3" gitlab_rails['smtp_domain'] = "your-domain.de" gitlab_rails['smtp_authentication'] = 'login' gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = false gitlab_rails['smtp_openssl_verify_mode'] = 'none' gitlab_rails['gitlab_email_from'] = 'your-user@your-domain.de' ``` ### AWS Workmail From the [AWS workmail documentation](https://docs.aws.amazon.com/workmail/latest/userguide/using_IMAP_client.html): ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.server" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "smtp user" gitlab_rails['smtp_password'] = "smtp password" gitlab_rails['smtp_domain'] = "example.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['smtp_tls'] = true gitlab_rails['smtp_openssl_verify_mode'] = 'peer' ``` ### Open Telekom Cloud ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "login-cloud.mms.t-systems-service.com" gitlab_rails['smtp_port'] = 25 gitlab_rails['smtp_domain'] = "yourdomain" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_user_name'] = "username" gitlab_rails['smtp_password'] = "password" gitlab_rails['gitlab_email_from'] = 'gitlab@yourdomain' ``` ### Uberspace 6 From the [Uberspace Wiki](https://manual.uberspace.de/): ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = ".uberspace.de" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "@" gitlab_rails['smtp_password'] = "" gitlab_rails['smtp_domain'] = "" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = false ``` ### Tipimail ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = 'smtp.tipimail.com' gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = 'username' gitlab_rails['smtp_password'] = 'password' gitlab_rails['smtp_authentication'] = 'login' gitlab_rails['smtp_enable_starttls_auto'] = true ``` ### Netcup ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = '.netcup.net' gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "username" gitlab_rails['smtp_password'] = "password" gitlab_rails['smtp_domain'] = "" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true # Netcup is picky about the usage of GitLab's TLD instead of the subdomain (if you use one). # If this is not set up correctly, the scheduled emails will fail. For example, if # GitLab's domain name is 'gitlab.example.com', the following setting should be set to # 'gitlab@example.com'. gitlab_rails['gitlab_email_from'] = "gitlab@" ``` ### Mail-in-a-Box ```ruby gitlab_rails['gitlab_email_enabled'] = true gitlab_rails['gitlab_email_from'] = 'gitlab@example.com' gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = 'box.example.com' gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "username@example.com" gitlab_rails['smtp_password'] = "password" gitlab_rails['smtp_domain'] = "" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true ``` ### NIFCLOUD ESS [SMTP Interface](https://pfs.nifcloud.com/spec/ess/smtp.htm). ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.ess.nifcloud.com" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "SMTP user name" gitlab_rails['smtp_password'] = "SMTP user password" gitlab_rails['smtp_domain'] = "smtp.ess.nifcloud.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = false gitlab_rails['smtp_openssl_verify_mode'] = 'peer' gitlab_rails['gitlab_email_from'] = 'username@example.com' gitlab_rails['gitlab_email_reply_to'] = 'username@example.com' ``` Check the SMTP user name and SMTP user password from the ESS [dashboard](https://docs.nifcloud.com/ess/help/dashboard.htm). `gitlab_email_from` and `gitlab_email_reply_to` must be ESS authenticated sender email addresses. ### Sina mail User needs first to enabled SMTP through the mailbox settings via web mail interface and get the authenitication code. Check out more details in the [help page](http://help.sina.com.cn/comquestiondetail/view/1566/) of Sina mail. ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.sina.com" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "username@sina.com" gitlab_rails['smtp_password'] = "authentication code" gitlab_rails['smtp_domain'] = "smtp.sina.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['gitlab_email_from'] = 'username@sina.com' ``` ### Feishu mail Check out more details in the [help page](https://www.feishu.cn/hc/en-US/articles/360049068017-admin-allow-members-to-access-feishu-mail-using-third-party-email-clients) of Feishu mail. ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.feishu.cn" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "your-user@your-domain" gitlab_rails['gitlab_email_from'] = "username@yourdomain.com" gitlab_rails['smtp_domain'] = "yourdomain.com" gitlab_rails['smtp_password'] = "authentication code" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['smtp_tls'] = true ``` ### Hostpoint For more information about Hostpoint email visit their [help page](https://support.hostpoint.ch/en/technical/e-mail/frequently-asked-questions/e-mail-settings-at-a-glance#hp-section3) ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "asmtp.mail.hostpoint.ch" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "username@example.com" gitlab_rails['smtp_password'] = "authentication code" gitlab_rails['smtp_domain'] = "asmtp.mail.hostpoint.ch" gitlab_rails['smtp_authentication'] = "plain" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['gitlab_email_from'] = 'username@example.com' ``` ### Fastweb (fastweb.it) ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.fastwebnet.it" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "your_fastweb_fastmail_username@fastwebnet.it" gitlab_rails['smtp_password'] = "your_fastweb_fastmail_password" gitlab_rails['smtp_domain'] = "smtp.fastwebnet.it" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = false gitlab_rails['smtp_openssl_verify_mode'] = 'none' ``` ### Scaleway Transactional Email Read more about [Scaleway's Transactional Email](https://www.scaleway.com/en/docs/managed-services/transactional-email/how-to/generate-api-keys-for-tem-with-iam/). ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.tem.scw.cloud" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "transactional_email_user_name" gitlab_rails['smtp_password'] = "secret_key_of_api_key" gitlab_rails['smtp_authentication'] = "plain" gitlab_rails['smtp_enable_starttls_auto'] = true ``` ### Proton Mail Proton documentation: [How to set up SMTP to use business applications or devices with Proton Mail](https://proton.me/support/smtp-submission) ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.protonmail.ch" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_authentication'] = "plain" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_user_name'] = "" gitlab_rails['smtp_password'] = "" gitlab_rails['smtp_domain'] = "" gitlab_rails['gitlab_email_from'] = "" gitlab_rails['gitlab_email_reply_to'] = "" ``` ### More examples are welcome If you have figured out an example configuration yourself please send a Merge Request to save other people time. ## Testing the SMTP configuration You can verify that GitLab can send emails properly using the Rails console. On the GitLab server, execute `gitlab-rails console` to enter the console. Then, you can enter the following command at the console prompt to cause GitLab to send a test email: ```ruby Notify.test_email('destination_email@address.com', 'Message Subject', 'Message Body').deliver_now ``` ## Troubleshooting ### Outgoing connections to port 25 is blocked on major cloud providers If you are using a cloud provider to host your GitLab instance and you are using port 25 for your SMTP server, it is possible that your cloud provider is blocking outgoing connections to port 25. This prevents GitLab from sending any outgoing mail. You can follow the instructions below to work around this depending on your cloud provider: - AWS: [How do I remove the restriction on port 25 from my Amazon EC2 instance or AWS Lambda function?](https://repost.aws/knowledge-center/ec2-port-25-throttle) - Azure: [Troubleshoot outbound SMTP connectivity problems in Azure](https://learn.microsoft.com/en-us/azure/virtual-network/troubleshoot-outbound-smtp-connectivity) - GCP: [Sending email from an instance](https://cloud.google.com/compute/docs/tutorials/sending-mail) ### Wrong version number when using SSL/TLS Many users run into the following error after configuring SMTP: ```plaintext OpenSSL::SSL::SSLError (SSL_connect returned=1 errno=0 state=error: wrong version number) ``` This error is usually due to incorrect settings: - If your SMTP provider is using port 25 or 587, SMTP connections start **unencrypted** but can be upgraded via [STARTTLS](https://en.wikipedia.org/wiki/Opportunistic_TLS). Be sure the following settings are set: ```ruby gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = false # This is the default and can be omitted gitlab_rails['smtp_ssl'] = false # This is the default and can be omitted ``` - If your SMTP provider is using port 465, SMTP connections start **encrypted** over TLS. Ensure the following line is present: ```ruby gitlab_rails['smtp_tls'] = true ``` For more details, read [about the confusion over SMTP ports, TLS, and STARTTLS](https://www.fastmail.help/hc/en-us/articles/360058753834-SSL-TLS-and-STARTTLS). ### Emails not sending when using external Sidekiq If your instance has [an external Sidekiq](https://docs.gitlab.com/ee/administration/sidekiq/index.html) configured, the SMTP configuration must be present in `/etc/gitlab/gitlab.rb` on the external Sidekiq server. If the SMTP configuration is missing, you may notice that emails do not get sent through SMTP as many GitLab emails are sent via Sidekiq. ### Emails not sending when using Sidekiq routing rules If you are using Sidekiq [routing rules](https://docs.gitlab.com/ee/administration/sidekiq/processing_specific_job_classes.html#routing-rules), your configuration might be missing the `mailers` queue which is required for outgoing mail. For more details, review the [example configuration](https://docs.gitlab.com/ee/administration/sidekiq/processing_specific_job_classes.html#detailed-example). ### Email not sent WARNING: Any command that changes data directly could be damaging if not run correctly, or under the right conditions. We highly recommend running them in a test environment with a backup of the instance ready to be restored, just in case. If you have correctly configured an email server, but email is not sent: 1. Run a [Rails console](https://docs.gitlab.com/ee/administration/operations/rails_console.html#starting-a-rails-console-session). 1. Check the `ActionMailer` `delivery_method`. It must match the type of server you're using, either `:smtp` for an SMTP server or `:sendmail` for Sendmail: intended. If you configured SMTP, it should say `:smtp`. If you're using Sendmail, it should say `:sendmail`: ```ruby irb(main):001:0> ActionMailer::Base.delivery_method => :smtp ``` 1. If you're using SMTP, check the mail settings: ```ruby irb(main):002:0> ActionMailer::Base.smtp_settings => {:address=>"localhost", :port=>25, :domain=>"localhost.localdomain", :user_name=>nil, :password=>nil, :authentication=>nil, :enable_starttls_auto=>true} ``` In the example above, the SMTP server is configured for the local machine. If this is intended, check your local mail logs (for example, `/var/log/mail.log`) for more details. 1. Send a test message using the console: ```ruby irb(main):003:0> Notify.test_email('youremail@email.com', 'Hello World', 'This is a test message').deliver_now ``` If you do not receive an email or see an error message, check your mail server settings. ### Email not sent when using STARTTLS and SMTP TLS You may encounter the following error if both STARTTLS and SMTP TLS are enabled: ```plaintext :enable_starttls and :tls are mutually exclusive. Set :tls if you're on an SMTPS connection. Set :enable_starttls if you're on an SMTP connection and using STARTTLS for secure TLS upgrade. ``` This error occurs when both `gitlab_rails['smtp_enable_starttls_auto']` and `gitlab_rails['smtp_tls']` are set to `true`. If using SMTPS, set `gitlab_rails['smtp_enable_starttls_auto']` to `false`. If using SMTP with STARTTLS, set `gitlab_rails['smtp_tls']` to `false`. Run `sudo gitlab-ctl reconfigure` for the change to take effect. ## Disable all outgoing email NOTE: This will disable **all** outgoing email from your GitLab instance, including but not limited to notification emails, direct mentions, and password reset emails. In order to disable **all** outgoing email, you can edit or add the following line to `/etc/gitlab/gitlab.rb`: ```ruby gitlab_rails['gitlab_email_enabled'] = false ``` Run `sudo gitlab-ctl reconfigure` for the change to take effect.