Назад | Перейти на главную страницу

postfix - Как создать действительно пользовательские правила для ограничения?

У меня есть почтовый сервер (postfix 2.9.6), работающий с 15-20 пользователями, только для внутреннего использования с одним единственным доменом, назовем его xyz.mail.lan

Пользователи:

    user1@xyz.mail.lan
    user2@xyz.mail.lan
    user3@xyz.mail.lan
    …
    user5@xyz.mail.lan

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

Моя цель - ограничить пользователей отправкой писем друг другу.

Например:

У меня не будет больше 20 пользователей, поэтому я не возражаю, если мои руки будут грязными, устанавливая уродливые правила для каждого пользователя.

Если вы хотите быстрое и грязное решение (из-за небольшого количества пользователей) и без внешнего скрипта / демона (просто с использованием postfix и его карт), загляните в Классы ограничений Postfix. На этой странице вы должны увидеть примеры того, как работает эта функция. Коротко, у каждого класса будет свой набор ограничений прямо как ты хочешь.

Для вашего случая сначала вы добавите эту таблицу проверок в smtpd_*_restriction, например smtpd_recipient_restriction

smtpd_recipient_restriction = 
           ... other restriction....
           check_sender_access hash:/etc/postfix/sender_rules

smtpd_restriction_classes = user1_rule, user2_rule, user3_rule,...

user1_rule = check_recipient_access hash:/etc/postfix/rules/user1
user2_rule = check_recipient_access hash:/etc/postfix/rules/user2
user3_rule = check_recipient_access hash:/etc/postfix/rules/user3
so on...

Содержание / etc / postfix / sender_rules

user1     user1_rule
user2     user2_rule
user3     user3_rule
... others ...

Последний - это содержимое / etc / postfix / rules / userX (где X - 1 ... количество пользователей)

/ и т.д. / постфикс / правила / пользователь1

user2    OK
user3    OK
user4    OK
user5    OK

/ и т.д. / постфикс / правила / пользователь2

user1    OK
user3    OK

И др...

Поскольку ваш вариант использования очень особенный и стандартные методы поиска Postfix для вас не работают, я бы подумал об использовании Postfix. проверка содержания.

Обычно он используется для фильтрации спама / вирусов, но, поскольку вы можете подключить к нему свой собственный Perl / любые скрипты, вы можете создать небольшой скрипт на желаемом языке и позволить ему отвечать на Postfix, если почта должна быть передана. или не.

В псевдокоде что-то вроде

if ($mailfrom == "user2" && ($rcptto == $user3 || $rcptto == $user5)) {
    yes_pass_the_mail();
}

стоит сделать. Посмотрите документацию Postfix о фильтрации.