mailserver
Розбіжності
Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
| Порівняння попередніх версійПопередня ревізіяНаступна ревізія | Попередня ревізія | ||
| mailserver [2016/11/16 20:26] – Фильтрация спама wombat | mailserver [2020/05/20 18:59] (поточний) – [Фильтрация спама] wombat | ||
|---|---|---|---|
| Рядок 7: | Рядок 7: | ||
| http:// | http:// | ||
| - | == Ограничение скорости отправки писем == | + | === Ограничение скорости отправки писем |
| Антиспам-системы многих сервисов проводят контроль скорости отправки электронной почты. Поэтому когда Postfix отправляет письма " | Антиспам-системы многих сервисов проводят контроль скорости отправки электронной почты. Поэтому когда Postfix отправляет письма " | ||
| Рядок 21: | Рядок 21: | ||
| </ | </ | ||
| - | == Просмотр и очистка очереди == | + | === Просмотр и очистка очереди |
| sudo postqueue -p | sudo postqueue -p | ||
| Рядок 36: | Рядок 36: | ||
| sudo postsuper -d ALL deferred | sudo postsuper -d ALL deferred | ||
| + | |||
| + | |||
| + | ==== Самодельный транспорт ==== | ||
| + | |||
| + | В файле конфигурации Postfix ''/ | ||
| + | |||
| + | Сначала нужно указать Postfix расположение файла, в котором будут перечислены наши транспорты. Это указывается в файле ''/ | ||
| + | |||
| + | <file bash "/ | ||
| + | transport_maps = hash:/ | ||
| + | </ | ||
| + | |||
| + | Теперь нужно создать собственно сам файл с перечислением наших дополнительных транспортов. Его формат выглядит примерно так: | ||
| + | |||
| + | <file '' | ||
| + | abonent1@server.com | ||
| + | abonent2@server.com | ||
| + | abonent3@server.com | ||
| + | abonent4@server.com | ||
| + | abonent5@server.com | ||
| + | </ | ||
| + | |||
| + | В этом файле указываетя, | ||
| + | |||
| + | После создания или изменения этого файла, необходимо сконвертировать его в формат базы данных, | ||
| + | |||
| + | postmap mytransports | ||
| + | |||
| + | При этом появится (или обновится, | ||
| + | |||
| + | Теперь, | ||
| + | |||
| + | <file bash "/ | ||
| + | transport1 | ||
| + | flags=ORhu user=myuser argv=/ | ||
| + | |||
| + | transport2 | ||
| + | flags=ORhu user=myuser argv=/ | ||
| + | </ | ||
| + | |||
| + | Здесь названия транспортов '' | ||
| + | |||
| + | Пример такого скрипта, | ||
| + | |||
| + | <file bash "/ | ||
| + | #!/bin/bash | ||
| + | |||
| + | NEXTHOP=$@ | ||
| + | |||
| + | TEMPFILE=`tempfile` | ||
| + | |||
| + | # Если передан параметр " | ||
| + | # (что соответствует в нашем примере письмам, | ||
| + | # abonent1@server.com и abonent5@server.com | ||
| + | if [ $NEXTHOP == " | ||
| + | then | ||
| + | while IFS= read -r LINE; | ||
| + | do | ||
| + | if [[ $LINE == From:* ]] | ||
| + | then | ||
| + | # Заменим строку отправителя так, чтобы его адрес был < | ||
| + | printf ' | ||
| + | else | ||
| + | printf ' | ||
| + | fi | ||
| + | done | ||
| + | |||
| + | |||
| + | |||
| + | # Если передан параметр " | ||
| + | # (что соответствует в нашем примере письмам, | ||
| + | # abonent2@server.com | ||
| + | elif [ $NEXTHOP == " | ||
| + | then | ||
| + | while IFS= read -r LINE; | ||
| + | do | ||
| + | if [[ $LINE == From:* ]] | ||
| + | then | ||
| + | # Заменим строку отправителя так, чтобы его адрес был < | ||
| + | printf ' | ||
| + | else | ||
| + | printf ' | ||
| + | fi | ||
| + | done | ||
| + | |||
| + | |||
| + | # Во всех остальных случаях просто скопируем письмо без изменений во временный файл | ||
| + | else | ||
| + | cat - > ${TEMPFILE} | ||
| + | fi | ||
| + | |||
| + | # Здесь любое действие с полученным и обработанным письмом | ||
| + | # Например, | ||
| + | cat ${TEMPFILE} | / | ||
| + | |||
| + | rm ${TEMPFILE} | ||
| + | </ | ||
| + | |||
| + | Разумеется, | ||
| + | |||
| + | После всех этих манипуляций с транспортами, | ||
| + | |||
| + | sudo / | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ==== SASL-аутентификация ==== | ||
| + | |||
| + | Для того, чтобы Postfix принимал письма для дальнейшей пересылки с других компьютеров (например, | ||
| + | |||
| + | Инструкция по настройке SASL-аутентификации находится здесь: http:// | ||
| + | |||
| + | Сначала надо проверить, | ||
| + | |||
| + | sudo postconf -a | ||
| + | cyrus | ||
| + | dovecot | ||
| + | |||
| + | Видим, что их две: '' | ||
| + | |||
| + | Установим необходимые библиотеки и инструменты. В 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 " | ||
| + | |||
| + | Если видим надпись '' | ||
| + | |||
| + | Далее нужно внести изменения в настройки самого Postfix: | ||
| + | |||
| + | <file conf / | ||
| + | smtp_tls_security_level = may | ||
| + | smtp_tls_cert_file = / | ||
| + | smtp_tls_key_file = / | ||
| + | smtp_tls_note_starttls_offer = yes | ||
| + | smtpd_tls_security_level = may | ||
| + | smtpd_tls_cert_file = / | ||
| + | smtpd_tls_key_file = / | ||
| + | |||
| + | smtpd_sasl_auth_enable = yes | ||
| + | smtpd_sasl_type = cyrus | ||
| + | smtpd_sasl_path = smtpd | ||
| + | broken_sasl_auth_clients = yes | ||
| + | smtpd_sasl_security_options = noplaintext, | ||
| + | smtpd_sasl_tls_security_options = noanonymous | ||
| + | smtpd_sender_login_maps = hash:/ | ||
| + | smtpd_relay_restrictions = permit_mynetworks, | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | </ | ||
| + | |||
| + | Если мы хотим проверять подлинность пользователей, | ||
| + | |||
| + | <file conf / | ||
| + | # | ||
| + | #mech_list: PLAIN LOGIN | ||
| + | |||
| + | pwcheck_method: | ||
| + | auxprop_plugin: | ||
| + | mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5 NTLM | ||
| + | </ | ||
| + | |||
| + | Редактировать базу данных ''/ | ||
| + | |||
| + | sudo saslpasswd2 -c -u mydomain.com username | ||
| + | |||
| + | Просмотреть список всех пользователей в базе можно командой: | ||
| + | sudo sasldblistusers2 | ||
| + | |||
| + | Далее необходимо обеспечить доступ Postfix к этой базе для проверки. Для этого нужно сменить группу -владельца этого файла и добавим Postfix в эту группу: | ||
| + | sudo chown :sasl / | ||
| + | sudo usermod -a -G sasl postfix | ||
| + | |||
| + | <note important> | ||
| + | | ||
| + | Далее, мы, вероятно, | ||
| + | |||
| + | В конфигурации Postfix этому соответствуют параметр '' | ||
| + | |||
| + | <file conf / | ||
| + | # envelope sender | ||
| + | john@example.com | ||
| + | helpdesk@example.com | ||
| + | postmaster | ||
| + | @example.net | ||
| + | </ | ||
| + | |||
| + | Далее нужно преобразовать эту таблицу из простого текстового файла в базу данных: | ||
| + | |||
| + | cd / | ||
| + | sudo postmap controlled_envelope_senders | ||
| + | |||
| + | И наконец, | ||
| + | |||
| + | sudo postfix reload | ||
| + | |||
| + | Теперь можно проверить, | ||
| + | |||
| + | telnet | ||
| + | ... | ||
| + | 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= | ||
| + | |||
| + | Если сервер отвечает на указанном порту и показывает доступные методы аутентификации, | ||
| Рядок 102: | Рядок 325: | ||
| " | " | ||
| </ | </ | ||
| + | |||
| + | |||
| + | Если spamc будет выдавать в логи такую ошибку: | ||
| + | |||
| + | spamc[17863]: | ||
| + | |||
| + | то устранить её можно, создав следующий файл((https:// | ||
| + | |||
| + | <file conf / | ||
| + | -d 127.0.0.1 | ||
| + | </ | ||
| + | |||
| + | |||
| + | ====== Фильтр исходящей почты ====== | ||
| + | |||
| + | http:// | ||
mailserver.1479327978.txt.bz2 · Востаннє змінено: повз wombat
