Користувальницькькі налаштування

Налаштування сайту


mailserver

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Both sides previous revision Попередня ревізія
Наступна ревізія
Попередня ревізія
Остання ревізія Both sides next revision
mailserver [2016/11/19 11:48]
wombat Самодельный транспорт
mailserver [2020/05/20 20:15]
wombat SASL
Рядок 139: Рядок 139:
  
   sudo /​etc/​init.d/​postfix reload   sudo /​etc/​init.d/​postfix reload
 +
 +
 +
 +
 +==== SASL-аутентификация ====
 +
 +Для того, чтобы Postfix принимал письма для дальнейшей пересылки с других компьютеров (например,​ с нашего же домашнего почтового клиента),​ нужно обеспечить аутентификацию пользователей,​ так как без неё он будет либо принимать письма ото всех подряд,​ либо ни от кого.
 +
 +Инструкция по настройке SASL-аутентификации находится здесь: http://​www.postfix.org/​SASL_README.html
 +
 +Сначала надо проверить,​ какие реализации SASL поддерживает Postfix в нашей системе:​
 +
 +  sudo postconf -a
 +  cyrus
 +  dovecot
 +
 +Видим, что их две: ''​cyrus''​ и ''​dovecot''​. Далее будем рассматривать вариант с ''​cyrus''​.
 +
 +Установим необходимые библиотеки и инструменты. В Debian это:
 +
 +  sudo apt-get install libsasl2-2 libsasl2-modules sasl2-bin libsasl2-modules-db
 +
 +Запустим службу аутентификации и проверим на подлинность какого-либо пользователя,​ имеющегося в системе:​
 +
 +  sudo systemctl -l restart saslauthd
 +  sudo testsaslauthd -u username -p password
 +  0: OK "​Success."​
 +
 +Если видим надпись ''​OK "​Success."'',​ значит,​ служба запущена,​ отвечает на запросы и выполняет проверки.
 +
 +Далее нужно внести изменения в настройки самого Postfix:
 +
 +<file conf /​etc/​postfix/​main.cf>​
 +smtp_tls_security_level = may
 +smtp_tls_cert_file = /​etc/​ssl/​certs/​mymailserver.cert
 +smtp_tls_key_file = /​etc/​ssl/​private/​mymailserve.key
 +smtp_tls_note_starttls_offer = yes
 +smtpd_tls_security_level = may
 +smtpd_tls_cert_file = /​etc/​ssl/​certs/​mymailserver.cert
 +smtpd_tls_key_file = /​etc/​ssl/​private/​mymailserver.key
 +
 +smtpd_sasl_auth_enable = yes
 +smtpd_sasl_type = cyrus
 +smtpd_sasl_path = smtpd
 +broken_sasl_auth_clients = yes
 +smtpd_sasl_security_options = noplaintext,​ noanonymous
 +smtpd_sasl_tls_security_options = noanonymous
 +smtpd_sender_login_maps = hash:/​etc/​postfix/​controlled_envelope_senders
 +smtpd_relay_restrictions = permit_mynetworks,​
 +                           ​reject_sender_login_mismatch, ​
 +                           ​permit_sasl_authenticated, ​
 +                           ​defer_unauth_destination
 +
 +</​file>​
 +
 +Если мы хотим проверять подлинность пользователей,​ указанных в базе данных ''/​etc/​sasldb2'',​ в файле ''/​etc/​postfix/​sasl/​smtpd.con''​ указываем метод ''​auxprop''​ с плагином ''​sasldb'':​
 +
 +<file conf /​etc/​postfix/​sasl/​smtpd.conf> ​
 +#​pwcheck_method:​ saslauthd
 +#mech_list: PLAIN LOGIN
 +
 +pwcheck_method:​ auxprop
 +auxprop_plugin:​ sasldb
 +mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5 NTLM
 +</​file>​
 +
 +Редактировать базу данных ''/​etc/​sasldb2''​ можно при помощи команды ''​saslpasswd2'':​
 +
 +  sudo saslpasswd2 -c -u mydomain.com username
 +
 +Просмотреть список всех пользователей в базе можно командой:​
 +  sudo sasldblistusers2
 +
 +Далее необходимо обеспечить доступ Postfix к этой базе для проверки. Для этого нужно сменить группу -владельца этого файла и добавим Postfix в эту группу:​
 +  sudo chown :sasl /​etc/​sasldb2
 +  sudo usermod -a -G sasl postfix
 +
 +<note important>​Важно заметить,​ что именем пользователя при такой проверке является полное выражение вида ''​username@mydomain.com'',​ а не просто ''​username''​.</​note>​
 +  ​
 +Далее, мы, вероятно,​ хотим, чтобы Postfix не позволял пользователям (даже зарегистрированным) указывать посторонние адреса в поле ''​From:''​ отправляемых писем. Для этого мы ограничим возможности пользователя в указании своего адреса,​ и укажем,​ кто каким адресом имеет право пользоваться.
 +
 +В конфигурации Postfix этому соответствуют параметр ''​reject_sender_login_mismatch''​ и путь к файлу-таблице,​ содержащему соответствие пользователей и адресов ''​smtpd_sender_login_maps''​. В этот файл нужно внести в первую колонку - адрес пользователя,​ указанный им в письме,​ а во вторую колонку -- имя этого пользователя в базе SASL:
 +
 +<file conf /​etc/​postfix/​controlled_envelope_senders>​
 +# envelope sender ​          ​owners (SASL login names)
 +john@example.com ​           john@example.com
 +helpdesk@example.com ​       john@example.com,​ mary@example.com
 +postmaster ​                 admin@example.com
 +@example.net ​               barney, fred, john@example.com,​ mary@example.com
 +</​file>​
 +
 +Далее нужно преобразовать эту таблицу из простого текстового файла в базу данных:​
 +
 +  cd /​etc/​postfix/​
 +  sudo postmap controlled_envelope_senders
 +
 +И наконец,​ можно перезапустить Postfix с новыми настройками и посмотреть,​ что вышло:
 +
 +  sudo postfix reload
 +
 +Теперь можно проверить,​ принимает ли сервер подключения и предоставляет возможности SSL-аутентификации ((пример взят отсюда:​ http://​www.postfix.org/​SASL_README.html#​server_test))
 +
 +  telnet ​ server.example.com 25
 +  ...
 +  220 server.example.com ESMTP Postfix
 +  EHLO client.example.com
 +  250-server.example.com
 +  250-PIPELINING
 +  250-SIZE 10240000
 +  250-ETRN
 +  250-AUTH DIGEST-MD5 PLAIN CRAM-MD5
 +  250 8BITMIME
 +  AUTH PLAIN AHRlc3QAdGVzdHBhc3M=
 +  235 Authentication successful
 +
 +Причём эти строки вводятся со стороны клиента:​
 +  EHLO client.example.com
 +  AUTH PLAIN AHRlc3QAdGVzdHBhc3M=
 +
 +Если сервер отвечает на указанном порту и показывает доступные методы аутентификации,​ значит,​ всё настроено правильно.
  
  
Рядок 205: Рядок 325:
 "​|/​usr/​bin/​spamc|/​usr/​bin/​maildrop -d ${USER}"​ "​|/​usr/​bin/​spamc|/​usr/​bin/​maildrop -d ${USER}"​
 </​file>​ </​file>​
 +
 +
 +====== Фильтр исходящей почты ======
 +
 +http://​www.postfix.org/​FILTER_README.html
  
  
mailserver.txt · В останнє змінено: 2020/05/20 21:59 by wombat