Вроде все настроил, работает, напишу небольшой faq, для тех кто первый раз столкнется с этим)
Конфиги все собирались по кускам с различных ресурсов.
Ставилось все на FreeBSD(6.2), Sendmail(8.14.1) ставился из портов
(ldap для проверки адреса получателя в AD).
После установки, надо подменить встроенный Sendmail в FreeBSD на установленный, для этого идем выполняем
Код: Выделить всё
cd /usr/ports/mail/sendmail && make mailer.conf
,
в
Код: Выделить всё
/etc/rc.conf добавляем Sendmail_enable="NONE"
, для автоматического запуска создаем в
Код: Выделить всё
/usr/local/etc/rc.d/sendmail.sh - пример скрипта можно найти во многих статьях данного сайта, немного подредактировав.
Теперь настройка: рабочим каталогом является
, после перехода в каталог выполняем команду
, будет создан файл
, собственно редактируем его
Код: Выделить всё
divert(-1)
divert(0)
VERSIONID(`$FreeBSD: src/etc/sendmail/freebsd.mc,v 1.30.2.2 2006/08/23 03:31:00 gshapiro Exp $')
OSTYPE(freebsd6)
DOMAIN(generic)
FEATURE(access_db, `hash -o -T<TMPF> /etc/mail/access')
FEATURE(blacklist_recipients)
FEATURE(local_lmtp)
FEATURE(mailertable, `hash -o /etc/mail/mailertable')
FEATURE(virtusertable, `hash -o /etc/mail/virtusertable')
dnl Это для проверки наличия e-mail получателя почты, если такого нет, смысла принимать письмо нет.
dnl чтобы все работало, создаем в АД подразделение(OU) Sendmail и пользователя Sendmail (CN), после в /etc/mail/ создаем два файла ldap_pass - вписываем в него пароль
dnl от пользователя Sendmail и файл ldap_route_domains - вписываем в него домен domain.ru
define(`confMAPDEF', `-DLDAPMAP')
define(`confLIBS', `-lldap -llber')
define(`confLDAP_DEFAULT_SPEC', `-h "192.168.0.4" -b "DC=DOMAIN,DC=RU" -d "CN=Sendmail,OU=Sendmail,DC=domain,DC=ru" -MLDAP_AUTH_SIMPLE -P/etc/mail/ldap_pass')dnl
LDAPROUTE_DOMAIN_FILE(`/etc/mail/ldap_route_domains')dnl
FEATURE(`ldap_routing', `null', `ldap -1 -T<TMPF> -v mail -k (&(|(objectclass=user)(objectclass=group))(proxyAddresses=smtp:%0))',`bounce')dnl
dnl Uncomment to allow relaying based on your MX records.
dnl NOTE: This can allow sites to use your server as a backup MX without
dnl your permission.
dnl FEATURE(relay_based_on_MX)
dnl Dialup users should uncomment and define this appropriately
dnl define(`SMART_HOST', `your.isp.mail.server')
dnl Uncomment the first line to change the location of the default
dnl /etc/mail/local-host-names and comment out the second line.
dnl define(`confCW_FILE', `-o /etc/mail/sendmail.cw')
define(`confCW_FILE', `-o /etc/mail/local-host-names')
dnl Enable for both IPv4 and IPv6 (optional)
DAEMON_OPTIONS(`Name=IPv4, Family=inet')
dnl DAEMON_OPTIONS(`Name=IPv6, Family=inet6, Modifiers=O')
dnl define(`confBIND_OPTS', `WorkAroundBrokenAAAA')
define(`confNO_RCPT_ACTION', `add-to-undisclosed')
define(`confPRIVACY_FLAGS', `authwarnings,noexpn,novrfy')
dnl antispam Черные списки.
FEATURE(dnsbl, `bl.spamcop.net', `"550 Mail from " $&{client_addr} " rejected - see bl.spamcop.net"')
FEATURE(dnsbl, `cbl.abuseat.org', `"550 Mail from " $&{client_addr} " rejected - see cbl.abuseat.org"')
FEATURE(dnsbl, `dnsbl.njabl.org', `"550 Mail from " $&{client_addr} " rejected - see dnsbl.njabl.org"')
FEATURE(dnsbl, `dnsbl.sorbs.net', `"550 Mail from " $&{client_addr} " rejected - see dnsbl.sorbs.net"')
FEATURE(dnsbl, `list.dsbl.org', `"550 Mail from " $&{client_addr} " rejected - see list.dsbl.org"')
FEATURE(dnsbl, `zen.spamhaus.org', `"550 Mail from " $&{client_addr} " rejected - see zen.spamhaus.org"')
FEATURE(`delay_checks')dnl
FEATURE(`greet_pause', `5000')dnl
dnl Максимальное количество sendmail-процессов,
dnl которые могут быть запущенны одновременно
define(`confMAX_DAEMON_CHILDREN', `10')
dnl Максимальное количество входящих соединений за секунду
define(`confCONNECTION_RATE_THROTTLE', `10')
dnl Максимальный размер почтового сообщения в байтах
define(`confMAX_MESSAGE_SIZE', `5242880')
dnl Максимальное количество получателей в одном сообщении
define(`confMAX_RCPTS_PER_MESSAGE', `50')
dnl различные таймауты, по названию можно догадаться для чего нужны
dnl define(`confTO_CONNECT', `30s')dnl
define(`confTO_IDENT', `0')dnl
dnl define(`confTO_COMMAND', `30s')dnl
dnl define(`confTO_DATABLOCK', `2m')dnl
dnl define(`confTO_STARTTLS', `2m')dnl
MAILER(local)
MAILER(smtp)
dnl Это для milter-greylist , по каким то причинам, у меня он работать отказывается(((
dnl define(`confMILTER_MACROS_HELO', confMILTER_MACROS_HELO``, {verify}'')
dnl define(`confMILTER_MACROS_ENVRCPT', confMILTER_MACROS_ENVRCPT``, {greylist}'')
dnl INPUT_MAIL_FILTER(`greylist', `S=local:/var/milter-greylist/milter-greylist.sock, F=T, T=R:30s')
С конфигом все.
дальше его нужно собрать, выполняем
далее создаем файлы
Редактируем: access вносим такое содержимое:
Код: Выделить всё
domain.ru RELAY
192.168.0. RELAY
192.168.0.5 RELAY (сервер Exchange), без этого не работало, хотя строка выше должна работать для все подсети
В файл mailertable вноси:
Код: Выделить всё
domain.ru smtp:[192.168.0.5] // собственно письма для домена domain.ru перенаправлять на Exchange
В остальных файлах
Код: Выделить всё
/etc/mail/aliases; local-host-names; virtusertable; информации о domain.ru не должно быть, иначе вся почта будет оставаться на данном сервере.
После редактирования файлов выполняем
Код: Выделить всё
make
make install
make restart - если сендмаил был запущен. Иначе запускаем его #sendmail -bd -q10m
Теперь необходимо внести изменения в Exchange:
Код: Выделить всё
Заходим в System Manager. Открываем закладку Servers. Выбираем наш сервер, Protocols - SMTP - Default SMTP Virtual Server - Properties - Access - Relay Далее добавляем ip адрес с которого можно проводить relay. Вводим 192.168.0.83 IP сервера Sendmail.
В закладке Delivery - Advanced - Smart Host - вписываем [192.168.0.83], т.е перенаправлять почту на Sendmail
Ну вроде все
