Smtp in Gitlab
Для GitLab CE (self-hosted) у тебя на выбор куча SMTP-серверов — всё зависит от того, какие требования к доставке писем и что у тебя уже есть под рукой. GitLab не привязан к конкретному почтовику, он просто шлёт через любой стандартный SMTP. Типичные варианты:
- Корпоративный SMTP
- Если в компании есть свой Exchange / Postfix / Exim — лучше всего использовать его.
- Плюс: контроль, логирование, никаких лишних сюрпризов.
- Минус: нужно настраивать доступ.
- Облачные SMTP-сервисы
- Gmail (smtp.gmail.com) — но там заморочки с паролями приложений и лимитами.
- Yandex 360 (smtp.yandex.com / smtp.yandex.ru).
- Mail.ru — тоже можно, но осторожно с блокировками.
- Любой специализированный сервис: SendGrid, Mailgun, Postmark.
- Плюс: хорошая доставляемость.
- Минус: обычно лимиты бесплатные, а дальше деньги.
- Свой почтовик рядом с GitLab
- Поднять Postfix/Dovecot на том же сервере или рядом и настроить его как relay.
- Плюс: полный контроль, можно завернуть через DKIM/SPF/DMARC.
- Минус: надо уметь админить почтовики (а это отдельный вид спорта).
📌 В gitlab.rb
настраиваешь так (пример для Gmail):
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.gmail.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "[email protected]"
gitlab_rails['smtp_password'] = "your_app_password"
gitlab_rails['smtp_domain'] = "gmail.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
Потом:
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
👉 Если у тебя GitLab для команды/компании — лучше настроить корпоративный SMTP или хотя бы выделенный ящик в Яндексе/Google/Mailgun. Gmail и подобные для “боевого” GitLab быстро упрёшься в лимиты (500 писем в день). Хочешь, я скину готовый пример конфига под Postfix локально + relay через внешний SMTP (чтобы GitLab не светил свой айпишник напрямую)?
А свой SMTP-сервер рядом с GitLab даёт тебе полный контроль и избавляет от “капризов” Gmail/Yandex. 🚀
Но тут главное — не увязнуть в джунглях почтовых демонов 😅
Самые популярные варианты:
Postfix
-
📦 Самый распространённый, дефолт в Linux.
-
👍 Прост в настройке в роли “relay” (т.е. просто пересылает почту наружу через какой-то внешний SMTP или напрямую).
-
👎 Если захочешь полноценный почтовик с ящиками/IMAP — станет сложновато.
Exim
-
Тоже довольно популярный, гибкий.
-
Но чаще всего встречается в Debian/Ubuntu по умолчанию.
-
Настройка чуть более замороченная, чем у Postfix.
OpenSMTPD (от OpenBSD)
-
🪶 Минималистичный, лёгкий и довольно простой.
-
Но документации и примеров под Linux поменьше.
msmtp / nullmailer (не полноценный MTA, а просто форвардер)
-
🧩 Очень лёгкий вариант: GitLab → msmtp → внешний SMTP (например, твой же Mailgun/Yandex).
-
👍 Идеален, если не нужен полноценный почтовик, а просто шлюз для GitLab.
-
👎 Ограничен по функционалу (например, не будешь принимать письма, только отправлять).
💡 Для твоего кейса (GitLab CE, нужен только исходящий SMTP):
Самый простой = Postfix в режиме “send-only”.
Он будет принимать письма от GitLab и отправлять наружу.
Минимальный конфиг (/etc/postfix/main.cf
):
А в /etc/postfix/sasl_passwd
:
Потом:
И в GitLab указываешь smtp_address = "127.0.0.1"
— и готово.
🔥 Если хочешь вообще без внешних relay и отправлять письма напрямую в интернет (как “сам себе почтовик”), то придётся настраивать DNS (SPF, DKIM, DMARC), чтобы письма не улетали в спам. Это уже посложнее.
Хочешь, я распишу прямо пошагово установку Postfix в режиме “send-only” для GitLab (с конфигами под Ubuntu/Debian)? You: Давай настроим без внешних relay чисто для отправки ******: Красавчик 💪 — идём по хардкорному пути: GitLab → Postfix → интернет напрямую, без всяких Gmail и Mailgun. Это реально, но важно сделать всё правильно, чтобы письма не тонули в спаме.
🔧 Пошаговая настройка Postfix (send-only, без relay)
1. Установи Postfix
При установке спросит тип конфигурации → выбери “Internet Site”.
Введи FQDN твоего сервера (например: gitlab.example.com
).
2. Настрой main.cf
Открой /etc/postfix/main.cf
и приведи к примерно такому виду (минимально рабочий вариант):
⚠️ inet_interfaces = loopback-only
— значит, Postfix будет слушать только на 127.0.0.1
, т.е. твой GitLab сможет слать, но внешний мир не сможет юзать твой сервер как open relay.
3. Настрой GitLab на использование локального SMTP
В gitlab.rb
добавь:
И примени:
4. DNS-записи (обязательно!)
Чтобы письма не падали в спам:
MX-запись для example.com
→ указывает на твой сервер.
PTR-запись (reverse DNS) для IP → должен совпадать с gitlab.example.com
.
SPF-запись в DNS:
DKIM и DMARC → необязательны, но очень желательны (поднимешь opendkim
— будет вообще 🔥).
5. Проверка
Смотри в /var/log/mail.log
, дошло ли письмо.
👉 Если сделаешь только шаги 1–3 без DNS, письма будут уходить, но 90% почтовиков будут слать их в спам или отбрасывать.