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

Как отклонить сообщения неизвестному пользователю в sendmail, работающем с MS-Exchange?

У меня есть MS Exchange 2003, настроенный как почтовый сервер для организации. Поскольку этот сервер расположен во внутренней сети этой организации, и я не хочу открывать его напрямую через Интернет, у меня есть второй сервер - Linux-ящик с sendmail, настроенный как интеллектуальный ретранслятор (он принимает все сообщения из Интернета, адресованные на @my_domain, и пересылает его на внутренний сервер Exchange, принимает все сообщения от этого внутреннего сервера Exchange и пересылает их через Интернет). Эта конфигурация работает нормально, но я хочу как можно раньше удалить сообщения, адресованные не выходящим пользователям.

Хорошим решением может быть включение на сервере Exchange функции фильтрации получателей вместе с «ямкой смолы», но в моем случае это не решает проблему, потому что прежде, чем какое-либо сообщение достигнет моего сервера Exchange (который в конечном итоге может его отклонить), оно должно быть уже принят сервером sendmail, находящимся перед этим сервером Exchange.

Итак, я хочу настроить свой сервер sendmail таким образом, чтобы во время первоначального SMTP-разговора он мог каким-то образом запрашивать мой сервер Exchange, проверяя, действителен ли адрес получателя, и на основе результата этого запроса принимать или отклонять (возможно, с некоторыми delay) входящее сообщение на очень ранней стадии.

Фактически, я уже решил эту проблему, написав свою собственную простую программу milter для sendmail, которая проверяет адрес получателя по текстовому файлу со списком действительных адресов. Но это решение меня больше не удовлетворяет, потому что оно требует частого обновления этого файла, а из-за нехватки времени / мотивации / навыков программирования я не хочу дальше справляться со своим исходным кодом, добавляя к нему функциональность запросов мой сервер Exchange.

Возможно, я смогу добиться желаемого эффекта, настроив какой-либо компонент уже доступного программного обеспечения Linux.

Любые идеи?

Я использую Md_check_against_smtp_server () MIMEDefang. Милтер вперед - еще один вариант

Хорошо, наконец, мне удалось заставить его работать. Мои изменения в sendmail.mc были следующими:

FEATURE(`ldap_routing',, `ldap -1 -T<TMPF> -v mail -k proxyAddresses=SMTP:%0', `bounce')dnl
LDAPROUTE_DOMAIN(`my.comaind.com')dnl
define(`confLDAP_DEFAULT_SPEC', `-p 389 -h "my_ldap_server.my.domain.com" -d "CN=sendmail_user,CN=Users,DC=my,DC=domain,DC=com" -M simple -P /etc/mail/ldap-password -b "DC=my,DC=domain,DC=com"')dnl 

Мне потребовалось создать в Active Directory пользователя с именем «sendmail_user» и поместить его пароль в файл ldap-password.

Но все же я не знаю, как отложить ответ сервера в случае использования недопустимого адреса получателя (чтобы уменьшить любое сканирование спамеров на предмет возможных имен пользователей).

Есть предложения?

Вы можете поддерживать свой список в актуальном состоянии, запрашивая Exchange (&(|(objectClass=group)(objectClass=user))(email=*)

через ldapsearch или настройте sendmail для поиска входящего пользователя через LDAP

определить (confLDAP_DEFAULT_SPEC',-p 389 -h ldap.foobar.com' -b dc=foo, dc = bar '') dnl define (ALIAS_FILE',/ etc / aliases, ldap: -k (& (| (objectclass = user) (objectclass = group)) (proxyAddresses = smtp:% 0)) -v mail ') dnl

Вам нужно будет настроить строку LDAP_DEFAULT_SPEC с соответствующими параметрами для поиска подходящих OU в вашей настройке AD.

Предостережения - это обычные предупреждения о том, что происходит, когда ваш запрос LDAP не работает (обмен / сеть не работает) или работает медленно.