Dovecot

Установка

# если через imap
apt install dovecot-core dovecot-imapd dovecot-ldap dovecot-lmtpd -y
 
# dovecot-lmtp - тип чтобы правильно с postfix на dovecot почта шла (если они локално)

Подсказка

Так можно подсмотреть параметры все

doveconf -d

Настройка

# Создаем юзера vmail
groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /var/vmail -m -s /usr/sbin/nologin
mkdir -p /var/vmail
chown -R vmail:vmail /var/vmail
/etc/dovecot/dovecot.conf
 
# Раскомментировать. Тут слушают все ipv4 и ipv6, если нужны определенные изменить
listen = *, ::
/etc/dovecot/conf.d/10-auth.conf
 
# line 100: Добавить
auth_mechanisms = plain login
 
# line 35: Добавить
# будет добавлять записям @domain чтобы всегда было user@nova.a7.test ( иначе не робит пункт с users где ключи )
auth_default_domain = nova.a7.test
 
 
# line 120+- одно коментим второе раскоментим
#!include auth-system.conf.ext
!include auth-ldap.conf.ext
/etc/dovecot/conf.d/auth-ldap.conf.ext
 
# чтобы порт TLS 389
ldap_uris = ldap://ldap.nova.a7.test
ldap_starttls = yes
# если нужен 636
#ldap_uris = ldaps://ldap.nova.a7.test
 
ldap_base = ou=People,dc=nova,dc=a7,dc=test
ldap_auth_dn = uid=mail-reader,ou=Services,dc=nova,dc=a7,dc=test
ldap_auth_dn_password = MailReader39@A7
 
passdb ldap {
	# ВАЖНО доабвить username в %{user} иначе будет искать uid=maya@nova.a7.test. А у нас просто uid=maya
	ldap_filter = (&(objectClass=posixAccount)(uid=%{user|username}))
	ldap_bind = yes
}
 
userdb ldap {
	ldap_filter = (&(objectClass=posixAccount)(uid=%{user|username}))
	fields {
		uid = vmail
		gid = vmail
		home = /var/vmail/%{user|domain}/%{user|username}
	}
}
/etc/dovecot/conf.d/10-mail.conf
 
# line 51
namespace inbox {
	mail_driver = maildir
	# Создавать ?var/vmail/nova.a7.test/user/Maildir
	mail_path = /var/vmail/%{user|domain}/%{user|username}/Maildir
	mail_uid = vmail
	mail_gid = vmail
}
/etc/dovecot/conf.d/10-master.conf
# line 21: раскоментировать для SSL
service imap-login {
	inet_listener imaps {
		port = 993
		ssl = yes
	}
}
 
# line 58: Если всё же решил через lmtp
unix_listener /var/spool/postfix/private/dovecot-lmtp {
    mode = 0666
    user = postfix
    group = postfix
}
 
# line 100: раскоментировать и дать подобный образ
unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
}
/etc/dovecot/conf.d/10-ssl.conf
 
ssl = yes
 
ssl_cert = /ca/mail.crt
ssl_key = /ca/mail.key
/etc/dovecot/conf.d/20-lmtp.conf
 
# ЗАКОМЕНТИТЬ, иначе почта не будет ложится в /var/vmail/DOMAIN потому что домена тут не будет
 
#auth_username_format = %{user | username | lower}

Перезапуск

systemctl start dovecot 
systemctl enable dovecot

Настройка SMTP

postfix

Установка

apt install postfix postfix-ldap -y
  • Вылезет псевдографика выбираем “Internet Site”
  • Далее указываем доменное имя например: vm.local

Подсказка

Так можно подсмотреть параметры все

postconf 
man ldap_table

Настройка

/etc/postfix/main.cf
 
myhostname = mail.nova.a7.test
mydomain = nova.a7.test
myorigin = $mydomain
 
# !!!ВАЖНО!!!!
mydestination = localhost
mynetworks = 127.0.0.0/8
 
# Для сертификатов поменять пути до сертфикатов
smtpd_tls_cert_file=/ca/postfix.crt
smtpd_tls_key_file=/ca/postfix.key
 
# SASL через Dovecot (для отправки — авторизация всё равно нужна)
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
 
# Виртуальная доставка  2 ВАРИАНТА
virtual_mailbox_domains = nova.a7.test
virtual_mailbox_maps = ldap:/etc/postfix/ldap.cf
# 1 ВАРИАНТ) использованием LMTP
virtual_transport = lmtp:unix:private/dovecot-lmtp
 
# 2 ВАРИАНТ) встроенным механизмом Postfix, без LMTP/Dovecot
virtual_mailbox_base = /var/vmail
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
# virtual_transport трогать не надо — по умолчанию = virtual, это и есть встроенная доставка
 

Файл подключения к ldap

--> vi /etc/postfix/ldap.cf
============================
server_host = ldap.nova.a7.test
server_port = 389
start_tls = yes
 
search_base = ou=People,dc=nova,dc=a7,dc=test
bind = yes
bind_dn = uid=mail-reader,ou=Services,dc=nova,dc=a7,dc=test
bind_pw = MailReader39@A7
 
query_filter = (mail=%s)
result_attribute = mail
 
# ЕСЛИ БЕЗ LMTP
result_format = %d/%u/Maildir/
============================
--> vi /etc/postfix/master.cf
============================
submission inet n - y - - smtpd
# везде где -o раскоментировать где-то 8 будет
============================
systemctl start postfix 
systemctl enable postfix