continuous-integration/drone/pr Build is passing
- V6 mail_lists + mail_list_members: письмо на alerts-prod@ → каждому участнику своя копия в папку рассылки; закрытая рассылка — только от вошедших отправителей (550 снаружи) - bob+prod@ → ящик bob@, папка prod (создаётся сама; системные папки нельзя) - TRAP: чужие адреса → одна копия в INBOX отправителя; наши ящики и рассылки доставляются - /api/service/** (SERVICE_TOKEN из secrets-init): аккаунты (пароль один раз, выключение → вон из рассылок), рассылки - MailDirectory: одно пространство адресов для ящиков и рассылок, без «+» в именах - Настройки → LISTS для администраторов - 86 тестов; живой прогон на Postgres 17: миграции V1–V6, API, SMTP (рассылка/метка/ловушка) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
20 lines
722 B
Java
20 lines
722 B
Java
package com.mailserver.config;
|
|
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
|
|
/** "+tag" addresses: the base address is the mailbox, the tag is the folder. */
|
|
class MailDomainsTest {
|
|
|
|
@Test
|
|
void baseAndTag() {
|
|
assertThat(MailDomains.baseOf("Bob+Prod@Mail.test")).isEqualTo("bob@mail.test");
|
|
assertThat(MailDomains.tagOf("Bob+Prod@Mail.test")).isEqualTo("Prod");
|
|
assertThat(MailDomains.baseOf("bob@mail.test")).isEqualTo("bob@mail.test");
|
|
assertThat(MailDomains.tagOf("bob@mail.test")).isNull();
|
|
assertThat(MailDomains.tagOf("bob+@mail.test")).isNull();
|
|
assertThat(MailDomains.tagOf("+x@mail.test")).isNull();
|
|
}
|
|
}
|