GitLab + MailKite
GitLab is a complete DevOps platform. Point its SMTP at MailKite and every merge request, pipeline notification, and invite goes out over your own DKIM-signed domain.
What you need
- A verified domain with SPF + DKIM published
- Your API key (
mk_live_…) - GitLab self-hosted (Omnibus or source install)
Configure SMTP
For Omnibus installations, edit /etc/gitlab/gitlab.rb. For source installations, edit config/gitlab.yml. Add the SMTP configuration block with MailKite credentials.
| SMTP Host | smtp.mailkite.dev |
| SMTP Port | 587 |
| Encryption | TLS (STARTTLS) |
| Username | mailkite |
| Password | Your API key (mk_live_…) |
| From Address | gitlab@yourdomain.com (on a verified domain) |
/etc/gitlab/gitlab.rb
# /etc/gitlab/gitlab.rb (Omnibus) or gitlab.yml
gitlab_rails['smtp_address'] = "smtp.mailkite.dev"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "mailkite"
gitlab_rails['smtp_password'] = "mk_live_..."
gitlab_rails['smtp_domain'] = "yourdomain.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['gitlab_email_from'] = 'gitlab@yourdomain.com' Test it
Invite a new user to your GitLab instance or trigger a pipeline notification. Check your MailKite dashboard to confirm the message was relayed.
Troubleshooting
- Emails not sending — confirm the
gitlab_email_fromaddress is on a verified domain. - 535 Authentication failed — your password must be your
mk_live_…API key, not a separate SMTP password. - Omnibus reconfigure — after editing
gitlab.rb, rungitlab-ctl reconfigurefor changes to take effect. - GitLab.com — GitLab.com does not support custom SMTP. Use GitLab self-hosted for MailKite integration.
See the SMTP relay docs for the full connection reference, or all integrations for other platforms.