Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
Both sides previous revision Попередня ревізія | Остання ревізія Both sides next revision | ||
mailserver [2017/06/11 20:53] 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= | ||
+ | |||
+ | Если сервер отвечает на указанном порту и показывает доступные методы аутентификации, значит, всё настроено правильно. | ||