# 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)