Мне было интересно, не могли бы вы помочь мне с этой простой проблемой, но я, кажется, не могу ее понять.
У нас есть несколько серверов centos, на которых запущен sendmail (все внутренние серверы в локальной сети) - с очень упрощенной конфигурацией sendmail (все по умолчанию), кроме ретрансляции всего на наш сервер обмена, т.е. DSourexchangeserver. Теперь я хочу иметь эти centos. серверы конфигурации sendmail ТОЛЬКО ретранслируют электронные письма, предназначенные для домена нашей компании, т.е. me@mycompaniesdomain.com. Я не хочу, чтобы почта пересылалась куда-либо еще. Есть ли способ заставить sendmail проверять отправляемые на него письма и ретранслировать на наш сервер обмена только те, которые соответствуют требованию быть предназначенными для домена нашей компании, и останавливать все остальное?
Видеть: http://www.sendmail.org/tips/relaying
Самый простой подход - перечислить домены, которые вы хотите ретранслировать, в файле / etc / mail / relay-domains. Все, что указано в этом файле, будет принято для ретрансляции. Примечание: Sendmail необходимо перезапустить после изменения этого файла.
Этот и другие советы на этой странице должны помочь вам начать работу. В противном случае вы можете проверить SMTP AUTH, если вам нужно контролировать, кто может пересылать электронную почту.
Проблема с relay-domains
заключается в том, что он разрешает ретрансляцию, если отправляющая система находится в этом домене.
Решением может быть использование базы данных доступа. В него положили:
Кому: mycompaniesdomain.com РЕЛЕ
Убедитесь, что все остальные параметры реле отключены. Sendmail - сложный зверь, и может быть полезно опубликовать ваш mc-файл.
Для этого не нужен milter. Вы можете сделать это через sendmail.mc. Добавьте эти строки в свой sendmail.mc:
#Define the smart host
define(`SMART_HOST', `exchange server here')dnl
#Define a class of domains we want to relay to the smart host
C{Exchange} example.com example.org
#Decide whether to delete outgoing email or not
LOCAL_RULE_0
#test the behavior of your system to see if you need the following line
R$* < @ $=w . > $* $#OK
R$* < @ $={Exchange} . > $* $#OK
R$* $#local $: bit-bucket
бит-ведро должно иметь псевдоним / dev / null в / etc / mail / aliases:
bit-bucket: /dev/null
Не забудьте после этого пересобрать sendmail.cf из файла sendmail.mv и перезапустить sendmail. Я не знаю, как это делается в CentOS. Debian sendmailconfg
сделало меня немного ленивым. Также помните, что правила sendmail разделены табуляциями, а не пробелами, поэтому не копируйте и не вставляйте их. Введите вручную и разделите "левую" и "правую" части после LOCAL_RULE_0 табуляциями.
Вот как я это настроил:
1 сервер sendmail, на который отправляется вся электронная почта с машин nix и ретранслируется на сервер обмена в зависимости от того, куда направлено письмо.
Все клиентские конфигурации sendmail имеют опцию DS для указанного выше сервера.
На 1 сервере sendmail (на который все ваши конфигурации sendmail будут указывать параметр DS, который будет действовать как фильтр, выполните следующие действия:
Убедитесь в sendmail.mc
под /etc/mail
он имеет: Feature('mailertable', 'hash -o /etc/mailertable.db' dnl
линия в нем.
Прокомментируйте строку, в которой говорится DAEMON_OPTIONS(``Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
(чтобы он мог ретранслировать для всех машин - очевидно, это не было бы хорошей идеей для машины с общедоступным IP-адресом, но я здесь не этим занимаюсь)
vi mailertable
и введите следующую строку: yourdomain.com ESMTP:[yourexchangeserverip]
Создайте файл в /etc/mail
называется relay-domains
и введите следующую строку: yourdomain.com
Бегать m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
Бегать makemap hash /etc/mail/mailertabledb < /etc/mail/mailertable
запустить или перезапустить демон sendmail, /etc/init.d/sendmail restart
Затем на всех машинах, на которых вы хотите установить фильтр электронной почты, просто зайдите в sendmail.cf и установите для параметра DS значение IP или имени хоста вашего сервера, указанного выше. Затем перезапустите sendmail.