Обновлена документация под новые аддоны (gitlab, redis, mongodb, kafka, kafka-ui, rabbitmq) и новую модель явного выбора зависимостей. Добавлены и унифицированы описания переключателей *_database_mode и *_redis_mode, обновлена таблица зависимостей аддонов, примеры конфигурации и список vault-секретов.
126 lines
3.3 KiB
Markdown
126 lines
3.3 KiB
Markdown
# SMTP Relay
|
|
|
|
Postfix-relay для отправки email из подов через внешний SMTP сервер (Yandex, Gmail, Mail.ru и другие). Доступен внутри кластера как `smtp-relay.smtp-relay.svc.cluster.local:25`. Принимает письма только из доверенных сетей кластера.
|
|
|
|
## Быстрый старт
|
|
|
|
```yaml
|
|
# 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`:
|
|
```yaml
|
|
vault_smtp_relay_password: "app-password"
|
|
```
|
|
|
|
```bash
|
|
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)
|
|
```yaml
|
|
smtp_relay_host: "smtp.yandex.ru"
|
|
smtp_relay_port: 465
|
|
smtp_relay_username: "user@yandex.ru"
|
|
```
|
|
|
|
### Gmail (порт 587, STARTTLS)
|
|
```yaml
|
|
smtp_relay_host: "smtp.gmail.com"
|
|
smtp_relay_port: 587
|
|
smtp_relay_username: "user@gmail.com"
|
|
# Для Gmail нужен App Password (не основной пароль)
|
|
```
|
|
|
|
### Mail.ru (порт 465)
|
|
```yaml
|
|
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
|
|
|
|
```yaml
|
|
vaultwarden_smtp_enabled: true
|
|
vaultwarden_smtp_host: "smtp-relay.smtp-relay.svc.cluster.local"
|
|
vaultwarden_smtp_port: 25
|
|
vaultwarden_smtp_security: "off"
|
|
```
|
|
|
|
### Любое приложение (env vars)
|
|
|
|
```yaml
|
|
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
|
|
|
|
```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())
|
|
```
|
|
|
|
## Диагностика
|
|
|
|
```bash
|
|
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/)
|
|
- Официальная документация: [https://www.postfix.org/documentation.html](https://www.postfix.org/documentation.html)
|
|
- Версии Helm chart / ПО: [https://hub.docker.com/_/postfix](https://hub.docker.com/_/postfix)
|