У меня есть почтовый сервер (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 о фильтрации.