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

Ограничение исходящей почты для некоторых доменов в Exim (с помощью специфичного для Debian метода настройки)

У меня есть виртуальные машины на основе Debian, которые должны передавать почту на центральный хост (smarthost / satellite).

Это предназначено только для локальной почты, полученной через localhost или sendmail команда, но с изюминкой: Я не хочу, чтобы локальные виртуальные машины могли отправлять почту в Интернет, только на определенные домены. (вроде как предотвращение открытого реле для localhost).

Я бы использовал ssmtp, если бы не тот факт, что он не прослушивает обычные SMTP-порты на localhost, поэтому я использую Exim.

я использую update-exim4.conf:

% cat update-exim4.conf.conf 

dc_eximconfig_configtype='satellite'
dc_other_hostnames=''
dc_local_interfaces='127.0.0.1 ; ::1'
dc_readhost=''
dc_relay_domains='mydomain1.com ; mydomain2.net'
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost='mailsrv1.mydomain2.net:mailsrv2.mydomain2.net'
CFILEMODE='644'
dc_use_split_config='false'
dc_hide_mailname='false'
dc_mailname_in_oh='true'
dc_localdelivery='maildir_home'

У меня это в локальных макросах:

% cat exim4.conf.localmacros 
CHECK_RCPT_LOCAL_ACL_FILE = /etc/exim4/local_CHECK_RCPT_LOCAL_ACL_FILE.conf

Соответствующий фрагмент ACL:

% cat local_CHECK_RCPT_LOCAL_ACL_FILE.conf 
deny
    message  = relay not permitted
    log_message = XXXXXXXXXXXXXXXXX
    !domains = mydomain1.com : mydomain2.net

Теперь проблема в том, что CHECK_RCPT_LOCAL_ACL_FILE включается после accept для ретрансляции и локальных доменов, поэтому acl_smtp_rcpt завершается до того, как достигнет моего локального макроса.

Конечно, я могу заменить весь acl_smtp_rcpt с участием MAIN_ACL_CHECK_RCPT, но я не хочу этого делать - мне пришлось бы скопировать существующий acl_smtp_rcpt и что, если при будущем обновлении он не синхронизируется с автоматически созданной конфигурацией?