Для GitLab CE (self-hosted) у тебя на выбор куча SMTP-серверов — всё зависит от того, какие требования к доставке писем и что у тебя уже есть под рукой. GitLab не привязан к конкретному почтовику, он просто шлёт через любой стандартный SMTP. Типичные варианты:

  1. Корпоративный SMTP
  • Если в компании есть свой Exchange / Postfix / Exim — лучше всего использовать его.
  • Плюс: контроль, логирование, никаких лишних сюрпризов.
  • Минус: нужно настраивать доступ.
  1. Облачные SMTP-сервисы
  • Gmail (smtp.gmail.com) — но там заморочки с паролями приложений и лимитами.
  • Yandex 360 (smtp.yandex.com / smtp.yandex.ru).
  • Mail.ru — тоже можно, но осторожно с блокировками.
  • Любой специализированный сервис: SendGrid, Mailgun, Postmark.
  • Плюс: хорошая доставляемость.
  • Минус: обычно лимиты бесплатные, а дальше деньги.
  1. Свой почтовик рядом с 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% почтовиков будут слать их в спам или отбрасывать.