Організація поштової скриньки для локальних мереж без 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

На Dovecot `2.4.1-4` опція вище не підтримується, тому замість неї потрібно розкоментувати:


auth_allow_cleartext = yes

/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

# файл /etc/aliases - повинен існувати!
# 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


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


Діагностика проблем


Якщо з якихось причин, пошта не відправляється і журнали в `/var/log` - відсутні, перевіряємо наявність черги:


mailq

Наприклад, в мене було `alias database unavailable`, тому я створив цей файл вручну, вказавши потрібні мені псевдоніми:


nano /etc/aliases

Після цього, оновлюємо базу і перезавантажуємо (або релодимо) сервер postfix:


newaliases
systemctl restart postfix

Посилання


Специфікація RFC 5321

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


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


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

Yggmail - месенджер з поштовим інтерфейсом



/uk/