TPmail тестовой вывод.

Почтовый пакет TPmail для Unix систем

Выбор языка

[анг]  [рус]


Начало

Документация

Поддержка

Новости

Ресурсы

Контакты


Типичные задачи для sendmail и решения для них на базе TPmail

Оглавление

Введение
1. Как копировать почту (всю, определенных абонентов).
2. Как перенаправить определенную исходящую почту в локальный почтовый ящик.
3. Как запретить посылать почту на определенный домен вместе с его поддоменами.
4. Как разрешить определенному пользователю принимать почту только с определенного IP-адреса.
5. Как разрешить пользователям принимать почту только с определенного IP-адреса (запрет получения почты извне за исключением одного внешнего ip-адреса).
6. Как разрешить определенному пользователю принимать почту только с определенного e-mail адреса.
7. Как разрешить некоторым пользователям принимать почту только с локальных адресов.
8. Как запретить некоторым пользователям принимать почту с внешних адресов.
9. Как отвергать почту, приходящую с локальных административных адресов, но не с локальных ip-адресов.
10. Как запретить почту с внешних ip-адресов, подписанную моим почтовым доменом.
11. Как заставить локальных пользователей подписываться в e-mail только локальным доменом.
12. Как установить жесткое соответствие между локальным e-mail-адресом и локальным IP-адресом для отправки сообщений локальными пользователями.
13. Как запретить определенному локальному пользователю посылать сообщения за пределы локального домена.
14. Как разрешить определенному локальному пользователю посылать сообщения только на определенный внешний адрес.
15. Как ограничить группу пользователей работой(прием/отправка) только внутри локального почтового домена.
16. Как разрешить пользователю переписку с любым пользователем, кроме указанного адреса.
18. Как запретить фальшивую рассылку с адресов gluck@mail.subscribe.ru и namma123456@subscribe.ru.
19. Фильтруем входящую почту по параметру HELO.
20. Как заблокировать письма с единственным подзаголовком Received: (как определить, что переменная пуста).
21. Как бороться с перебором имен почтовых ящиков (dictionary attack, define(`confBAD_RCPT_THROTTLE',`3')).
22. Как заблокировать перебор имен почтовых ящиков (наложение ограничения на число отказов "User unknown").
23. Последний вариант блокировки при превышении количества неопознанных объектов в списке получателей локального домена.
25. Как избежать двойной отлуп (define(`confDOUBLE_BOUNCE_ADDRESS', `')).
26. Как заблокировать письма, посылаемые на определенный relay (блокировка по MX-домену получателя).
27. Как проверять в RBL-базах не только ip непосредственного отправителя-почтовика, но и ip всех предшествоваших релеев, определенных в подзаголовках Received:.
28. Как ограничить количество соединений с smtp-портом с одного хоста и общее число одновремено открытых smtp-соединений за определенный промежуток времени.
29. Как заблокировать почту с ip-адресов, для которых прямая и обратная проверки в днс не соответствуют друг другу.
30. Как видоизменить адрес получателя (добавляем 3 цифры перед адресом).
31. Горячий спам (ноябрь-декабрь 2006г.).
32. Как заставить локальных клиентов проходить smtp-авторизацию?


Введение

Условия задач взяты с сайта www.anrb.ru/linux/sendmail.html (с любезного разрешения автора сайта).
Решения для этих задач на сайте даны с использованием сложных правил sendmail.cf или при помощи стандартных конфигурационных файлов sendmail.
Мы же попытаемся решить данные задачи при помощи пакета TPmail.
Вообще говоря, практически любую из указанных задач можно решить при помощи модуля milter-agent, однако попытаемся найти альтернативные решения.



1. Как копировать почту (всю, определенных абонентов).

(1) Использовать mail_archive.sh из модуля milter-agent.
(2) Использовать [Address] из модуля milter-agent.
[Address]
message_recipient = "user1@mydomain.ru"
add_recipient = "localuser2"



2. Как перенаправить определенную исходящую почту в локальный почтовый ящик.

Использовать [Address] из модуля milter-agent.
[Address]
message_recipient = "user1@foreign.com"
message_forward_recipient = "localuser2"



3. Как запретить посылать почту на определенный домен вместе с его поддоменами.

Использовать [Filter] из модуля milter-connect.
[Filter]
reject_stage = envrcpt
reject_envfrom = "@localdomain\.ru"
reject_envrcpt = "@(()|.*\.)blockdomain\.ru"
reject_message = "The mail delivery to these domains is prohibited."



4. Как разрешить определенному пользователю принимать почту только с определенного IP-адреса.

Использовать [Filter] из модуля milter-connect.
[Filter]
accept_stage = envrcpt
accept_hostaddr = "10.2.100.234"
accept_envfrom = ".*"
accept_envrcpt = "user1@ourdomain.ru"
[Filter]
reject_stage = envrcpt
reject_envfrom = ".*"
reject_envrcpt = "user1@ourdomain.ru"
reject_message = "You cannot get a mail from all world."



5. Как разрешить пользователям принимать почту только с определенного IP-адреса (запрет получения почты извне за исключением одного внешнего ip-адреса).

Использовать [Filter] из модуля milter-connect.
[Filter]
accept_stage = envrcpt
accept_hostaddr = "10.2.100.234"
accept_envfrom = ".*"
accept_envrcpt = "@ourdomain\.ru"
[Filter]
reject_stage = envrcpt
reject_envfrom = ".*"
reject_envrcpt = "@ourdomain\.ru"
reject_message = "You cannot get a mail from all world."



6. Как разрешить определенному пользователю принимать почту только с определенного e-mail адреса.

Использовать [Filter] из модуля milter-connect.
[Filter]
accept_stage = envrcpt
accept_envfrom = "user2@foreign.com"
accept_envrcpt = "user1@ourdomain.ru"
[Filter]
reject_stage = envrcpt
reject_envfrom = ".*"
reject_envrcpt = "user1@ourdomain.ru"
reject_message = "You cannot get a mail from all world."



7. Как разрешить некоторым пользователям принимать почту только с локальных адресов.

Использовать [Filter] из модуля milter-connect.
[Filter]
accept_stage = envrcpt
accept_envfrom = "@ourdomain\.ru"
accept_envrcpt = "(user1|user2|user3)@ourdomain\.ru"
[Filter]
reject_stage = envrcpt
reject_envfrom = ".*"
reject_envrcpt = "(user1|user2|user3)@ourdomain.ru"
reject_message = "You can get only a local mail ."



8. Как запретить некоторым пользователям принимать почту с внешних адресов.

Решение аналогично решению задачи 7.
Использовать [Filter] из модуля milter-connect.
[Filter]
accept_stage = envrcpt
accept_envfrom = "@ourdomain\.ru"
accept_envrcpt = "(user1|user2|user3)@ourdomain\.ru"
[Filter]
reject_stage = envrcpt
reject_envfrom = ".*"
reject_envrcpt = "(user1|user2|user3)@ourdomain.ru"
reject_message = "You cannot get a mail from another world."



9. Как отвергать почту, приходящую с локальных административных адресов, но не с локальных ip-адресов

(1) Алгоритм LMTA успешно решает данную задачу.
(2) Использовать [Filter] из модуля milter-connect.
[Filter]
accept_stage = envrcpt
accept_hostaddr = "192.168.100.1 - 192.168.100.255"
accept_envfrom = "^(root|postmaster|adm|mail-daemon|hostmaster|webmaster)@ourdomain\.ru"
accept_envrcpt = ".*"
[Filter]
reject_stage = envrcpt
reject_envfrom = "^(root|postmaster|adm|mail-daemon|hostmaster|webmaster)@ourdomain\.ru"
reject_envrcpt = ".*"
reject_message = "You are used a forged addresses."



10. Как запретить почту с внешних ip-адресов, подписанную моим почтовым доменом.

(1) Алгоритм LMTA успешно решает данную задачу.
(2) Использовать [Filter] из модуля milter-connect.
[Filter]
accept_stage = envrcpt
accept_hostaddr = "192.168.100.1 - 192.168.100.255"
accept_envfrom = "@ourdomain\.ru"
accept_envrcpt = ".*"
[Filter]
reject_stage = envrcpt
reject_envfrom = "@ourdomain\.ru"
reject_envrcpt = ".*"
reject_message = "You are used a forged addresses."



11. Как заставить локальных пользователей подписываться в e-mail только локальным доменом.

(1) Алгоритм LMTA успешно решает данную задачу.
(2) Использовать [Filter] из модуля milter-connect.
[Filter]
accept_stage = envrcpt
accept_hostaddr = "192.168.100.1 - 192.168.100.255"
accept_envfrom = "@ourdomain\.ru"
accept_envrcpt = ".*"
[Filter]
reject_stage = envrcpt
reject_hostaddr = "192.168.100.1 - 192.168.100.255"
reject_envfrom = ".*"
reject_envrcpt = ".*"
reject_message = "These e-mail addresses are prohibited."



12. Как установить жесткое соответствие между локальным e-mail-адресом и локальным IP-адресом для отправки сообщений локальными пользователями.

(1) Использовать [UserQuota] из модуля milter-quota.
[UserQuota]
quota_user_name = "user1"
quota_user_allowed_send_hostaddr = "192.168.100.1"
(2) Использовать [Filter] из модуля milter-connect.
[Filter]
accept_stage = envrcpt
accept_hostaddr = "192.168.100.1"
accept_envfrom = "user1@ourdomain.ru"
accept_envrcpt = ".*"
[Filter]
reject_stage = envrcpt
reject_hostaddr = "192.168.100.1 - 192.168.100.255"
reject_envfrom = "user1@ourdomain.ru"
reject_envrcpt = ".*"
reject_message = "You can send a mail only from allowed hosts."



13. Как запретить определенному локальному пользователю посылать сообщения за пределы локального домена.

Использовать [Filter] из модуля milter-connect.
[Filter]
accept_stage = envrcpt
accept_envfrom = "user1@ourdomain.ru"
accept_envrcpt = "@ourdomain\.ru"
[Filter]
reject_stage = envrcpt
reject_envfrom = "user1@ourdomain.ru"
reject_envrcpt = ".*"
reject_message = "You are prohibited to send a mail for all world."



14. Как разрешить определенному локальному пользователю посылать сообщения только на определенный внешний адрес.

Использовать [Filter] из модуля milter-connect.
[Filter]
accept_stage = envrcpt
accept_envfrom = "user1@ourdomain.ru"
accept_envrcpt = "user2@anotherdomain.ru"
[Filter]
reject_stage = envrcpt
reject_envfrom = "user1@ourdomain.ru"
reject_envrcpt = ".*"
reject_message = "You are prohibited to send a mail for all world."



15. Как ограничить группу пользователей работой(прием/отправка) только внутри локального почтового домена.

Использовать [Filter] из модуля milter-connect.
Скомбинировав это решение с решением задачи 12, можно получить режим жесткой привязки пользователей к машинам в локальном домене.
[Filter]
accept_stage = envrcpt
accept_hostaddr = "192.168.100.1 - 192.168.100.255"
accept_envfrom = "(user1|user2|user3)@ourdomain.ru"
accept_envrcpt = "@ourdomain\.ru"
[Filter]
accept_stage = envrcpt
accept_hostaddr = "192.168.100.1 - 192.168.100.255"
accept_envfrom = "@ourdomain\.ru"
accept_envrcpt = "(user1|user2|user3)@ourdomain.ru"
[Filter]
reject_stage = envrcpt
reject_envfrom = "(user1|user2|user3)@ourdomain.ru"
reject_envrcpt = ".*"
reject_message = "You are prohibited to send a mail for all world."
[Filter]
reject_stage = envrcpt
reject_envfrom = ".*"
reject_envrcpt = "(user1|user2|user3)@ourdomain.ru"
reject_message = "You are prohibited to receive a mail from all world."



16. Как разрешить пользователю переписку с любым пользователем, кроме указанного адреса.

Использовать [Filter] из модуля milter-connect.
[Filter]
reject_stage = envrcpt
reject_envfrom = "user1@ourdomain.ru"
reject_envrcpt = "user2@anotherdomain.ru"



18. Как запретить фальшивую рассылку с адресов gluck@mail.subscribe.ru и namma123456@subscribe.ru.

Алгоритм LMTA успешно решает данную задачу.



19. Фильтруем входящую почту по параметру HELO.

При использовании алгоритима LMTA решать данную задачу ненужно.



20. Как заблокировать письма с единственным подзаголовком Received: (как определить, что переменная пуста).

(1) Использовать test_received_header.sh из модуля milter-agent.
(2) Написать собственный сценарий для модуля milter-agent.



21. Как бороться с перебором имен почтовых ящиков (dictionary attack, define(`confBAD_RCPT_THROTTLE',`3')).

В целом, необходимости в этом, так как алгоритм LMTA работает быстро и эффективно.



22. Как заблокировать перебор имен почтовых ящиков (наложение ограничения на число отказов "User unknown").

В целом, необходимости в этом, так как алгоритм LMTA работает быстро и эффективно.



23. Последний вариант блокировки при превышении количества неопознанных объектов в списке получателей локального домена.

В целом, необходимости в этом, так как алгоритм LMTA работает быстро и эффективно.



25. Как избежать двойной отлуп (define(`confDOUBLE_BOUNCE_ADDRESS', `')).

Задача решается штатными средствами sendmail.



26. Как заблокировать письма, посылаемые на определенный relay (блокировка по MX-домену получателя).

В целом, необходимости в этом, так как алгоритм LMTA работает быстро и эффективно.



27. Как проверять в RBL-базах не только ip непосредственного отправителя-почтовика, но и ip всех предшествоваших релеев, определенных в подзаголовках Received:.

В целом, необходимости в этом, так как алгоритм LMTA работает быстро и эффективно.
Однако программа test_lmta из модуля milter-connect может решать подобную задачу.



28. Как ограничить количество соединений с smtp-портом с одного хоста и общее число одновремено открытых smtp-соединений за определенный промежуток времени.

Использовать [RateControl] из модуля milter-quota.



29. Как заблокировать почту с ip-адресов, для которых прямая и обратная проверки в днс не соответствуют друг другу.

В целом, необходимости в этом, так как алгоритм LMTA работает быстро и эффективно.



30. Как видоизменить адрес получателя (добавляем 3 цифры перед адресом).

Использовать [Address] из модуля milter-agent.
[Address]
message_recipient = "user1@ourdomain.ru"
message_forward_recipient = "123user1@ourdomain.ru"



31. Горячий спам (ноябрь-декабрь 2006г.).

Написать собственный сценарий для фильтрация строку для модуля milter-agent.



32. Как заставить локальных клиентов проходить smtp-авторизацию?

Использовать [Filter] из модуля milter-connect.
[Filter]
accept_stage = envrcpt
accept_envfrom = "@ourdomain\.ru"
accept_envrcpt = ".*"
auth_user_credentials = "user1 user2 user3"
auth_nonauth_users_also = 0
[Filter]
reject_stage = envrcpt
reject_envfrom = "@ourdomain\.ru"
reject_envrcpt = ".*"
reject_message = "You must be authenticated for this mail server."
auth_user_credentials = ".*"
auth_nonauth_users_also = 1




Valid HTML 3.2! Авторское Право © 2006 Дмитрий Стефанков Last modified: $Date: 2007-12-29 01:37:22+03 $ Powered by FreeBSD. Powered by Apache. Powered by OpenSSL.