> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Доставка электронной почты

> Отправка писем активации, приглашений и сброса пароля из развёртывания на Kubernetes.

Сервис **web** отправляет все письма (активация, приглашения в проекты, сброс пароля) из каждого пода Ayakaleaf Pro. Настройки такие же, как в Toolkit, см. [Доставка электронной почты](https://ayakaleaf-pro.mintlify.site/ru/on-premises/configuration/overleaf-toolkit/email-delivery.md).

| | |
| - | - |
| Сервис | web в каждом поде Ayakaleaf Pro; считывается при запуске web |
| Под → внешняя сеть | ваш сервер SMTP (`OVERLEAF_EMAIL_SMTP_HOST`) или API Amazon SES в регионе `OVERLEAF_EMAIL_AWS_SES_REGION` |
| Состояние | ограничение частоты отправки в Redis |
| Периодические задания | нет |

### Настройка

**1. ConfigMap**

```yaml title="30-config.yaml (additions)" wrap theme={null}
  OVERLEAF_EMAIL_FROM_ADDRESS: no-reply@example.com
  OVERLEAF_EMAIL_SMTP_HOST: smtp.example.com
  OVERLEAF_EMAIL_SMTP_PORT: "587"
  OVERLEAF_EMAIL_SMTP_SECURE: "false"
  OVERLEAF_EMAIL_SMTP_USER: no-reply@example.com
  # optional
  # OVERLEAF_EMAIL_REPLY_TO: support@example.com
  # OVERLEAF_EMAIL_SMTP_IGNORE_TLS: "false"
  # OVERLEAF_EMAIL_SMTP_TLS_REJECT_UNAUTH: "true"
```

`OVERLEAF_EMAIL_FROM_ADDRESS` включает отправку. Задавайте его только вместе с сервером SMTP (или SES): если указан только отправитель, Ayakaleaf Pro пытается использовать сервер SMTP внутри пода, и все письма не отправляются. Без него письма не отправляются, а лишь записываются в `web.log`.

`OVERLEAF_EMAIL_SMTP_SECURE`, `OVERLEAF_EMAIL_SMTP_IGNORE_TLS` и `OVERLEAF_EMAIL_SMTP_TLS_REJECT_UNAUTH` считываются как JSON, поэтому используйте `"true"` или `"false"`: значение вроде `yes` останавливает все сервисы пода при запуске.

**2. Secret**

```bash theme={null}
kubectl -n overleaf patch secret overleaf-secrets --type merge \
  -p '{"stringData":{"OVERLEAF_EMAIL_SMTP_PASS":"<SMTP password>"}}'
```

Для API Amazon SES поместите сюда вместо этого `OVERLEAF_EMAIL_AWS_SES_ACCESS_KEY_ID` и `OVERLEAF_EMAIL_AWS_SES_SECRET_KEY`, а `OVERLEAF_EMAIL_DRIVER: ses` и `OVERLEAF_EMAIL_AWS_SES_REGION` — в ConfigMap.

**3. Примените, перезапустите и проверьте**

```bash theme={null}
kubectl apply -f 30-config.yaml
kubectl -n overleaf rollout restart deployment/overleaf     # or statefulset/overleaf
```

Отправьте себе письмо для сброса пароля со страницы входа. Если оно не пришло, проверьте, доступен ли сервер SMTP из подов, и посмотрите журнал web:

```bash theme={null}
kubectl -n overleaf exec deploy/overleaf -- bash -c 'echo > /dev/tcp/smtp.example.com/587 && echo reachable'
kubectl -n overleaf exec deploy/overleaf -- grep -iE "email|smtp" /var/log/overleaf/web.log | tail
```

### Несколько реплик

Ничего дополнительного не требуется. Каждая реплика отправляет письма с одинаковыми настройками, а ограничение частоты отправки подсчитывается в Redis по всем репликам. Если ваш сервер SMTP принимает только известных отправителей, разрешите адреса, с которых поды выходят из кластера (обычно это адреса узлов).

### Проверено на Kubernetes

С Mailpit в качестве сервера SMTP, на Kubernetes 1.37 с одной репликой, наши сквозные тесты, отправляющие письма, проходят: письмо активации учётной записи, созданной администратором, письмо активации при самостоятельной регистрации, ограниченной доменами, письмо для сброса пароля, письмо с уведомлением пользователя об удалении его учётной записи, а также поведение, когда сервер SMTP отклоняет письмо активации или удаления: учётная запись всё равно создаётся или удаляется, а письмо активации можно отправить повторно позже. С `OVERLEAF_EMAIL_FROM_ADDRESS` и без хоста SMTP запрос на сброс пароля завершался ошибкой, а в `web.log` появлялось «error sending message», как описано выше.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.