Sendmail -> MS Exchange

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
smertnik
рядовой
Сообщения: 27
Зарегистрирован: 2007-09-29 9:38:03

Sendmail -> MS Exchange

Непрочитанное сообщение smertnik » 2007-10-06 11:16:46

Здравствуйте.

Планируется поставить Sendmail на шлюзе для проверки на вирусы и спам входящей почты(сделать его шлюзовым почтовым сервером), далее это передавать на MS Exchange 2003, возникает вопрос, чем лучше и как связать эти 2 сервера?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35466
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Sendmail -> MS Exchange

Непрочитанное сообщение Alex Keda » 2007-10-06 16:31:15

тему переношу в MTA.
===========
sendmail можно, но я бы рекмендвал exim.
Убей их всех! Бог потом рассортирует...

smertnik
рядовой
Сообщения: 27
Зарегистрирован: 2007-09-29 9:38:03

Re: Sendmail -> MS Exchange

Непрочитанное сообщение smertnik » 2007-10-07 9:30:13

Почитал темы про exim, как я понял, перенаправление можно сделать smart_route, насколько это будет хорошо? Может кто предложит более удобный вариант, в данный момент в планах создать менее приоритетную MX запись, в шлюз поставить 3 сетевую карту с адресом данной MX, после чего отключить форвард на Exchange. :)

smertnik
рядовой
Сообщения: 27
Зарегистрирован: 2007-09-29 9:38:03

Re: Sendmail -> MS Exchange

Непрочитанное сообщение smertnik » 2007-10-11 12:21:39

Решил попробовать сделать по данной статье exim + exchange http://www.lissyara.su/?id=1453
Пытаюсь разложит все по полочкам так сказать, имеется почтовый сервер Exchange (mail.domain.ru), установил Exim (fmail.domain.ru)

Код: Выделить всё

#primary_hostname = mail.short-dom.ru
primary_hostname = fmail.domain.ru

# Эксчейнджевый домен
#MS_EXCHANGE_DOMAIN = long-domain.local
MS_EXCHANGE_DOMAIN = mail.domain.ru

# внутренний IP машины
INTERNAL_IP = 192.168.0.83 

# внимание - изменённ дефолтовый разделитель списка!
ldap_default_servers = <; 192.168.0.4:3268 

# макросы для работы с LDAP
LDAP_AD_BINDDN = exim
LDAP_AD_PASS = pass_user_exim_in_domain
LDAP_AD_BASE_DN = DC=domain,DC=ru

# макрос для проверки пользователей в домене
LDAP_AD_MAIL_RCPT = \
user=LDAP_AD_BINDDN \
pass=LDAP_AD_PASS \
ldap:///LDAP_AD_BASE_DN?mail?sub?\
(&(|(objectClass=user)(objectClass=publicFolder)(objectClass=group))\
(|(proxyAddresses=${quote_ldap:${local_part}@MS_EXCHANGE_DOMAIN})\
(proxyAddresses=smtp:${quote_ldap:${local_part}@MS_EXCHANGE_DOMAIN}))\
(!(userAccountControl:1.2.840.113556.1.4.803:=2)))

# Делаем список локальных доменов. Далее этот
# список будет фигурировать в виде +local_domains
# В данном случае домены выбираются из БД MySQL. Также
# можно их просто перечислить через двоеточие. Есть интересная
# возможность, можно указать юзер@[хост] - lissyara@[222.222.4.5]
domainlist local_domains = mail.short-dom.ru : relay.long-domain.ru   -------   тут я чет запутался (relay.long-domain.ru - это кто или что?)

# делаем список доменов с которых разрешены релеи.
# Далее этот список будет в виде +relay_to_domains
# Можно использовать символы подстановки, типа:
# .... = *.my.domen.su : !spam.my.domen.su : first.su
# тогда пропускается всё, что похоже на *.my.domen.su, но
# от spam.my.domen.su релеится почта не будет.
domainlist relay_to_domains = long-domain.ru : short-dom.ru  ( тут тоже туплю, в моем случаее получается domainlist relay_to_domains = domain.ru?)

# Составляем список хостов с которых разрешён неавторизованый
# релей. Обычно в нём находятся локальные сети, и локалхост...
# ЛокалХост в двух видах был внесён сознательно - пару раз
# сталкивался с кривым файлом /etc/hosts - результатом было
# непонимание `localhost` но пониманием 127.0.0.1/8
hostlist   relay_from_hosts = localhost : 127.0.0.0/8 : 192.168.0.0/16

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35466
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Sendmail -> MS Exchange

Непрочитанное сообщение Alex Keda » 2007-10-11 15:47:52

это свои хосты
Убей их всех! Бог потом рассортирует...

smertnik
рядовой
Сообщения: 27
Зарегистрирован: 2007-09-29 9:38:03

Re: Sendmail -> MS Exchange

Непрочитанное сообщение smertnik » 2007-10-17 9:07:26

Вроде все настроил, работает, напишу небольшой faq, для тех кто первый раз столкнется с этим)
Конфиги все собирались по кускам с различных ресурсов.
Ставилось все на FreeBSD(6.2), Sendmail(8.14.1) ставился из портов

Код: Выделить всё

/usr/ports/mail/sendmail-ldap
(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 - пример скрипта можно найти во многих статьях данного сайта, немного подредактировав.
Теперь настройка: рабочим каталогом является

Код: Выделить всё

cd /etc/mail
, после перехода в каталог выполняем команду , будет создан файл

Код: Выделить всё

имя_сервера.mc
, собственно редактируем его

Код: Выделить всё

ee имя_сервера.mc

Код: Выделить всё

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')
С конфигом все.
дальше его нужно собрать, выполняем

Код: Выделить всё

make
make install
далее создаем файлы

Код: Выделить всё

#touch access mailertable
Редактируем: 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
Ну вроде все :)

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35466
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Sendmail -> MS Exchange

Непрочитанное сообщение Alex Keda » 2007-10-17 9:39:35

а статьёй? :)
Убей их всех! Бог потом рассортирует...

smertnik
рядовой
Сообщения: 27
Зарегистрирован: 2007-09-29 9:38:03

Re: Sendmail -> MS Exchange

Непрочитанное сообщение smertnik » 2007-10-18 9:09:06

Можно попробовать написать))) только для начала покопаю возможности))

kmb
лейтенант
Сообщения: 680
Зарегистрирован: 2007-02-20 8:30:03
Контактная информация:

Re: Sendmail -> MS Exchange

Непрочитанное сообщение kmb » 2008-09-27 8:06:26

К нам тоже пришел такой праздник... =/
Если я правильно понял, во вне у вас смотрит сендмайл, который перекидывает письма внутреннему эксченджу. Схема в принципе неплохая, но возник один вопрос, почему бы из этой схемы не выкинуть сендмайл вообще? :) Из существующих причин, вижу пока только, что антиспам для эксчейнджа платный...
truth is out there...

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35466
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Sendmail -> MS Exchange

Непрочитанное сообщение Alex Keda » 2008-09-27 21:02:50

тупой он...
да и стёрмно винду наружу вытыкать...
неизвестно какие там технологические отверсия оставлены по требованиям правительства США
Убей их всех! Бог потом рассортирует...

kmb
лейтенант
Сообщения: 680
Зарегистрирован: 2007-02-20 8:30:03
Контактная информация:

Re: Sendmail -> MS Exchange

Непрочитанное сообщение kmb » 2008-09-27 21:14:35

И эт тоже :) Ну вроде "начальство" дало добро, хоть немножко легче стало :)
truth is out there...

megaalc
проходил мимо
Сообщения: 7
Зарегистрирован: 2007-07-30 18:52:57

Re: Sendmail -> MS Exchange

Непрочитанное сообщение megaalc » 2008-10-24 8:58:19

У меня попытка проделать такое же закончилась на ошибке

554 5.0.0 /etc/mail/sendmail.cf: line 201: unknown configuration line "(&(|(objectclass=user)(objectclass=group))(proxyAddresses=smtp:%0))"

Конфиг sendmail

define(`confLDAP_DEFAULT_SPEC', `-h "192.168.1.250" -b "DC=csri,DC=local" -d "CN=ldapsearch,CN=users,DC=csri,DC=local" -MLDAP_AUTH_SIMPLE -P/etc/mail/ldap

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

хелп

smertnik1
проходил мимо

Re: Sendmail -> MS Exchange

Непрочитанное сообщение smertnik1 » 2008-10-24 9:08:00

Хмм, sendmail должен быть собран с поддержкой ldap.
Попробуй:
APPENDDEF(`conf_sendmail_ENVDEF',-DLDAPMAP')
APPENDDEF(`conf_libsm_ENVDEF',-DLDAPMAP')
APPENDDEF(`confINCDIRS',-I/usr/local/include')
APPENDDEF(`confLIBDIRS',-L/usr/local/lib')
APPENDDEF(`conf_sendmail_LIBS',-lldap -llber')

Аватара пользователя
rootaxe
рядовой
Сообщения: 17
Зарегистрирован: 2008-01-30 6:45:42
Откуда: Иркутск

Re: Sendmail -> MS Exchange

Непрочитанное сообщение rootaxe » 2009-01-22 17:39:09

smertnik писал(а):Ну вроде все :)
smertnik, спасибо. Очень кстати я набрел на этот фак. Скоро тоже предстоит такую связку делать.

megaalc
проходил мимо
Сообщения: 7
Зарегистрирован: 2007-07-30 18:52:57

Re: Sendmail -> MS Exchange

Непрочитанное сообщение megaalc » 2009-01-23 18:27:00

могу скинуть конфиги если чЁ

Аватара пользователя
rootaxe
рядовой
Сообщения: 17
Зарегистрирован: 2008-01-30 6:45:42
Откуда: Иркутск

Re: Sendmail -> MS Exchange

Непрочитанное сообщение rootaxe » 2009-02-04 19:08:03

megaalc писал(а):могу скинуть конфиги если чЁ
Спасибо. Было бы хорошо.

Кстати. Будет ли такая схема работать если почту по pop3 fetchmail забирает (вроде ж разницы никакой для шлюза)? Хочу попробовать антиспам от google или yandex.

temp user
проходил мимо

Re: Sendmail -> MS Exchange

Непрочитанное сообщение temp user » 2009-03-26 15:25:48

Сделал все по пунктам, неработает
проверка
----------------------------
sendmail -bt
>$={LDAPRoute}
blabla.ru
>/map ldapmra user@blabla.ru
map_lookup: ldapmra (user@blabla.ru) returns user@blabla.ru
>/map ldapmra wrong_user@blabla.ru
map_lookup: ldapmra (wrong_user@blabla.ru) no match (68)
___________
проходит правильно
Если телнетом rcpt to:<wrong_user@blabla.ru> --- Rec... OK! как и существующий адрес и ползет дальше по mailertable
bounce в FEATURE(`ldap_routing',`null',`ldap -1 -T -v mail -k (&(|(objectclass=user)(objectclass=group))(proxyAddresses=smtp:%0))',`bounce') должно отбрасывать. нехочет

RE_SET
проходил мимо
Сообщения: 4
Зарегистрирован: 2011-01-25 17:32:55

Re: Sendmail -> MS Exchange

Непрочитанное сообщение RE_SET » 2011-01-25 17:40:43

Подскажите тоже плз... Все сделал как в факе, но sendmail выдаёт это:

Код: Выделить всё

#sendmail -bd -q10m
554 5.0.0 No local mailer defined
554 5.0.0 QueueDirectory (Q) option must be set
Что с этим делать? В инете вменяемой инфы не нарыл :(

RE_SET
проходил мимо
Сообщения: 4
Зарегистрирован: 2011-01-25 17:32:55

Re: Sendmail -> MS Exchange

Непрочитанное сообщение RE_SET » 2011-01-25 18:21:37

Да, выдает ещё сообщение про незакрытую скобку:
#make
/usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/ /usr/share/sendmail/cf/m4/cf.m4 freebsd.domain.ua.mc > freebsd.domain.ua.mc.cf
m4: unexpected end of input, unclosed parenthesis:
/usr/share/sendmail/cf/feature/access_db.m4 at line 49
*** Error code 1

В файле freebsd.domain.ua.mc проверил все скобки, всё соответствует.

blade_007
ст. прапорщик
Сообщения: 571
Зарегистрирован: 2010-03-12 12:59:08
Контактная информация:

Re: Sendmail -> MS Exchange

Непрочитанное сообщение blade_007 » 2011-01-25 18:30:15

RE_SET писал(а):Подскажите тоже плз... Все сделал как в факе, но sendmail выдаёт это:

#sendmail -bd -q10m
554 5.0.0 No local mailer defined
554 5.0.0 QueueDirectory (Q) option must be set

Что с этим делать? В инете вменяемой инфы не нарыл :(
Как минимум, проверьте наличие строки
O QueueDirectory=/var/spool/mqueue

RE_SET
проходил мимо
Сообщения: 4
Зарегистрирован: 2011-01-25 17:32:55

Re: Sendmail -> MS Exchange

Непрочитанное сообщение RE_SET » 2011-01-26 10:50:01

blade_007 писал(а): Как минимум, проверьте наличие строки
O QueueDirectory=/var/spool/mqueue
Хм, строки в каком файле?
Похоже, проблема в незакрытой скобке(мой пост выше), подскажите плз, в каком файле проверять скобки при такой ошибке?

RE_SET
проходил мимо
Сообщения: 4
Зарегистрирован: 2011-01-25 17:32:55

Re: Sendmail -> MS Exchange

Непрочитанное сообщение RE_SET » 2011-01-26 11:51:56

Разобрался... Лишних скобок так и не нашел, но аккуратно ещё раз скопипастил конфиг из фака, заработало!
Спасибо!

Guest
проходил мимо

Re: Sendmail -> MS Exchange

Непрочитанное сообщение Guest » 2012-11-14 12:03:21

/usr/local/etc/rc.d/sendmail.sh - пример скрипта можно найти во многих статьях данного сайта, немного подредактировав.
Киньте пожалуйста сюда рабочий скрипт... Поиск-гугл юзал, не нашёл.