Part 2: install dovecot imap server on ubuntu & enable tls encryption

Введение

Почтовый сервер хотел изучить уже давно, но руки дошли только сейчас, да и информации корректной не особо много удавалось найти, поэтому решил написать как можно более подробную публикацию. В данной публикации пойдёт речь не только о postfix, dovecot, mysql, postfixadmin, а также и о spamassassin, clamav-milter(специальная версия clamav для почтовых серверов), postgrey, а также о возможности переноса спама в папку «Спам»(dovecot-pigeonhole).

Подготовка

Первым делом установим пакеты которые понадобятся для работы (postfix, dovecot и dovecot-pigeonhole необходимо установить из портов, dovecot-sieve можно в принципе установить из пакетов, но в портах версии бывают более новые и по этой причине может быть не совместимость dovecot с dovecot-sieve). Установим следующие пакеты:

После установки поместим необходимые службы в автозапуск:

Запустим службы:

Не забываем добавить в httpd.conf строки необходимые для работы php в apache и корректной работы postfixadmin:

Далее необходимо перейти в каталог и скачать postfixadmin

Скачаем postfixadmin (на момент написания актуальная версия была 3.2)

После этого необходимо распаковать архив в данный каталог и изменить владельца каталога:

Далее подготовим базу данных для postfixadmin, выполните скрипт mysql-secure-installation(тот пароль который Вы создадите в данном скрипте, необходимо будет создать и в mysql командой alter user), для первичной настройки mysql, далее войдите в mysql, создайте базу данных и права для неё:

После того как база данных настроена необходимо отредактировать файл config.inc.php, в данном примере этот файл находится в каталоге /usr/local/www/apache24/data/postfixadmin-3.2/, в данном файле необходимо отредактировать несколько строк и привести их к виду, после того как измените данные настройки, перезагрузите apache, также необходимо создать каталог templates_c в каталоге /usr/local/www/apache24/data/postfixadmin-3.2 и назначить на него владельца www:

SSL

Для генерации ключа будем использовать способ который предложен на сайте postfix.org, с созданием собственного центра сертификации, необходимо перейти в каталог /etc/ssl и выполнить скрипт:

Во время выполнения скрипта будет запрошено имя для сертификата, не чего не вводите, нажмите Enter, далее скрипт запросит создать пароль для сертификата, далее будут стандартные вопросы для создания сертификата.
Далее необходимо создать секретный ключ(без пароля) и не подписанный сертификат открытого ключа(Organizational Unit Name (eg, section) [] должен отличаться от того, что указан в сертификате созданном выше):

Подпишем сертификат открытого ключа(количество дней укажите столько, сколько вам необходимо):

Созданные сертификаты оставьте в данном каталоге, или перенесите их в тот каталог который Вам более удобен, «конфиги» postfix и dovecote будут настроены с учётом того, что сертификаты будут находиться в данном каталоге.

Пользователь vmail

Перед тем как приступить к установке postfix, dovecot и dovecot-pigeonhole, создадим пользователя и группу(группа создаться автоматически) vmail, а также каталог в котором будет располагаться почта.

Создадим каталог для почты и назначим владельцем пользователя vmail:

Проверка работы квот

Для начала в командной строке вводим:

doveadm quota get -u user@domain.net

* user@domain.net — почтовый пользователь, для которого нужно показать квоту.

Данная команда отобразит квоту для пользователя, например:

Quota name Type    Value Limit                %
User quota STORAGE  16420  50000               32
User quota MESSAGE    14     —                0

Теперь открываем PostfixAdmin — заходим в настройки почтового ящика и ставим небольшой лимит, например, в 5 Мб:

Теперь объем ящика превышает лимит:

doveadm quota get -u user@domain.net

Quota name Type    Value Limit                %
User quota STORAGE  16420  5000               328
User quota MESSAGE    14     —                0

* объем превышен, почти, втрое.

Некоторые почтовые клиенты покажут превышение лимита, например, Thunderbird:

Настройка PostfixAdmin

На данном этапе наша задача настроить подключение PostfixAdmin к базе данных, зарегистрировать домен и несколько почтовых ящиков для нового домена.

Проверяем создала ли конфигурационная утилита базу данных и пользователя для нашего PostfixAdmin. Для этого заходим через phpMyAdmin на сервер MySQL. При установке по-умолчанию phpMyAdmin работает по адресу http://ВашХост/phpmyadmin. В списке баз данных должна быть БД postfixadmin. Не пугайтесь, что она пустая. Структура таблиц будет создана позже во время настройки подключения к БД самого PostfixAdmin. Так же в списке пользователей должен быть пользователь с идентификатором postfixadmin. Если этого нет, то необходимо создать БД и пользователя с максимальными правами доступа к этой БД.

К сожалению, конфигурационная утилита установки пакета не изменяет параметров файла config.inc.php, даже если с ее помощью создается БД. Конфигурационный файл PostfixAdmin находится в каталоге /etc/postfixadmin/config.inc.php. Изменяем параметры в данном файле в соответствии с приведенным ниже кодом:

Изменим алгоритм шифрования пароля заданный по-умолчанию в PostfixAdmin:

Обращаемся к процедуре настройки http://ВашХост/postfixadmin/setup.php. Если ошибок не обнаружено, внизу страницы появится запрос на создание пароля установки. Этот пароль используется для создания администраторов. После указания пароля и нажатия на кнопку Generate password hash, должна появится строка вида:

В файле config.inc.php необходимо найти соответствующий параметр и заменить этой строкой, только после этого можно будет создать администратора.

Step 5: Configure SpamAssassin

First we need to install SpamAssassin.

Then we need to create a user for SpamAssassin.

To successfully configure SpamAssassin, it’s necessary to open and modify the configuration settings.

We need to change the parameter to enable SpamAssassin daemon.

We need to configure the home and options parameters.

Then we need to specify the parameter like this:

Finally, we need to specify that SpamAssassin’s rules will be updated automatically.

Note: Compare these changes with this file to detect mistakes or errors:

We need to open to set up the anti-spam rules.

Then we need to find the following line and add the spamassassin filter:

Finally we need to append the following parameters:

Congratulations! You have successfully set up your mail server with Postfix and Dovecot with MySQL authentication and spam filtering with SpamAssassin!

Создание сертификата и настройка домена

Для создания сертификата можно воспользоваться бесплатным онлайн инструментом на сайте dkimcore.org. Однако, в данном примере, мы воспользуемся opendkim-genkey и сформируем его самостоятельно. Мы будем работать с доменом dmosk.ru (Вам необходимо его заменить своим).

И так, создаем каталог для размещения ключей домена:

mkdir -p /etc/opendkim/dmosk.ru

И генерируем их следующей командой:

opendkim-genkey -D /etc/opendkim/dmosk.ru/ —domain dmosk.ru —selector relay

* где dmosk.ru — домен, с которого будет отправляться почта: relay — имя селектора (селектор — это строковый идентификатор, он может быть любым).

В папке /etc/opendkim/dmosk.ru должно появиться два файла с расширениями .private и .txt. Первый — закрытый ключ (храним его у себя на сервере), второй — готовая txt-запись для DNS.

Задаем группу владельца opendkim для созданных ключей:

chown :opendkim /etc/opendkim/dmosk.ru/*

Если система выдаст ошибку, что группы opendkim не существует (chown: opendkim: illegal group name), необходимо сначала создать учетную запись.

Задаем права для группы владельца:

chmod g+rw /etc/opendkim/dmosk.ru/*

Создадим пользователя opendkim.

FreeBSD:

pw useradd opendkim -m -s /usr/sbin/nologin -w no

Linux (Ubuntu, CentOS):

useradd opendkim -m -s /sbin/nologin

После разрешаем чтение группе владельцу:

chmod g+r /etc/opendkim/dmosk.ru/*

Открываем созданный нами ранее TrustedHosts:

vi /etc/opendkim/TrustedHosts

И добавим следующее:


*.dmosk.ru

* где dmosk.ru — почтовый домен.

Создаем таблицу KeyTable. В ней хранится список соответствий между селекторами, доменами и файлами с закрытыми ключами. Формат записей:<селектор>._domainkey.<домен> <домен>:<селектор>:<путь к закрытому ключу>

vi /etc/opendkim/KeyTable

И в соответствии с форматом приводим его к нужному виду:

relay._domainkey.dmosk.ru dmosk.ru:relay:/etc/opendkim/dmosk.ru/relay.private

vi /etc/opendkim/SigningTable

И приводим к такому виду:

*@dmosk.ru relay._domainkey.dmosk.ru

Дополнительные настройки

Добавление отправителей в белый список

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

vi /opt/zimbra/conf/amavisd.conf.in

Находим строку:

   { # a hash-type lookup table (associative array)
   …
   }

… и внутри фигурных скобок {} добавим нужный нам домен или конкретного отправителя:

   …
   ‘dmosk.ru’                           =>  -10.0,
   ‘sender@dmosk2.ru’                   =>  -10.0,
}

* таким образом мы сказали, что для писем с домена dmosk.ru и отправителя sender@dmosk2.ru отнимать 10 баллов за СПАМ. Такие письма начнут приходить без блокировки (при условии, что не будет отправлен явный СПАМ, который наберет очень много баллов).

После настройки перезапускаем amavis:

su — zimbra -c «zmamavisdctl stop && zmamavisdctl start»

Размер отправляемого сообщения

Задать максимальный размер сообщений можно командой:

su — zimbra -c ‘zmprov modifyConfig zimbraMtaMaxMessageSize 31457280’

* в данном примере мы задаем максимальный размер сообщения 30 мб.

После перезапускаем postfix:

su — zimbra -c «postfix reload»

Настройка клиента

Рассмотрим принцип настройки клиента Mutt для работы по IMAP и POP3.

IMAP + SMTP

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

vi ~/.muttrc

И приводим его к следующему виду:

set from = master@dmosk.ru
set imap_user = master@dmosk.ru
set imap_pass = password
set smtp_pass = password
set realname = «Дмитрий Моск»
set smtp_url = smtp://smtp.dmosk.ru:465/
set folder = imaps://imap.dmosk.ru:993
set spoolfile = +INBOX
set postponed = +/Drafts
set use_from = yes
set editor=’nano’
set sort = reverse-threads
set sort_aux = last-date-received
set fast_reply=yes
set include=yes
set forward_quote=yes
set delete=yes
set imap_keepalive  = 900
set copy = no
set move = no
set header_cache    = ~/.mutt/cache/headers
set message_cachedir    = ~/.mutt/cache/bodies
set certificate_file    = ~/.mutt/certificates
set ssl_starttls = yes
set ssl_force_tls = yes
set smtp_authenticators = ‘login’

* где необходимо обратить внимание на следующие опции: 

  • master@dmosk.ru — адрес электронной почты; Используем для поля from и в качестве логина.
  • master — имя учетной записи; 
  • password — пароль; 
  • Дмитрий Моск — отображаемое имя; 
  • smtp.dmosk.ru — SMTP-сервер; В данном примере мы подключаемся к серверу по SSL-порту 465. Также могут быть варианты 587 и 25.
  • imap.dmosk.ru — сервер IMAP. Подключение выполняем по SSL-порту 993. Также можно использовать порт 143.

Для проверки вводим команду:

mutt

При запросе подтвердить принятие сертификата, нажимаем a. 

POP3 + SMTP

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

vi ~/.muttrc

И приводим его к следующему виду:

set from = master@dmosk.ru
set smtp_pass = password
set realname = «Дмитрий Моск»
set smtp_url = smtp://smtp.mail.ru:465/
set pop_user = master@dmosk.ru
set pop_pass = password
set pop_host = pops://pop.dmosk.ru:995/
set pop_reconnect = yes
set pop_checkinterval = 1
set pop_delete = no
set mbox_type = mbox
set folder = ~/mail
set mbox = +Inbox
set spoolfile= +Inbox
set use_from = yes
set editor=’nano’
set sort = reverse-threads
set sort_aux = last-date-received
set fast_reply=yes
set include=yes
set forward_quote=yes
set delete=yes
set imap_keepalive  = 900
set copy = no
set move = no
set header_cache    = ~/.mutt/cache/headers
set message_cachedir    = ~/.mutt/cache/bodies
set certificate_file    = ~/.mutt/certificates
set ssl_starttls = yes
set ssl_force_tls = yes
set smtp_authenticators = ‘login’

* где необходимо обратить внимание на следующие опции: 

  • master@dmosk.ru — адрес электронной почты; Используем для поля from и в качестве логина.
  • master — имя учетной записи; 
  • password — пароль; 
  • Дмитрий Моск — отображаемое имя; 
  • smtp.dmosk.ru — SMTP-сервер; В данном примере мы подключаемся к серверу по SSL-порту 465. Также могут быть варианты 587 и 25.
  • imap.dmosk.ru — сервер IMAP. Подключение выполняем по SSL-порту 993. Также можно использовать порт 143.

Для проверки вводим команду:

mutt

При запросе подтвердить принятие сертификата, нажимаем a. 

System users

If you wish you use dovecot-lda for all system users on a single domain mail host you can do it by editing mailbox_command parameter in

/etc/postfix/main.cf (postconf(5)):

mailbox_command = /usr/local/libexec/dovecot/dovecot-lda -f "$SENDER" -a "$RECIPIENT"
#  or
mailbox_command = /usr/libexec/dovecot/dovecot-lda -f "$SENDER" -a "$RECIPIENT"
#  or
mailbox_command = /usr/lib/dovecot/dovecot-lda -f "$SENDER" -a "$RECIPIENT"
#  or wherever it was installed in your system.

Then run postfix reload.

  • This command doesn’t do a userdb lookup. If you want that (e.g. for per-user quota lookups) you need to add -d "$USER" parameter.

  • Postfix runs mailbox_command with both the uid and gid of the destination user. This may not allow dovecot-lda to write a lock file in /var/mail. When this directory is writable by a privileged group (say main, see the option mail_privileged_group), we can use the setgid permission bit on the dovecot-lda executable:

       # chgrp mail /usr/lib/dovecot/dovecot-lda
       # chmod 2755 /usr/lib/dovecot/dovecot-lda

    Alas these permission will disappear if you update dovecot. A more robust way to do so is to compile a relay program /etc/postfix/dovecot-lda-relay that has the setgid permission and execs the real dovecot-lda.

       # cd /etc/postfix
       # cat >dovecot-lda-relay.c <<EOF
         #include <unistd.h>
         char *pgm = "/usr/lib/dovecot/dovecot-lda";  /* wherever dovecot-lda is located */
         int main{int argc, char**argv) { argv=pgm; execv(pgm,argv); return 10; }
       EOF
       # gcc -o dovecot-lda-relay dovecot-lda-relay.c
       # chown root:mail dovecot-lda-relay
       # chmod 2755 dovecot-lda-relay

    Then, simply invoke /etc/postfix/dovecot-lda-relay instead of dovecot-lda in mailbox_command.

  • Postfix’s mailbox_size_limit setting applies to all files that are written via dovecot-lda. The default is 50 MB, so dovecot-lda can’t write any files larger than that, including mbox files or log files. This shows up only in Dovecot’s logs:

    dovecot-lda(user): write() failed with mbox file /home/user/mail/foo: File too large (process was started with ulimit -f limit)
  • If you have trouble seeing anything in Dovecot’s logs, see .

Тестирование

Для тестирования всех возможных подключений(STARTTLS, SLL) можно использовать клиент для мобильных устройств(в моём случаи для ios) «МойОфис Почта», в данном приложении есть множество параметров для настройки подключений к почтовому серверу.

Для тестирования spaassasin используем сигнатуру GTUBE, в письмо добавьте строку:

Если всё корректно, то письмо будет помечено спамом и соответственно перемещено в папку спам.

Для тестирования антивируса необходимо послать письмо с текстовым файлом, в данном файле будет последовательность EICAR:

Письма естественно необходимо отправлять с внешних почтовых ящиков.
Для просмотра логов в реальном времени запустите:

Также для корректного тестирования отправки почты на внешние почтовые ящики(например на yandex.ru, mail.ru, gmail.com и т.д.) необходимо прописать обратную зону DNS(PTR запись), проделать это можно путём обращения в Ваш провайдер(если у Вас конечно не собственный DNS сервер).

System Setup

The following ingredients are necessary to make your droplet ready to be a mail server:

  • A domain, let’s assume it is “mydomain.com”

  • A hostname for your mail server, let’s assume “mail.mydomain.com”

  • An SSL certificate that is valid for “mail.mydomain.com”

Setting up SSL certificate

For SSL, you need a certificate and a private key. In this tutorial, we’re going to assume that the certificate is saved in and the key is saved in . Make sure the key is only readable by the root user!

and leaving the default values in by just hitting enter on all questions asked. Don’t use this certificate in production!

Most CAs will require you to submit a certificate signing request. (CSR) You can generate one like this:

Fill in the information queried properly, like in this transcript: (Check with the CA you intend to use on what information needs to be in the CSR)

(Note that this way you cannot create a certificate valid for more than one domain using the field without some additional work — again, check the CA’s documentation!)

Setting up DNS

Here is how to do it if you’re using DigitalOcean’s DNS:

  • Go to the “DNS” area in your DigitalOcean panel
  • Create a new domain or select one you’ve created before
  • Click the “Add record” button in the top right
  • Add an A record:

Click “Add record” again and add an MX record that points to the A record:

Additional information can be found in the Host Name setup and DNS tips and tricks articles.

Verify DNS

DNS will take a few hours to propagate all over the internet, but it should be set on your DNS server after a few minutes. You can check with dig & host:

EncFS (optional)

As you can see  in the picture above (a warning while installing), EncFS is not the ideal one. It has some known vulnerabilities, so maybe some other alternatives like CryFS  might be better idea. For this example, we’ll stick to EncFS.

$ apt-get install encfs
mkdir /encrypted-mail /decrypted-mail
chgrp mail /decrypted-mail/
chmod -R g+rw /decrypted-mail/
gpasswd -a mail fuse
chgrp fuse /dev/fuse; chmod g+rw /dev/fuse
root@li212-205:~# encfs /encrypted-mail /decrypted-mail -o --public
Creating new encrypted volume.
Please choose from one of the following options:
 enter "x" for expert configuration mode,
 enter "p" for pre-configured paranoia mode,
 anything else, or an empty line will select standard mode.
?> p
Paranoia configuration selected.
Configuration finished.  The filesystem to be created has
the following properties:
Filesystem cipher: "ssl/aes", version 3:0:2
Filename encoding: "nameio/block", version 3:0:1
Key Size: 256 bits
Block Size: 1024 bytes, including 8 byte MAC header
Each file contains 8 byte header with unique IV data.
Filenames encoded using IV chaining mode.
File data IV is chained to filename IV.
File holes passed through to ciphertext.
-------------------------- WARNING --------------------------
The external initialization-vector chaining option has been
enabled.  This option disables the use of hard links on the
filesystem. Without hard links, some programs may not work.
The programs 'mutt' and 'procmail' are known to fail.  For
more information, please see the encfs mailing list.
If you would like to choose another configuration setting,
please press CTRL-C now to abort and start over.
Now you will need to enter a password for your filesystem.
You will need to remember this password, as there is absolutely
no recovery mechanism.  However, the password can be changed
later using encfsctl.
New Encfs Password:
Verify Encfs Password:

It’s that simple.   is now a regular directory.   is that same data, just encrypted.

Configure Postfix

Just in case, create backup(s) for the config files we’re going to change. Open the file to modify it:

nano /etc/postfix/main.cf

First we need to comment the TLS Parameters and append other parameters. You can use the Free SSL certificates and the paths that are suggested:

# TLS parameters
#smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
#smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
#smtpd_use_tls=yes
#smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
#smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache 
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

or you could modify depending on your personal configuration, for instance using Let’s encrypt.

# TLS parameters
smtpd_tls_cert_file=/etc/letsencrypt/live/<DOMAIN.com>/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/<DOMAIN.com>/privkey.pem
smtpd_tls_CAfile=/etc/letsencrypt/live/<DOMAIN.com>/chain.pem

Then we are going to append the following parameters below the TLS settings that we have changed in the previous step:

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

We need to comment the mydestination default settings and replace it with localhost. This change allows your VPS to use the virtual domains inside the MySQL table.

#mydestination = cyberpunk.rs, mail.cyberpunk.rs, localhost.cyberpunk.rs, localhost
mydestination = localhost

Verify that myhostname parameter is set with your FQDN.

myhostname = mail.cyberpunk.rs

Append the following line for local mail delivery to all virtual domains listed inside the MySQL table.

virtual_transport = lmtp:unix:private/dovecot-lmtp

Finally, we need to add these three parameters to tell Postfix to configure the virtual domains, users and aliases.

virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf

We are going to create the final three files that we append in the main.cf file to tell Postfix how to connect with MySQL.

First we need to create the  file. It’s necessary to change the values depending your personal configuration.

nano /etc/postfix/mysql-virtual-mailbox-domains.cf
		
user = usermail
password = mailpassword
hosts = 127.0.0.1
dbname = servermail
query = SELECT 1 FROM virtual_domains WHERE name='%s'

Then we need to restart Postfix.

service postfix restart

We need to ensure that Postfix finds your domain, so we need to test it with the following command. If successful, it should return 1:

postmap -q cyberpunk.rs mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf

Then we need to create the file.

nano /etc/postfix/mysql-virtual-mailbox-maps.cf 
		
user = usermail
password = mailpassword
hosts = 127.0.0.1
dbname = servermail
query = SELECT 1 FROM virtual_users WHERE email='%s'

Restart Postfix again:

service postfix restart
postmap -q email1@cyberpunk.rs mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf

Finally, we are going to create the last file to configure the connection between Postfix and MySQL:

nano /etc/postfix/mysql-virtual-alias-maps.cf
		
user = usermail
password = mailpassword
hosts = 127.0.0.1
dbname = servermail
query = SELECT destination FROM virtual_aliases WHERE source='%s'

Restart Postfix again:

service postfix restart
postmap -q alias@cyberpunk.rs mysql:/etc/postfix/mysql-virtual-alias-maps.cf
nano /etc/postfix/master.cf

We need to uncomment these lines and append other parameters:

submission inet n       -       -       -       -       smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject

In some cases, we need to restart Postfix to ensure port 587 is open.

service postfix restart

Note: You can use “” cmd to check if your system listens on specific ports, or you can use this tool to scan your domain ports and verify that port and are open.

Защищаем сообщения от попадания в СПАМ

Чтобы другие почтовые системы не принимали наши письма за СПАМ, выполняем следующие рекомендации:

А-запись в DNS

Для FQDN-имени почтового сервера должна быть создана А-запись в DNS. Пример записи:

mail.dmosk.ru   A   90.156.242.197

Создаем PTR-запись для внешнего IP-адреса

Она должна вести на имя сервера (в данном примере, mail.dmosk.ru). Чтобы создать такую запись, нужно написать обращение Интернет-провайдеру или хостеру виртуальной машины. Пример записи:

171.23.222.83.in-addr.arpa      name = mail.dmosk.ru

* данная запись соответствует IP-адресу 83.222.23.171.

Эта запись создается в DNS для домена, от которого идет отправка сообщений. Пример:

dmosk.ru     text = «v=spf1 +mx -all»

Прописываем DKIM в DNS

Для начала, смотрим ключ, который был сформирован во время установки iRedMail:

amavisd-new showkeys

Пример ответа:

dkim._domainkey.dmosk.ru.     3600 TXT (
  «v=DKIM1; p=»
  «MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHNu0ZlYkq8pKsp131jnoZ+Ief»
  «zcSP1WxGzGQXssg3yiRGBlqsRGBnnKgitrsPYTZbzqqL+/rW0ptGNhAqfTWHvMia»
  «+f4RSMLJPMREFtakVEZvTIK5iZvxuCZpVhvM6ldadTLAxbcupX38yMfJV73EwCHK»
  «d2mdqfW+emSW/paUwQIDAQAB»)

Копируем DKIM и создаем в DNS запись TXT. Пример:

dmosk.ru     text = «v=DKIM1; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHNu0ZlYkq8pKsp131jnoZ+IefzcSP1WxGzGQXssg3yiRGBlqsRGBnnKgitrsPYTZbzqqL+/rW0ptGNhAqfTWHvMia+f4RSMLJPMREFtakVEZvTIK5iZvxuCZpVhvM6ldadTLAxbcupX38yMfJV73EwCHKd2mdqfW+emSW/paUwQIDAQAB»

Создать другую подпись DKIM

Генерируем новый ключ:

amavisd-new genrsa /var/lib/dkim/dmosk2.ru.pem 1024

* где dmosk2.ru — новый домен, для которого мы сгенерируем подпись dkim.
* некоторые системы не работают с ключами более чем 1024 бит.

Задаем права на созданный файл:

chown amavis:amavis /var/lib/dkim/dmosk2.ru.pem

chmod 0400 /var/lib/dkim/dmosk2.ru.pem

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

vi /etc/amavisd.conf

Находим строчку:

dkim_key(‘dmosk.ru’, «dkim», «/var/lib/dkim/dmosk.ru.pem»);

И добавляем радом с ней новую. Получится так:

dkim_key(‘dmosk.ru’, «dkim», «/var/lib/dkim/dmosk.ru.pem»);
dkim_key(‘dmosk2.ru’, «dkim», «/var/lib/dkim/dmosk2.ru.pem»);

Теперь находим строчку:

@dkim_signature_options_bysender_maps = ( {
   …
   «dmosk.ru» => { d => «dmosk.ru», a => ‘rsa-sha256’, ttl => 10*24*3600 },

И также после нее добавляем новую. Должно получиться:

@dkim_signature_options_bysender_maps = ( {
   …
   «dmosk.ru» => { d => «dmosk.ru», a => ‘rsa-sha256’, ttl => 10*24*3600 },
   «dmosk2.ru» => { d => «dmosk2.ru», a => ‘rsa-sha256’, ttl => 10*24*3600 },

Перезапускаем amavisd:

amavisd-new restart

Политика DMARC

Данная политика определяет, что делать с письмом, которое не проходит проверку. Подробнее о DMARC.

Для создания данной политики необходимо в DNS добавить TXT запись, примерно, такого содержания:

_dmarc.dmosk.ru. 3600 IN TXT «v=DMARC1; p=quarantine; sp=none; pct=100; fo=0; rua=mailto:postmaster@dmosk.ru»

* данная запись означает, что все письма, которые не прошли проверку, необходимо отправить в карантин, а отчет написать на ящик postmaster@dmosk.ru.

Ящик abuse

По аналогии с тем, как мы создавали тестовую учетную запись, необходимо создать ящик abuse@… На данный ящик могут приходить жалобы на СПАМ. Стоит время от времени просматривать его (или настроить переадресацию), и реагировать на жалобы.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *