Commit a9f36d2f authored by Vitaly Lipatov's avatar Vitaly Lipatov

Add memory: mail mysql credentials (mailro/mail@% split, full write-consumer…

Add memory: mail mysql credentials (mailro/mail@% split, full write-consumer list, proxymap restart); add mysql.auth SSH access Co-Authored-By: 's avatarClaude <noreply@anthropic.com>
parent cb0fd533
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
| rca-gw (10.20.30.250, CT 652 на border) | `ssh root@10.20.30.250` (shell fish → `bash -s` heredoc). Изолированный PPTP-шлюз к облаку 1С-Рарус, см. [project_rarus_1c_vpn_gateway.md](project_rarus_1c_vpn_gateway.md) | | rca-gw (10.20.30.250, CT 652 на border) | `ssh root@10.20.30.250` (shell fish → `bash -s` heredoc). Изолированный PPTP-шлюз к облаку 1С-Рарус, см. [project_rarus_1c_vpn_gateway.md](project_rarus_1c_vpn_gateway.md) |
| cyradm.eterhost.ru (CT 239 LXC на border, внутр. 10.20.30.68) | `ssh root@10.20.30.68` (lav-ключ добавлен 2026-07-04). Публичный `cyradm.eterhost.ru` (91.232.225.23) = reverse-proxy на :443, **НЕ его SSH**. Фолбэк: `pct exec 239` на border (`unset ENV`). web-cyradm: `/var/www/webapps/web-cyradm/`, DB-конфиг `config/conf.php` (USER=mail, HOST=mysql.auth.dmz). См. [project_mail_password_hash_migration.md](project_mail_password_hash_migration.md) | | cyradm.eterhost.ru (CT 239 LXC на border, внутр. 10.20.30.68) | `ssh root@10.20.30.68` (lav-ключ добавлен 2026-07-04). Публичный `cyradm.eterhost.ru` (91.232.225.23) = reverse-proxy на :443, **НЕ его SSH**. Фолбэк: `pct exec 239` на border (`unset ENV`). web-cyradm: `/var/www/webapps/web-cyradm/`, DB-конфиг `config/conf.php` (USER=mail, HOST=mysql.auth.dmz). См. [project_mail_password_hash_migration.md](project_mail_password_hash_migration.md) |
| sec.office (CT 251 time.office.etersoft.ru на border, внутр. 10.20.30.61) | `ssh root@10.20.30.61` (lav-ключ добавлен 2026-07-04). web-приложение смены паролей `/var/www/webapps/sec/`. См. [project_mail_password_hash_migration.md](project_mail_password_hash_migration.md) | | sec.office (CT 251 time.office.etersoft.ru на border, внутр. 10.20.30.61) | `ssh root@10.20.30.61` (lav-ключ добавлен 2026-07-04). web-приложение смены паролей `/var/www/webapps/sec/`. См. [project_mail_password_hash_migration.md](project_mail_password_hash_migration.md) |
| mysql.auth.etersoft.ru (CT 219 LXC на border, внутр. 10.20.30.202) | `ssh root@mysql.auth.etersoft.ru` (lav-ключ добавлен 2026-07-04). Почтовая БД `mail`: `mailro`@% (read) + `mail`@% (write). Запросы через wrapper `maildb` (без пароля), админка `mysql --defaults-file=/root/.my.cnf.root`. См. [lesson_mail_mysql_credentials.md](lesson_mail_mysql_credentials.md) |
## Сервисы (не в skills) ## Сервисы (не в skills)
...@@ -130,6 +131,7 @@ ...@@ -130,6 +131,7 @@
- [lesson_mail_postfix_sasl_config_path.md](lesson_mail_postfix_sasl_config_path.md) — mail.etersoft.ru: Postfix читает `/etc/postfix/sasl/smtpd.conf`, НЕ `/etc/sasl2/smtpd.conf`. Cyrus `imap=1`, Postfix `smtpauth=1` - [lesson_mail_postfix_sasl_config_path.md](lesson_mail_postfix_sasl_config_path.md) — mail.etersoft.ru: Postfix читает `/etc/postfix/sasl/smtpd.conf`, НЕ `/etc/sasl2/smtpd.conf`. Cyrus `imap=1`, Postfix `smtpauth=1`
- [lesson_mail_cert_renewal_webroot_hook.md](lesson_mail_cert_renewal_webroot_hook.md) — mail.etersoft.ru Let's Encrypt: renewal через cron.weekly (webroot, nginx должен быть UP), deploy-hook в `/etc/letsencrypt/renewal-hooks/deploy/` (НЕ `--renew-hook`) раскладывает cert в Postfix/Cyrus; инцидент 2026-07-04 — 2 причины протухания - [lesson_mail_cert_renewal_webroot_hook.md](lesson_mail_cert_renewal_webroot_hook.md) — mail.etersoft.ru Let's Encrypt: renewal через cron.weekly (webroot, nginx должен быть UP), deploy-hook в `/etc/letsencrypt/renewal-hooks/deploy/` (НЕ `--renew-hook`) раскладывает cert в Postfix/Cyrus; инцидент 2026-07-04 — 2 причины протухания
- [lesson_rooter_home_pbs_restore.md](lesson_rooter_home_pbs_restore.md) — rooter@server доступ сломался удалением `/home/rooter` с aspetos (NFS); восстановление из PBS через `backup/restore-home.sh` (snapshot 2025-12-28); «shared-аккаунт не пускает» → проверять home на NFS-сервере - [lesson_rooter_home_pbs_restore.md](lesson_rooter_home_pbs_restore.md) — rooter@server доступ сломался удалением `/home/rooter` с aspetos (NFS); восстановление из PBS через `backup/restore-home.sh` (snapshot 2025-12-28); «shared-аккаунт не пускает» → проверять home на NFS-сервере
- [lesson_mail_mysql_credentials.md](lesson_mail_mysql_credentials.md) — mail DB: `mailro`@% (read — SASL+wrapper) / `mail`@% (write — cyradm/sec/Postfix-мапы); ротация mail@% → обновить ВСЕХ потребителей + `serv restart postfix` (proxymap кэширует conn, reload не помогает); инцидент 2026-07-05 — пропустил Postfix mysql-{mydestination,virtual}.cf → сломалась маршрутизация
- [lesson_sieve_domain_split.md](lesson_sieve_domain_split.md) — sieve расщепление при symlink доменов: managesieve пишет по login-домену, доставка читает по spool-symlink → правила Roundcube не применяются - [lesson_sieve_domain_split.md](lesson_sieve_domain_split.md) — sieve расщепление при symlink доменов: managesieve пишет по login-домену, доставка читает по spool-symlink → правила Roundcube не применяются
- [lesson_lavtomate_master_active_empty.md](lesson_lavtomate_master_active_empty.md) — Lavtomate пишет пустой master active.script без `include "roundcube"` → правила Roundcube глохнут; ручной workaround + задание в lavtomate/docs/task-sieve-master-include.md - [lesson_lavtomate_master_active_empty.md](lesson_lavtomate_master_active_empty.md) — Lavtomate пишет пустой master active.script без `include "roundcube"` → правила Roundcube глохнут; ручной workaround + задание в lavtomate/docs/task-sieve-master-include.md
- [lesson_chat_eterfund_telemt_oom.md](lesson_chat_eterfund_telemt_oom.md) — chat.eterfund.ru: round-robin .43 (CT 691 telemt TLS-прокси на enceladus) + 217.12.37.55 (beget); инцидент 2026-05-25 — gyle CT 716 захватывал .43, перенесли gyle на .86 - [lesson_chat_eterfund_telemt_oom.md](lesson_chat_eterfund_telemt_oom.md) — chat.eterfund.ru: round-robin .43 (CT 691 telemt TLS-прокси на enceladus) + 217.12.37.55 (beget); инцидент 2026-05-25 — gyle CT 716 захватывал .43, перенесли gyle на .86
......
---
name: lesson_mail_mysql_credentials
description: "mail DB на mysql.auth mailro (read) / mail@% (write), wrapper maildb, ПОЛНЫЙ список потребителей для ротации mail@% (cyradm/sec/Postfix-мапы + restart postfix)"
metadata:
node_type: memory
type: reference
originSessionId: b383b2ce-248b-4e35-be70-ce592001dc88
---
Почтовая БД `mail` на **mysql.auth.etersoft.ru** (CT 219, 10.20.30.202). Два mysql-юзера:
- **`mailro`@%** (read-only SELECT на `mail.*`) — SASL почты (Cyrus/Postfix на mail.etersoft.ru: `/etc/sasl2/*.conf`, `/etc/postfix/sasl/smtpd.conf`) + wrapper `maildb`.
- **`mail`@%** (write) — cyradm (CT 239, `/var/www/webapps/web-cyradm/config/conf.php`), sec.office (CT 251, `/var/www/webapps/sec/config.php`), **Postfix-мапы** на mail (`/etc/postfix/mysql-mydestination.cf`, `/etc/postfix/mysql-virtual.cf`).
**Запросы (без пароля):** `ssh root@mysql.auth.etersoft.ru maildb` — wrapper = `mysql "$@"`, читает `/root/.my.cnf` (там mailro). **Админка** как mysql-root: `mysql --defaults-file=/root/.my.cnf.root` (дефолтный `mysql` = mailro/read-only).
**Ротация `mail@%`**`SET PASSWORD FOR 'mail'@'%'` (как root через `.my.cnf.root`) → обновить пароль во **ВСЕХ** write-потребителях (cyradm + sec + 2 Postfix-мапа) → **`serv restart postfix`**. Грабли: `proxymap` кэширует mysql-соединения → `postfix reload` НЕ помогает, только restart; иначе `table lookup problem` + `Access denied for mail@<ip>` и ломается маршрутизация (mydestination/virtual).
**Урок (инцидент 2026-07-05):** при ротации `mail@%` я обновил только SASL→mailro + cyradm/sec, пропустил Postfix `mysql-{mydestination,virtual}.cf` → mail routing сломался. **Перед ротацией рекурсивно найти всех потребителей**: `grep -rlE "mysql.auth.dmz|user.*=.*mail" /etc/postfix/ /var/www/` на mail + cyradm + sec. См. [[reference_rooter_password_store]] (другие админ-пароли), [[lesson_mail_cert_renewal_webroot_hook]].
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment