Настройка postfix + dovecot + ldap

Dovecot Automatic Restart

If for any reason your Dovecot process is killed, you need to run the following command to restart it.

sudo systemctl restart dovecot

Instead of manually typing this command, we can make Dovecot automatically restart by editing the systemd service unit. To override the default systemd service configuration, we create a separate directory.

sudo mkdir -p /etc/systemd/system/dovecot.service.d/

Then create a file under this directory.

sudo nano /etc/systemd/system/dovecot.service.d/restart.conf

Add the following lines in the file, which will make Dovecot automatically restart 5 seconds after a failure is detected.

Restart=always
RestartSec=5s

Save and close the file. Then reload systemd.

sudo systemctl daemon-reload

To check if this would work, kill Dovecot with:

sudo pkill dovecot

Then check Dovecot status. You will find Dovecot automatically restarted.

systemctl status dovecot

Install and Configure OpenDKIM on CentOS 8/RHEL8

Install OpenDKIM from the EPEL (Extra Packages for Enterprise Linux) repository.

sudo dnf install epel-release

sudo dnf install opendkim perl-Getopt-Long

Edit OpenDKIM main configuration file.

sudo nano /etc/opendkim.conf

Find the following line.

Mode     v
Mode           sv

Then find the following lines.

## Specifies whether or not the filter should generate report mail back
## to senders when verification fails and an address for such a purpose
## is provided. See opendkim.conf(5) for details.
SendReports yes

## Specifies the sending address to be used on From: headers of outgoing
## failure reports. By default, the e-mail address of the user executing
## the filter is used ().
# ReportAddress "Example.com Postmaster" <>

Find the following line and comment it out, because we will use separate keys for each domain name.

KeyFile   /etc/opendkim/keys/default.private

Next, find the following 4 lines and uncomment them.

# KeyTable            /etc/opendkim/KeyTable

# SigningTable        refile:/etc/opendkim/SigningTable

# ExternalIgnoreList  refile:/etc/opendkim/TrustedHosts

# InternalHosts       refile:/etc/opendkim/TrustedHosts

Save and close the file.

Установка своего сертификата

При установке устанавливается самоподписанный сертификат. Это приведет к лишним сообщениям нарушения безопасности в браузере.

Для начала, получаем сертификат, заверенный доверенным центром сертификации. Его можно купить или получить бесплатно от Let’s Encrypt. Мы рассмотрим последнее подробнее.

Открываем файл:

vi /etc/nginx/sites-enabled/00-default-ssl.conf

… и добавим в секцию server:

server {
    …
    location ~ /.well-known {
        root /usr/share/nginx/html;
        allow all;
    }
    …
}

Перечитаем конфиг nginx:

systemctl restart nginx

Устанавливаем утилиту для получения сертификата:

yum install certbot

И получаем сертификат командой:

* обратите внимание, что в данном примере мы получим сертификат для узла mail.dmosk.ru. Продолжаем выполнение операции:

Продолжаем выполнение операции:

(Y)es/(N)o: Y

Мы должны увидеть подтверждение об успешном получении сертификата:

IMPORTANT NOTES:
 — Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live…

Удаляем старые сертификаты:

\rm /etc/pki/tls/private/iRedMail.key

\rm /etc/pki/tls/certs/iRedMail.crt

Создаем переменную с нашим именем узла, на который мы получили сертификат (для удобства):

DOMAIN=mail.dmosk.ru

И создаем симлинки на полученные:

ln -s /etc/letsencrypt/live/$DOMAIN/cert.pem /etc/pki/tls/certs/iRedMail.crt

ln -s /etc/letsencrypt/live/$DOMAIN/privkey.pem /etc/pki/tls/private/iRedMail.key

* cert.pem и iRedMail.crt — открытые ключи (public); privkey.pem и iRedMail.key — закрытые (private); mail.dmosk.ru — узел, для которого был получен сертификат (его мы задали в переменной DOMAIN)

Обратите внимание, что в нашем примере прописаны пути до сертификатов от Let’s Encrypt — если у вас свои сертификаты, пути должны быть соответствующими

Перезапускаем следующие службы:

systemctl restart iredapd

systemctl restart nginx

Для автоматического продления сертификата создаем в cron задачу:

crontab -e

Добавим: 

0 0 * * 1,4 /usr/bin/certbot renew && systemctl restart nginx && systemctl restart iredapd

Test DKIM Key

Enter the following command on your CentOS 8/RHEL 8 server to test your key.

sudo opendkim-testkey -d your-domain.com -s 20200308 -vvv

If everything is OK, you will see the message.

opendkim-testkey: using default configfile /etc/opendkim.conf
opendkim-testkey: checking key '20200308._domainkey.linuxbabe.com'
opendkim-testkey: key OK

Note that your DKIM record may need sometime to propagate to the Internet. Depending on the domain registrar you use, your DNS record might be propagated instantly, or it might take up to 24 hours to propagate. You can go to https://www.dmarcanalyzer.com/dkim/dkim-check/, enter as the selector and enter your domain name to check DKIM record propagation.

If you see “Key not secure”, don’t panic. This is because DNSSEC isn’t enabled on your domain name. DNSSEC is a security standard for secure DNS query. Most domain names haven’t enabled DNSSEC. You can continue to follow this guide.

Now we can start the opendkim service.

sudo systemctl start opendkim

And enable auto-start at boot time.

sudo systemctl enable opendkim

OpenDKIM listens on .

Generate Private/Public Keypair

Create a separate folder for the domain.

sudo mkdir /etc/opendkim/keys/your-domain.com

Generate keys using tool.

sudo opendkim-genkey -b 2048 -d your-domain.com -D /etc/opendkim/keys/your-domain.com -s 20200308 -v

The above command will create 2048 bits keys. specifies the domain. specifies the directory where the keys will be stored. I use as the DKIM selector. Once the command is executed, the private key will be written to file and the public key will be written to file.

By default, only root can read and write to the key files. Make as the owner of the private key.

sudo chown opendkim:opendkim /etc/opendkim/keys/ -R

Настройка SSL-шифрования

В конфигурационный файл postfix добавляем:

vi /etc/postfix/main.cf

smtpd_tls_cert_file = /etc/ssl/certs/dovecot.pem
smtpd_tls_key_file = /etc/ssl/private/dovecot.pem
smtpd_use_tls = yes
smtpd_tls_auth_only = yes

Добавляем в master.cf:

vi /etc/postfix/master.cf

smtps     inet  n       —       n       —       —       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject

Настраиваем требование сертификата:

vi /etc/dovecot/conf.d/10-ssl.conf

ssl = required

Генерируем сертификат:

mkdir -p /etc/ssl/certs

mkdir /etc/ssl/private

cd /usr/share/doc/dovecot-*

vi mkcert.sh

SSLDIR=${SSLDIR-/etc/ssl}

sh mkcert.sh

Перезапускаем postfix и dovecot:

systemctl restart postfix

systemctl restart dovecot

Готово. Аутентификация будет требовать шифрованного подключения по порту 25 (STARTTLS) или 465 (SSL/TLS).

Установка и настройка Dovecot

Dovecot – это свободный IMAP- и POP3-сервер, разработанный с упором на безопасность. Нам он потребуется для того, чтобы подключить авторизацию по протоколу SMTP.

Устанавливаем Dovecot с компонентом для работы с СУБД:

apt-get install dovecot-imapd dovecot-pop3d dovecot-mysql

Настраиваем способ хранения сообщений, для этого откроем файл:

sudo nano /etc/dovecot/conf.d/10-mail.conf

Пропишем в него следующее:

mail_location = maildir:/home/mail/%d/%u/

В данном случае сообщения будут храниться в уже известном нам формате Maildir.

Далее настраиваем слушателя для аутентификации:

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

В файле прописываем:

service auth {

  unix_listener /var/spool/postfix/private/auth {

    mode = 0666

    user = postfix

    group = postfix

  }

  unix_listener auth-userdb {

    mode = 0600

    user = vmail

    group = vmail

  }

}

На этом примере мы настраиваем сервис для аутентификации и создаем два прослушивателя: /var/spool/postfix/private/auth – для возможности Постфиксом использовать авторизацию через Dovecot, auth-userdb – сокет для авторизации через dovecot-lda.

В этот же файл добавляем:

service stats {

    unix_listener stats-reader {

        user = vmail

        group = vmail

        mode = 0660

    }

    unix_listener stats-writer {

        user = vmail

        group = vmail

        mode = 0660

    }

}

Переходим к настройке аутентификации в Dovecot, открываем файл 10-auth.conf:

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

Задаем в нем следующие значения:

#!include auth-system.conf.ext

!include auth-sql.conf.ext

Открываем файл 10-ssl.conf командой vi /etc/dovecot/conf.d/10-ssl.conf и настраиваем в нем использование шифрования:

ssl = required

ssl_cert = </etc/ssl/mail/public.pem

ssl_key = </etc/ssl/mail/private.key

Рассмотрим параметры:

  • ssl = required – прикажет Dovecot требовать от клиентов использование шифрования;
  • ssl_cert – путь до открытого сертификата;
  • ssl_key – путь к закрытому ключу.

Добавляем автоматическое создания каталогов в файле vi /etc/dovecot/conf.d/15-lda.conf:

lda_mailbox_autocreate = yes

Настраиваем подключение к базе данных. Для начала открываем нужный файл:

​sudo nano /etc/dovecot/conf.d/auth-sql.conf.ext

Вставляем в него:

passdb {

  …

  args = /etc/dovecot/dovecot-sql.conf.ext

}

userdb {

  …

  args = /etc/dovecot/dovecot-sql.conf.ext

}

В этом фрагменте мы указали на файл, в котором будут находиться настройки для получения пользователей и паролей из БД.

Переходим к корректированию файла с настройками работы mySQL:

sudo nano /etc/dovecot/dovecot-sql.conf.ext

В конце файла добавляем:

driver = mysql

connect = host=localhost dbname=postfix user=postfix password=postfix123

default_pass_scheme = MD5-CRYPT

password_query = SELECT password FROM mailbox WHERE username = '%u'

user_query = SELECT maildir, 1024 AS uid, 1024 AS gid FROM mailbox WHERE username = '%u'

user_query = SELECT CONCAT('/home/mail/',LCASE(`domain`),'/',LCASE(`maildir`)), 1024 AS uid, 1024 AS gid FROM mailbox WHERE username = '%u'

Таким образом, мы смогли настроить запрос на получение данных из БД. Осталось сконфигурировать интерфейс, на котором мы будем слушать Dovecot:

sudo nano /etc/dovecot/dovecot.conf

В этот файл прописываем:

listen = *

По умолчанию Dovecot слушает и на ipv6 (listen = *, ::). Если на сервере не используется 6-я версия протокола TCP/IP, то в логах могут быть ошибки.

Разрешаем запуск Dovecot:

systemctl enable dovecot

Перезагружаемся:

systemctl restart dovecot

Настройка Postfix

Большинство настроек конфигурации Postfix заданы в файле main.cf, который можно найти по адресу /etc/postfix/main.cf. Здесь мы можем пойти следующим образом: изменять параметры непосредственно в самом файле либо воспользоваться командой postconf.

Для настройки Postfix первым делом нам потребуется прописать расположение почты обычного пользователя Ubuntu. В нашем случае мы используем формат Maildir – в нем сообщения выделяются в отдельные файлы, перемещаемые между каталогами. Также вы можете хранить сообщения в формате mbox или любом удобном для вас.

Указываем значение Maildir для переменной home_mailbox. Настроить ее можно с помощью команды:

sudo postconf -e 'home_mailbox= Maildir/'

Прописываем расположение таблицы virtual_alias_maps, где  все учетные записи почты сопоставляются с аккаунтами системы Linux. Также активируем еще одну команду, с помощью которой мы сопоставим расположение таблицы с файлом базы данных хэша в /etc/postfix/virtual:

sudo postconf -e 'virtual_alias_maps= hash:/etc/postfix/virtual'

Теперь мы можем начать сопоставление учетных записей почты с профилями пользователей в ОС Linux. Для этого создадим файл в nano, вы же можете выбрать любой другой текстовый редактор:

sudo nano /etc/postfix/virtual

Записываем все адреса, для которых мы хотим получать электронную почту, а также прописываем пользователей Ubuntu Postfix, которым будут приходить письма. Для примера возьмем следующую ситуацию: нам нужно получать все письма на адреса excontact@example2.com и exadmin@examlpe2.com и отправлять их пользователю операционной системы Linux с именем UserNameZ7. В таком случае настройка файла будет выглядеть следующим образом:

excontact@example2.com UserNameZ7

exadmin@examlpe2.com UserNameZ7

После успешного ввода данных сохраняемся и выходим из файла. В нашем случае это редактор nano, поэтому зажимаем на клавиатуре комбинацию клавиш «CTRL+X, Y» и жмем «Enter». После этого осуществляем сопоставление строчкой кода:

sudo postmap /etc/postfix/virtual

Затем перезагружаемся командой:

sudo systemctl restart postfix

Если брандмауэр был настроен с помощью UFW, вам потребуется добавить одно исключение. Это связано с тем, что UFW по умолчанию блокирует все внешние подключения к службам сервера. Решить проблему можно одной строчкой кода:

sudo ufw allow Postfix

Готово! Настройка Postfix на Ubuntu 20.04 прошла успешно. Теперь было бы хорошо его протестировать на почтовом клиенте, но сделать этого мы пока не можем. Прежде чем установить почтовый клиент, для начала нам нужно внести некоторые корректировки в параметры сервера Ubuntu.

Требования

Прежде чем переходить к установке программного средства, рекомендуем ознакомиться c необходимыми требованиями. Для реализации рассматриваемой задачи нам потребуется:

  • Сервер на Ubuntu 20.04, который будет функционировать в режиме почтовой службы. Требуется, чтобы он включал в себя пользователя без прав root с привилегиями sudo. Вместе с этим также необходим брандмауэр, настроенный с помощью Uncomplicated Firewall (UFW).
  • Доменное имя сервера. Если вам потребуется получить доступ к почте из внешнего источника, то нужно также позаботиться об MX-записи, которая будет указывать на почтовый сервер.

Без шифрования

Устанавливаем dovecot.

а) если используем CentOS / Red Hat:

yum install dovecot

б) если используем Ubuntu / Debian:

apt-get install dovecot-imapd dovecot-pop3d

Открываем конфигурационный файл Postfix:

vi /etc/postfix/main.cf

И добавляем:

smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

* где smtpd_sasl_path — путь до плагина аутентификации по механизму SASL; smtpd_sasl_auth_enable — разрешает или запрещает аутентификацию по механизму SASL; smtpd_sasl_type — тип плагина, который используется для SASL-аутентификации; smtpd_relay_restrictions — правила разрешения и запрета использования MTA при пересылке.

Открываем настройки аутентификации в dovecot:

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

и приводим опцию service auth к следующему виду:

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

* если соответствующей секции unix_listener нет, то ее нужно создать.

Отключаем требование ssl для аутентификации:

vi /etc/dovecot/conf.d/10-ssl.conf

ssl = no

Настройки аутентификации приводим к следующему виду:

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

auth_mechanisms = plain login

В этом же файле проверяем, что снят комментарий со следующей строки:

!include auth-system.conf.ext

Перезапускаем сервис Postfix:

systemctl restart postfix

Запускаем Dovecot:

systemctl enable dovecot

systemctl start dovecot

Готово. В качестве логина и пароля необходимо использовать системную учетную запись.

Отключение антивируса и антиспама

Отключить защиту для почты может понадобиться при различных обстоятельствах, например:

  1. Для диагностики проблем отправки сообщений.
  2. Экономии ресурсов (антивирус может слишком много потреблять ресурсов).
  3. При отсутствии необходимости.

И так, для отключения amavis (clam + spamassassin) открываем файл:

vi /etc/amavis/conf.d/50-user

Приводим к следующему виду настройку:

@bypass_virus_checks_maps = (1);
@bypass_spam_checks_maps  = (1);

* в данном примере мы сняли комментарий с данных строк (если они были закомментированы) и задаем для них значение 1. Опция bypass_virus_checks_maps отвечает за включение проверки писем на вирусы; bypass_spam_checks_maps — на СПАМ.

Перезапускаем службу amavis:

systemctl restart amavis

После данной настройки письма будут отправляться без проверок. Однако, сервис антивируса будет, по-прежнему, работать.

Останавливаем и отключаем сервис clamd:

systemctl disable clamav-daemon

systemctl stop clamav-daemon

Аналоги iRedMail

Если есть причины, по которым iRedMail не подходит, можно рассмотреть другие варианты:

1. iRedMail Pro. Платная версия настроенного в данной инструкции программного обеспечения. Обладает расширенными настройками и возможностями.

2. Ручная сборка компонентов для почтового сервера. Пример данной настройки описан в статье Почтовый сервер Postfix на CentOS 7 с виртуальными доменами, системой управления, веб-доступом и многим другим.

3. Microsoft Exchange Server (на Windows). Платный сервер, работает в среде Active Directory.

4. Zimbra (на Linux). Готовая сборка. Есть платная и бесплатная версии. Пример установки и настройки в инструкции Установка и настройка Zimbra на Linux.

Using Dovecot to Deliver Email to Message Store

Edit the Dovecot main configuration file.

sudo nano /etc/dovecot/dovecot.conf

Add to the supported protocols.

protocols = imap lmtp

Save and close the file. Then edit the Dovecot 10-master.conf file.

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

Change the lmtp service definition to the following.

service lmtp {
 unix_listener /var/spool/postfix/private/dovecot-lmtp {
   mode = 0600
   user = postfix
   group = postfix
  }
}

Save and close the file. Next, edit the Postfix main configuration file.

sudo nano /etc/postfix/main.cf
mailbox_transport = lmtp:unix:private/dovecot-lmtp
smtputf8_enable = no

Save and close the file.

Загрузка через операционную систему Windows

Запускаем. Откроется окно, куда необходимо ввести параметры подключения по протоколу SSH.

Слева вы увидите папки и файлы локальной машины, справа — файлы рабочего сервера, к которому подключились. Следует выбрать (либо создать, если такового нет) место, куда отправятся сертификаты. Используя функцию drag-n-drop, зажав левую клавишу мышки, переносите файлы .CA и .CRT.

Важно: удобнее будет сохранить .key в том же месте, где уже лежат файлы сертификатов. Это необязательно, но тогда вам придется запоминать расположение этого файла и указывать этот путь при конфигурации Apache, а не путь с нашего примера

Чтобы сделать копию .key и отправить в иную директорию, в случае генерации закрытого ключа на сервере, можно воспользоваться командой:

При этом:

cp — отвечает за копирование;/home/root/ — путь к файлу, если вы зашли «под рутом»;private.key — имя файла самого ключа;/etc/ssl/private.key — путь, куда мы хотим скопировать ключ.

Можно воспользоваться командой и удалить ключ в старой директории:

1. Настройка аутентификации на Postfix

Аутен­ти­фи­ка­ция на postfix будет выпол­нять­ся мето­дом dovecot. Для это­го уста­нав­ли­ва­ем его. Заод­но, уста­нав­ли­ва­ем и postfix (на слу­чай, если его нет еще в систе­ме). В зави­си­мо­сти от исполь­зу­е­мой опе­ра­ци­он­ной систе­мы исполь­зу­ем раз­ные команды.

а) если исполь­зу­ем Ubuntu / Debian:

apt-get update

apt-get install postfix dovecot-imapd dovecot-pop3d

б) если исполь­зу­ем CentOS / Red Hat:

yum install postfix dovecot

После уста­нов­ки паке­тов, раз­ре­ша­ем авто­за­пуск dovecot и postfix:

systemctl enable postfix dovecot

Откры­ва­ем на редак­ти­ро­ва­ние кон­фи­гу­ра­ци­он­ный файл наше­го MTA Postfix:

vi /etc/postfix/main.cf

Добав­ля­ем стро­ки (или меня­ем значения):

YAML

smtpd_sasl_type = dovecot
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = private/auth
smtpd_relay_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination

1
2
3
4
5
6
7

smtpd_sasl_type=dovecot
smtpd_sasl_auth_enable=yes
smtpd_sasl_path=private/auth
smtpd_relay_restrictions=

permit_mynetworks

permit_sasl_authenticated

reject_unauth_destination

* где:

  • smtpd_sasl_type — тип пла­ги­на, кото­рый исполь­зу­ет­ся для SASL-аутен­ти­фи­ка­ции. Коман­дой postconf -a мы можем полу­чить спи­сок меха­низ­мов аутен­ти­фи­ка­ции, кото­рые под­дер­жи­ва­ют­ся поч­то­вой системой.
  • smtpd_sasl_auth_enable — раз­ре­ша­ет или запре­ща­ет аутен­ти­фи­ка­цию по меха­низ­му SASL.
  • smtpd_sasl_path — путь до фай­ла для обме­на аутен­ти­фи­ка­ци­он­ной инфор­ма­ци­ей. Исполь­зу­ет­ся для вза­и­мо­дей­ствия несколь­ких систем — в нашем при­ме­ре Postfix + Dovecot.
  • smtpd_relay_restrictions — пра­ви­ла раз­ре­ше­ния и запре­та исполь­зо­ва­ния MTA при пере­сыл­ке. В нашем случае: 
    • permit_mynetworks — раз­ре­шить отправ­ку с ком­пью­те­ров, чьи IP-адре­са соот­вет­ству­ют настрой­ке mynetworks.
    • permit_sasl_authenticated — раз­ре­шить отправ­ку писем тем, кто про­шел авторизацию.
    • reject_unauth_destination — запре­тить всем, кто не про­шел про­вер­ку подлинности.

Про­ве­ря­ем кор­рект­ность настройки:

postconf > /dev/null

Если коман­да не вер­ну­ла оши­бок, пере­за­пус­ка­ем Postfix:

systemctl restart postfix

Пере­хо­дим к настрой­ке dovecot — откры­ва­ем файл:

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

… и при­во­дим опцию service auth к сле­ду­ю­ще­му виду:

YAML

service auth {

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

}

1
2
3
4
5
6
7
8
9

serviceauth{

unix_listener/var/spool/postfix/private/auth{

mode=0660

user=postfix

group=postfix

}

}

* если соот­вет­ству­ю­щей сек­ции unix_listener нет, то ее нуж­но создать. Обра­ти­те вни­ма­ние, что для обме­на аутен­ти­фи­ка­ци­он­ны­ми дан­ны­ми мы при­ме­ня­ем файл /var/spool/postfix/private/auth, кото­рый в кон­фи­гу­ра­ци­он­ном фай­ле postfix был ука­зан, как private/auth.

Отклю­ча­ем тре­бо­ва­ние ssl для аутен­ти­фи­ка­ции (на теку­щем эта­пе нам это не нужно):

vi /etc/dovecot/conf.d/10-ssl.conf

Про­ве­ря­ем, что­бы зна­че­ние ssl не было required:

ssl = yes

* нас устро­ит оба вари­ан­та — yes или no.

Настрой­ки аутен­ти­фи­ка­ции при­во­дим к сле­ду­ю­ще­му виду:

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

auth_mechanisms = plain login

* дан­ные меха­низ­мы поз­во­ля­ют пере­да­чу дан­ных в откры­том виде.

В этом же фай­ле про­ве­ря­ем, что снят ком­мен­та­рий со сле­ду­ю­щей строки:

!include auth-system.conf.ext

Про­ве­ря­ем кор­рект­ность настрой­ки dovecot:

doveconf > /dev/null

Если коман­да ниче­го не вер­ну­ла, пере­за­пус­ка­ем сервис:

systemctl restart dovecot

В каче­стве логи­на и паро­ля мож­но исполь­зо­вать любую систем­ную учет­ную запись. Созда­дим ее для теста:

useradd smtptest

passwd smtptest

Мы настро­и­ли про­стую аутен­ти­фи­ка­цию на сер­ве­ре SMTP. Для про­вер­ки мож­но вос­поль­зо­вать­ся любым поч­то­вым кли­ен­том. При­мер настрой­ки thunderbird:

Про­бу­ем отпра­вить пись­мо. Отправ­ка долж­на потре­бо­вать вво­да логи­на и пароль — исполь­зу­ем аутен­ти­фи­ка­ци­он­ные дан­ные для запи­си, создан­ной выше.

Мы завер­ши­ли настрой­ку аутн­ти­фи­ка­ции на postfix при отправ­ке пись­ма. Доба­вим про­вер­ку дан­ных через LDAP.

Troubleshooting Tips

Can’t login from Mail Clients

If you can’t log into your mail server from a desktop mail client, scan your mail server to find if the ports (TCP 587, 465, 143, and 993) are open. Note that you should run the following command from another Linux computer or server. If you run it on your mail server, then the ports will always appear to be open.

sudo nmap mail.your-domain.com

And check if Dovecot is running.

systemctl status dovecot
sudo journalctl -eu dovecot

For example, some folks may have the following error in the journal.

doveconf: Fatal: Error in configuration file /etc/dovecot/conf.d/10-master.conf line 78: Unknown setting

Most of the time, it’s a simple syntax error, like a missing curly bracket. Open the configuration file, go to the specified line and fix the error.

Cloudflare DNS

As I said in part 1, if you use Cloudflare DNS service, you should not enable the CDN (proxy) feature when creating DNS A record and AAAA record for the hostname of your mail server. Cloudflare doesn’t support SMTP or IMAP proxy.

Relay Access Denied

NOQUEUE: reject: RCPT from mail-il1-f180.google.com: 454 4.7.1 <>: Relay access denied; from=<> to=<> proto=ESMTP helo=<mail-il1-f180.google.com>

You can display the current value of with:

postconf mydestination

Some folks might not have the main domain name in the list like so:

mydestination = $myhostname, localhost.$mydomain, localhost

Then run the following command to add the main domain name to the list.

sudo postconf -e "mydestination = yourdomain.com, \$myhostname, localhost.\$mydomain, localhost"

Reload Postfix for the changes to take effect.

sudo systemctl reload postfix

User Doesn’t Exist

mail postfix/lmtp: 68E00FC1A5: to=, relay=mail.example.com[private/dovecot-lmtp], delay=509, delays=509/0.03/0.03/0.02, dsn=5.1.1, status=bounced (host mail.example.com[private/dovecot-lmtp] said: 550 5.1.1  User doesn't exist:  (in reply to RCPT TO command))

iOS Mail App

If you use the iOS Mail app to log into your mail server and encounter the following error.

You can try to fix it by enforcing SSL encryption, for both SMTP and IMAP.

Fun fact: It seems the iOS Mail app has difficulty in supporting STARTTLS on IMAP port 143, but it supports STARTTLS on the submission port 587.

Unable to Receive Email From Gmail, Hotmail, Yahoo Mail, etc

  1. Your MX record is wrong, or not propagated to the Internet yet.
  2. Your mail server hostname doesn’t have DNS A record, or not propagated to the Internet yet.
  3. Your firewall doesn’t allow incoming connection to port 25. Maybe your mail server is behind a NAT?
  4. Postfix isn’t listening on the public IP address.
  5. Check the mail log () to find out if there are other errors in your Postfix and Dovecot configuration.

Сбросить пароль

В бесплатной версии iredmail сброс паролей выполняется напрямую в СУБД или каталоге LDAP. Подробнее процедура описана на официальном сайте. Мы же рассмотрим пример работы с базой MySQL.

Создаем хэш для пароля:

doveadm pw -s ‘ssha512’

Система попросит нас ввести дважды пароль — вводим тот, что хотим использовать. В итоге, мы получим хэш, например:

{SSHA512}53iNTXnhUNMXmhKOEARf38tD1I/xbafuQ3HIrQxCnI0Pxj0Ikp87rxnFE2bTEEEQHquU7+w9nwGlmTNqjqIHEqKgJhw=

Подключаемся к базе:

mysql -p

Выбираем базу:

> USE vmail

Смотрим пользователей:

> select username, isadmin, isglobaladmin from mailbox;

Сбрасываем пароль для пользователя с правами администратора, например:

* в нашем примере, для postmaster@dmosk.ru.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: