У меня небольшая проблема. Я предлагаю некоторым клиентам доступ к моему серверу для выполнения собственных сценариев (конечно, в их собственной среде chroot и т. Д.). Проблема, которая возникла сегодня: некоторые люди получают доступ telnet к localhost на порту 25 и отправляют электронные письма по всему миру, что является почти открытым реле :(
Я использую постфикс, и он также требует аутентификации:
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, reject_unauth_destination
Но очевидно, что локальные скрипты не нуждаются в аутентификации sasl. Если удалить localhost из разрешения_mynetworks, некоторые процедуры антиспама больше не работают ...
Итак, как настроить postfix, чтобы разрешить localhost доставлять почту локально, но не извне без аутентификации?
Какие-либо предложения?
Итак, ваши процедуры защиты от спама используют localhost, а плохие люди используют localhost и Postfix не может отличить.
Забанить плохих людей или удалить localhost из доверенной сети (permit_mynetworks
) и настройте свой антиспам для использования чего-то еще. Или разрешите антиспам с smtpd_client_restrictions check_ccert_access
.
Вернемся к вашему вопросу. Вы просите что-то вроде этого:
/etc/postfix/main.cf:
smtpd_recipient_restrictions =
/* replace permit_mynetworks with the next line */
check_client_access hash:/etc/postfix/client_access,
/* your other stuff */
permit_sasl_authenticated,
check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf,
reject_unauth_destination
smtpd_restriction_classes = local_only
local_only =
check_recipient_access hash:/etc/postfix/local_domains, reject
/etc/postfix/client_access:
localhost local_only
127.0.0.1 local_only
/* check bash#postconf mynetworks for full list of your networks */
/etc/postfix/local_domains:
this.domain OK matches this.domain and subdomains
that.domain OK matches that.domain and subdomains
Но, вероятно, это не сработает, потому что ваш антиспам повторно отправляет почту внешним получателям. Но это зависит от обстоятельств.
Сообщите нам больше информации о ваших средствах защиты от спама, и мы сможем помочь.
UDP:
Не могли бы вы объяснить мне, как почтовый поток проходит через эту настройку.
Не могу лучше объяснить классы ограничений официальные документы.
Классы ограничений Postfix
Сервер SMTP Postfix поддерживает ограничения доступа, такие как reject_rbl_client или reject_unknown_client_hostname в правой части таблиц доступа к серверу SMTP (5). Это позволяет вам устанавливать различные ограничения нежелательной почты для разных клиентов или пользователей.
Необходимость указывать списки ограничений доступа для каждого получателя быстро становится утомительной. Классы ограничений Postfix позволяют давать легко запоминающиеся имена группам ограничений UCE (например, «разрешительный», «ограничительный» и т. Д.).
Настоящая причина существования классов ограничений Postfix более приземленная: вы не можете указать таблицу поиска в правой части таблицы доступа Postfix. Это связано с тем, что Postfix необходимо заранее открыть таблицы поиска, но читатель, вероятно, не заботится об этих подробностях низкого уровня.
Мы определяем наш класс ограничений local_only
с участием smtpd_restriction_classes = local_only
. И
local_only =
check_recipient_access hash:/etc/postfix/local_domains,
reject
говорит "всякий раз, когда этот класс проверяется, проверьте check_recipient_access (Поиск в указанном доступ (5) базу данных для разрешенного адреса RCPT TO, домена, родительских доменов или localpart @ и сначала выполните соответствующее действие.) и отклоните почту в противном случае. И local_domains
файл говорит: «Если его this.domain прошел проверку, если его this.domain прошел проверку».
Но мы не хотим применять этот класс ограничения ко ВСЕМ электронным письмам. Мы хотим применить его при отправке хоста localhost и удалить permit_mynetworks
правило. Для этого добавляем check_client_access хеш: / etc / postfix / client_access (Найдите в указанной базе данных доступа имя хоста клиента, родительские домены, IP-адрес клиента или сети, полученные путем удаления младших значащих октетов. См. доступ (5) справочную страницу для деталей.) на smtpd_recipient_restrictions. Он говорит, чтобы проверить /etc/postfix/client_access
файл и если его localhost
подать заявление local_only
ограничение. Это именно то, что мы хотим делать.
Надеюсь, поможет.
Почтовый поток:
localhost
подать заявление local_only
класс ограничения) UPD2 Я только что нашел другой вариант для smtpd_recipient_restrictions (и других самоопределяемых классов), которые могут вас заинтересовать
Разрешить запрос, если верно одно из следующих условий:
- Postfix является пересылкой почты: разрешенный домен RCPT TO совпадает с $ relay_domains или его поддоменом, и адрес не содержит маршрутизации, указанной отправителем (user @ elsewhere @ domain),
- Postfix - это конечный пункт назначения: разрешенный домен RCPT TO совпадает с $ mydestination, $ inet_interfaces, $ proxy_interfaces, $ virtual_alias_domains или $ virtual_mailbox_domains, и адрес не содержит маршрутизации, указанной отправителем (user @ elsewhere @ domain).
Один из вариантов - использовать iptables, чтобы запретить этим пользователям подключаться к localhost через порт 25. Например:
iptables -A OUTPUT -p tcp -d 127.0.0.1 --dport 25 -m owner --uid-owner user1 -j REJECT
iptables -A OUTPUT -p tcp -d 127.0.0.1 --dport 25 -m owner --uid-owner user2 -j REJECT
[etc]