Обновлена документация под новые аддоны (gitlab, redis, mongodb, kafka, kafka-ui, rabbitmq) и новую модель явного выбора зависимостей. Добавлены и унифицированы описания переключателей *_database_mode и *_redis_mode, обновлена таблица зависимостей аддонов, примеры конфигурации и список vault-секретов.
3.3 KiB
3.3 KiB
SMTP Relay
Postfix-relay для отправки email из подов через внешний SMTP сервер (Yandex, Gmail, Mail.ru и другие). Доступен внутри кластера как smtp-relay.smtp-relay.svc.cluster.local:25. Принимает письма только из доверенных сетей кластера.
Быстрый старт
# group_vars/all/addons.yml
addon_smtp_relay: true
smtp_relay_host: "smtp.yandex.ru"
smtp_relay_port: 465
smtp_relay_username: "user@yandex.ru"
smtp_relay_allowed_sender_domains: "example.com"
Секрет в vault.yml:
vault_smtp_relay_password: "app-password"
make addon-smtp-relay
Параметры
| Переменная | Умолч. | Описание |
|---|---|---|
smtp_relay_host |
smtp.yandex.ru |
SMTP сервер |
smtp_relay_port |
465 |
Порт (465=SMTPS, 587=STARTTLS) |
smtp_relay_username |
— | Логин SMTP |
smtp_relay_mynetworks |
RFC1918 | Доверенные подсети |
smtp_relay_from |
— | Envelope-from (rewriting) |
Настройка для разных провайдеров
Yandex (порт 465, SMTPS)
smtp_relay_host: "smtp.yandex.ru"
smtp_relay_port: 465
smtp_relay_username: "user@yandex.ru"
Gmail (порт 587, STARTTLS)
smtp_relay_host: "smtp.gmail.com"
smtp_relay_port: 587
smtp_relay_username: "user@gmail.com"
# Для Gmail нужен App Password (не основной пароль)
Mail.ru (порт 465)
smtp_relay_host: "smtp.mail.ru"
smtp_relay_port: 465
smtp_relay_username: "user@mail.ru"
Endpoint внутри кластера
Host: smtp-relay.smtp-relay.svc.cluster.local
Port: 25
Использование в приложениях
Jenkins
Jenkins → Manage → Configure System → Extended E-mail Notification:
- SMTP server:
smtp-relay.smtp-relay.svc.cluster.local - Port:
25 - Use SMTP Authentication: нет
Vaultwarden
vaultwarden_smtp_enabled: true
vaultwarden_smtp_host: "smtp-relay.smtp-relay.svc.cluster.local"
vaultwarden_smtp_port: 25
vaultwarden_smtp_security: "off"
Любое приложение (env vars)
env:
- name: SMTP_HOST
value: "smtp-relay.smtp-relay.svc.cluster.local"
- name: SMTP_PORT
value: "25"
- name: SMTP_FROM
value: "noreply@example.com"
Python
import smtplib
from email.mime.text import MIMEText
msg = MIMEText("Hello from K3S!")
msg['Subject'] = "Test"
msg['From'] = "noreply@example.com"
msg['To'] = "user@example.com"
with smtplib.SMTP("smtp-relay.smtp-relay.svc.cluster.local", 25) as s:
s.sendmail(msg['From'], [msg['To']], msg.as_string())
Диагностика
kubectl logs -n smtp-relay deployment/smtp-relay -f
# Тест отправки из пода:
kubectl run smtp-test --image=alpine --rm -it -- \
sh -c "apk add --no-cache ssmtp && echo 'Subject: test' | ssmtp user@example.com"
Официальные ресурсы
- Официальный сайт: https://www.postfix.org/
- Официальная документация: https://www.postfix.org/documentation.html
- Версии Helm chart / ПО: https://hub.docker.com/_/postfix