- README.md: перепиcан как компактный обзор (98 строк) с навигацией по docs/ - docs/: 13 файлов — getting-started, architecture, configuration, addons, storage, security, cicd, observability, networking, operations, make-reference, molecule-testing, troubleshooting - addons/*/README.md: 31 новый файл — описание, параметры, примеры кода для каждого из 34 аддонов (vault и external-secrets уже существовали)
3.0 KiB
3.0 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"