Організація поштової скриньки для локальних мереж без DNS

Даний матеріал є адаптацією інструкції для користувачів локальної спільноти адміністраторів альтернативних мереж. Може стати в нагоді, якщо ви бажаєте створити власний поштовий сервер для локальної групи користувачів на підприємстві або для дому, без використання сторонніх серверів Google (та інших провайдерів) для переписки засобами DeltaChat або іншого клієнта, що підтримує протоколи SMTP/IMAP.

Подібним займаюсь вперше, матеріал може доповнюватись, але в цілому, мій персональний сервер на базі локальної мережі Yggdrasil - вже працює. Користуючись мережами Yggdrasil та/або Mycelium, ви також можете отримувати і надсилати пошту з локального простору через їх вбудований оверлейний режим: тобто пересилати листи через Інтернет без виділеного IP за NAT.

Створення користувача пошти

Є багато способів адміністрування скриньок, але я обрав самий простий: системний, за паролем:

useradd -m USER
passwd USER

Dovecot

apt install dovecot-core dovecot-imapd

/etc/dovecot/dovecot.conf

Вимикаю IPv4, але "слухаю" всі мережі IPv6 (включно з Yggdrasil та у моєму випадку - Mycelium)

listen = ::

/etc/dovecot/conf.d/10-auth.conf

disable_plaintext_auth = no

/etc/dovecot/conf.d/10-master.conf

service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
}

Postfix

apt install postfix

/etc/postfix/main.cf

myhostname = localhost

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no
readme_directory = no
smtpd_use_tls=no
compatibility_level = 3.6

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

mydestination =
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = ipv6

# деякі поради від спаму з мережі, але як вони працюють ще не знаю :)
smtpd_etrn_restrictions=reject
disable_vrfy_command = yes
smtpd_helo_required = yes

# інтеграція з Dovecot
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
mailbox_command =

Фаєрвол

Моя особиста конфігурація не передбачає прийом пошти від користувачів окрім локальних:

ufw allow from CLIENT_IP to any port 25 proto tcp
ufw allow from CLIENT_IP to any port 143 proto tcp

У випадку, якщо ви налаштовуєте скриньку для прийому відправлень від інших користувачів локальної мережі, можете додати виключення на його хост тієї мережі, якою користуєтесь, або замість фаєрволу - налаштувати доступ засобами SpamAssassin.

DeltaChat

Налаштовуючи даний клієнт, вказуємо:

Посилання

Специфікація RFC 5321
Веб-адаптація матеріалу на DevZone (з коментарями)

Дивіться також

Yggdrasil - мережа з децентралізованою маршрутизацією
Yggmail - месенджер з поштовим інтерфейсом