The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"sendmail + lotus"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Открытые системы на сервере (Почта / Linux)
Изначальное сообщение [ Отслеживать ]

"sendmail + lotus"  +/
Сообщение от sancher (ok) on 20-Мрт-10, 20:33 
Добрый вечер всем.
В наследство от прежнего админа досталась довольно сложно (для меня)
настроенная связка почтовых серверов.
Сам не могу осилить все настройки.
У меня опыта практически нет.
Пытаюсь сам разобраться, но многие вещи понять не могу.
Буду очень признателен за помощь.
Итак по порядку.
Есть сервак smtp.domain.ru, на котором крутится SLES 10.
Вместо штатного postfix установлен sendmail.
Но это ещё не всё =)
На нём же стоит IBM Lotus Domino 7.
Этот сервер по сути выполняет роль спам-фильтра.
Sendmail принимает почту, фильтрует с помощью procmail,
проверяет на вирусы с помощью clamav, а потом отсылает
Lotus-у, который проводит повторную проверку на вирусы
и спам с помощью ScanMail от Trend Micro.
После чего отсылает почту на другой физический сервер,
где работает только Lotus. Пользователи корпоративной сети
подключаются к этому 2-му серверу и забирают почту.
У меня задача разобраться с первым сервером.

Начну с sendmail.

Запускается он суперсервером xinetd
с параметрами -С /etc/mail/sendmail1.cf -L sm-mta -bs

Вот его конфиг (/etc/mail/linux1.mc):

divert(-1)
# To enable these options just run  m4 /etc/mail/linux1.mc > /etc/mail/sendmail1.cf
include(`/usr/share/sendmail/m4/cf.m4')
divert(0)
VERSIONID(`@(#)Setup for SuSE Linux    0.5 (SuSE Linux) 2004/04/02')
OSTYPE(`suse-linux')
FEATURE(`generics_entire_domain')
define(`confCW_FILE', `-o /etc/mail/local-host-names')
DOMAIN(`generic')

define(`confPRIVACY_FLAGS', `authwarnings,noexpn,novrfy')
define(`confDEF_CHAR_SET', `KOI8-R')
define(`confMAX_MESSAGE_SIZE', `15728640')
define(`confMAX_MIME_HEADER_LENGTH', `512/256')
define(`ESMTP_MAILER_ARGS', `TCP hub.domain.ru 2025')
FEATURE(nouucp, `reject')
FEATURE(`access_db', `hash -T<TMPF> -o /etc/mail/access.db')
FEATURE(`blacklist_recipients')
FEATURE(`delay_checks')
FEATURE(`dnsbl', `bl.spamcop.net', `"Spam blocked - see: http://spamcop.net/bl.shtml?"$&{client_addr}')
FEATURE(`dnsbl', `sbl-xbl.spamhaus.org', `Rejected - see http://www.spamhaus.org/')
MAILER(`local')
MAILER(`smtp')
MAILER(`procmail')
define(`confAUTH_MECHANISMS', `LOGIN')
TRUST_AUTH_MECH(`LOGIN')
INPUT_MAIL_FILTER(`clamav', `S=inet:3311@127.0.0.1, F=, T=S:4m;R:4m')

LOCAL_RULESETS
HMessage-Id: $>CheckMessageId

SCheckMessageId
R< $+ @ $+ >        $@ OK
R$*            $#error $: 553 Header Error


Основные на мой взгляд настройки:
используем local-host-names для приёма почты только для домена domain.ru (внутри одна строка domain.ru),
TCP hub.domain.ru 2025 - дополнительная опция для /etc/mail/mailertable
(внутри mailertable: domain.ru        smtp:hub.domain.ru).
То есть всё, что приходит на domain.ru, пересылаем Лотусу (hub.domain.ru) на порт 2025 по smtp.
Также видно, что подключается procmail и clamav.
Внутри /etc/mail/virtusertable строчка @domain.ru    admin
То есть вся почта пересылается пользователю admin.

Внутри crontab есть следующая строчка
*/10    *    *    *    *    root    sendmail -Am -L mailqueue -qf

То есть каждые десять минут запускаем sendmail для обработки накопившейся очереди.

Обработка писем procmail-ом достаточно сложная, с десяток листов A4 рецептов
с многоуровневой проверкой на спам и назначением веса письму (вероятность спама).
Обработка рецептами осуществляется в /etc/procmailrc
Доставка средствами procmail осуществляется в /home/admin/.procmailrc
В опциях procmail есть такой параметр: SENDMAILFLAGS="-Am -oi"
Основное там следующее: если не явный спам - переслать пользователею
(в /home/admin/Maildir/.username), если пользователя не существует
в ldap лотуса - отправить письмо в /dev/null

Вкратце всё.

Ах да. Ещё поднят SASL, который проводит аутентификацию по LDAP, это так,
для полноты картины.

Теперь буду задавать вопросы по поводу тех моментов, которые я не совсем понимаю.

Но для начала приведу пример лога sendmail-а, при отправке письма на этот сервер с
ящика на mail.ru

Mar 20 16:45:16 smtp sm-mta[25832]: o2KDjGqq025832: from=<me@inbox.ru>, size=630, class=0, nrcpts=1, msgid=<E1NsyzL-0006vg-00.me86-inbox-ru@f249.mail.ru>, proto=ESMTP, relay=f249.mail.ru [217.69.128.174]
Mar 20 16:45:16 smtp sm-mta[25832]: o2KDjGqq025832: Milter change (add): header: X-Virus-Scanned: clamav-milter 0.95.1 at smtp
Mar 20 16:45:16 smtp sm-mta[25832]: o2KDjGqq025832: Milter change (add): header: X-Virus-Status: Clean
Mar 20 16:45:16 smtp sendmail[25885]: o2KDjGcc025885: from=admin, size=937, class=0, nrcpts=1, msgid=<E1NsyzL-0006vg-00.me86-inbox-ru@f249.mail.ru>, relay=admin@localhost
Mar 20 16:45:16 smtp sendmail[25888]: o2KDjGcc025885: to=me2@domain.ru, ctladdr=admin (1000/1002), delay=00:00:00, xdelay=00:00:00, mailer=smtp, pri=120937, relay=hub.domain.ru., dsn=4.0.0, stat=Sent
Mar 20 16:45:16 smtp sm-mta[25853]: o2KDjGqq025832: to=<me2@domain.ru>, delay=00:00:00, xdelay=00:00:00, mailer=local, pri=30889, dsn=2.0.0, stat=Sent

Ещё приведу одно из писем у рута в папке

Return-Path: <root@smtp.domain.ru>
Received: from smtp.domain.ru (localhost [127.0.0.1])
    by smtp.domain.ru (8.14.1/8.14.1/SuSE Linux 0.8) with ESMTP id o2KEDlIM031928
    for <root@smtp.domain.ru>; Sat, 20 Mar 2010 17:13:47 +0300
Received: (from root@localhost)
    by smtp.domain.ru (8.14.1/8.14.1/Submit) id o2KDgdss023924;
    Sat, 20 Mar 2010 16:42:39 +0300
Date: Sat, 20 Mar 2010 16:42:39 +0300
Message-Id: <201003201342.o2KDgdss023924@smtp.domain.ru>
From: root@smtp.domain.ru
To: root@smtp.domain.ru
Subject: Cron <root@smtp> sendmail -Am -L mailqueue -qf
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin>
X-Cron-Env: <MAILTO=root>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
X-Virus-Scanned: clamav-milter 0.95.1 at smtp
X-Virus-Status: Clean

timeout writing message to hub.domain.ru.: Broken pipe

1. Главный вопрос: хочу понять всю цепочку, которую проходит письмо.
Опишу примерно как понимаю я. Уверен, что не совсем правильно понимаю, а может быть
вообще неверно. Итак. Пришло письмо. Суперсервер xined создал процесс sendmail,
который кладёт письмо в /root/Maildir/, потом отдаёт письмо на проверку clamav,
пересылает в соответстии с virtusertable письмо в папку admin-а (/home/admin/Maildir/tmp)
Потом видимо запускается procmail, который отрабатывает папку /home/admin/Maildir/new
и раскладывает почту юзерам по их папкам /home/admin/Maildir/.username и удаляя спам.
Где тут работает очередь /var/spool/mqueue?
2. Читал, что MAILER(`procmail') должна стоять перед остальными мэйлерами, а тут
она вконце, почему?
3. Что вообще значит MAILER(`local') ? Что значит последняя строчка в приведённом логе?

4. Таких писем, как я привёл, довольно много. Я про Broken pipe. В чём их причина?
Я так понимаю, что это ошибка при отсылке лотусу. Но почему она возникает?

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

  • sendmail + lotus, sancher, 15:49 , 21-Мрт-10, (1)  
  • sendmail + lotus, Medlar, 16:43 , 23-Мрт-10, (3)  
    • sendmail + lotus, sancher, 20:21 , 23-Мрт-10, (4)  
      • sendmail + lotus, Medlar, 11:58 , 25-Мрт-10, (5)  

Сообщения по теме [Сортировка по времени | RSS]


1. "sendmail + lotus"  +/
Сообщение от sancher (ok) on 21-Мрт-10, 15:49 
неужели никто не готов помочь =(
потихоньку разбираюсь
почта приходит и посредством virtusertable
(@domain.ru admin) посылается админу
не понимаю, mailertable (domain.ru smtp:hub.domain.ru)
срабатывает после virtusertable?
то есть письмо посылается админу и одновременно Лотусу?
застрял в понимании этого момента
может хоть ссылку кто-нибудь кинет, где можно подробно прочитать
про мэйлеры, mailertable, virtusertable, а то целостной картины
в голове нет, одни отрывки...
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

3. "sendmail + lotus"  +/
Сообщение от Medlar email(??) on 23-Мрт-10, 16:43 
>В наследство от прежнего админа досталась довольно сложно (для меня)
>настроенная связка почтовых серверов.

Связка, действительно, несколько замороченная.
В первую очередь, я бы отказалась от запуска sendmail через xinetd.
Какие цели, кроме ограничения доступа к 25 порту, он преследует?

>[оверквотинг удален]
>define(`confMAX_MIME_HEADER_LENGTH', `512/256')
>define(`ESMTP_MAILER_ARGS', `TCP hub.domain.ru 2025')
>FEATURE(nouucp, `reject')
>FEATURE(`access_db', `hash -T<TMPF> -o /etc/mail/access.db')
>FEATURE(`blacklist_recipients')
>FEATURE(`delay_checks')
>FEATURE(`dnsbl', `bl.spamcop.net', `"Spam blocked - see: http://spamcop.net/bl.shtml?"$&{client_addr}')
>FEATURE(`dnsbl', `sbl-xbl.spamhaus.org', `Rejected - see http://www.spamhaus.org/')
>MAILER(`local')
>MAILER(`smtp')

Вот от этого, имхо, тоже м.б. отказаться( вы ведь уже используете /etc/mail/virtusertable), заменив MAILER на FEATURE(`local_procmail')
>[оверквотинг удален]
>INPUT_MAIL_FILTER(`clamav', `S=inet:3311@127.0.0.1, F=, T=S:4m;R:4m')
>
>LOCAL_RULESETS
>HMessage-Id: $>CheckMessageId
>
>SCheckMessageId
>R< $+ @ $+ >        $@ OK
>R$*   $#error $: 553 Header Error
>
>TCP hub.domain.ru 2025 - дополнительная опция для /etc/mail/mailertable

Что это за опция, чья это опция, где она указана ?

>(внутри mailertable: domain.ru  smtp:hub.domain.ru).
>То есть всё, что приходит на domain.ru, пересылаем Лотусу (hub.domain.ru) на порт
>2025 по smtp.
>Также видно, что подключается procmail и clamav.
>Внутри crontab есть следующая строчка
>*/10 * * * * root sendmail -Am -L mailqueue -qf
>То есть каждые десять минут запускаем sendmail для обработки накопившейся очереди.

С вашими опциями запуска sendmail предстоит еще разбираться и разбираться, но в данном случае могу сразу сказать, что разбирается локальная почта, отправленная непосредственно с сервера, то есть то, что лежит в /var/spool/clientmqueue
>
>Обработка писем procmail-ом достаточно сложная, с десяток листов A4 рецептов
>с многоуровневой проверкой на спам и назначением веса письму (вероятность спама).

Интересно посмотреть ... Как оцениваете качество фильтрации?

>[оверквотинг удален]
>Mar 20 16:45:16 smtp sm-mta[25832]: o2KDjGqq025832: Milter change (add): header: X-Virus-Scanned: clamav-milter
>0.95.1 at smtp
>Mar 20 16:45:16 smtp sm-mta[25832]: o2KDjGqq025832: Milter change (add): header: X-Virus-Status: Clean
>
>Mar 20 16:45:16 smtp sendmail[25885]: o2KDjGcc025885: from=admin, size=937, class=0, nrcpts=1, msgid=<E1NsyzL-0006vg-00.me86-inbox-ru@f249.mail.ru>, relay=admin@localhost
>Mar 20 16:45:16 smtp sendmail[25888]: o2KDjGcc025885: to=me2@domain.ru, ctladdr=admin (1000/1002), delay=00:00:00, xdelay=00:00:00, mailer=smtp,
>pri=120937, relay=hub.domain.ru., dsn=4.0.0, stat=Sent
>Mar 20 16:45:16 smtp sm-mta[25853]: o2KDjGqq025832: to=<me2@domain.ru>, delay=00:00:00, xdelay=00:00:00, mailer=local, pri=30889, dsn=2.0.0, stat=Sent
>
>Ещё приведу одно из писем у рута в папке

ПРиведенное письмо не имеет отношения к данному логу. НОмер процесса не тот.
ПО данному куску лога однозначно видно что письмо доставлено.  stat=Sent
ОНо должно лежить или в /var/spool/mail или там, куда его отправил procmail.
Надо посмотреть и логи procmail'a

>вообще неверно. Итак. Пришло письмо. Суперсервер xined создал процесс sendmail,
>который кладёт письмо

/var/spool/mqueue, если письмо пришло извне
/var/spool/clientmqueue, если письмо сгенерировано самим сервером

>потом отдаёт письмо на проверку clamav,

здесь не все прозрачно, проверка письма фильтрами происходит на разных этапах smtp-диалога непосредственно, если вам это будет интересно, потом дам ссылку.

>пересылает в соответстии с virtusertable письмо в папку admin-а (/home/admin/Maildir/tmp)

Пока письмо не будет обработано полностью, оно будет висеть в директории *mqueue,
а уже оттуда " раскладывает почту юзерам по их папкам /home/admin/Maildir/.username и удаляя спам. "

>2. Читал, что MAILER(`procmail') должна стоять перед остальными мэйлерами, а тут
>она вконце, почему?

Где вы это вычитали?

>3. Что вообще значит MAILER(`local') ? Что значит последняя строчка в приведённом
>логе?

ПО умолчанию локальный mailer всегда включается в конфиг. Этим вы указываете, кто будет раскладывать почту по ящикам.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

4. "sendmail + lotus"  +/
Сообщение от sancher (ok) on 23-Мрт-10, 20:21 
Большое спасибо за ответ.

1. Честно говоря, сам не понимаю, зачем было его через xinetd прикручивать.
И в плане безопасности и в плане производительности по-моему не лучший вариант.

2. Не совсем понял, "MAILER на FEATURE(`local_procmail')" - заменяет проверку на блэклисты?

3. Опция мэйлера esmtp http://www.sendmail.org/m4/ostype.html, позволяет задать порт

4. Фильтрация достаточно качественная.

5. Ссылка по фильтрам была бы кстати.

6. Про мэйлер читал тут http://rostovlinux.ru/content/view/394/56/

7. Вот как раз не совсем понятно. Я же опцией MAILER(`procmail') указываю, что раскладывать будет по ящикам процмэйл. Или неправильно понимаю?

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

5. "sendmail + lotus"  +/
Сообщение от Medlar email(??) on 25-Мрт-10, 11:58 
>1. Честно говоря, сам не понимаю, зачем было его через xinetd прикручивать.

Может, тогда начнем с упрощения вашей конфигурации, отказавшись от xinetd?

>2. Не совсем понял, "MAILER на FEATURE(`local_procmail')" - заменяет проверку на блэклисты?

Нет. Судя по документации, MAILER(procmail), хоть и наз-ся мэйлер, но на самом деле это
"An interface to procmail.This is designed to be used in mailertables... Of course there are other ways to solve this particular problem, e.g., a catch-all entry in a virtusertable."
То есть, если вы уже исп-те VT, то необходимости в MAILER(procmail).
Хотя, если в вашем конфиге уже исп-ся конструкция, подобная описанной в док-ии:
If you have this mailer defined, you could set up a mailertable reading:
host.com    procmail:/etc/procmailrcs/host.com
with the file /etc/procmailrcs/host.com reading:
:0    # forward mail for host.com
! -oi -f $1 person@other.host
то отказ от MAILER(procmail) потребует изменения конфига и конфига procmail, и mailertable

ПРосто мне непонятно, зачем у вас исп-ся MAILER(procmail), если можно обойтись
одной записью в virtusertable.

У меня локальный доставщик тоже procmail.
И в моем конфиге следующее:
OSTYPE(`linux_procmail')
DOMAIN(`anrbru')
MAILER(`local')
MAILER(`smtp')

linux_procmail.m4:
ifdef(`PROCMAIL_MAILER_PATH',,
    define(`PROCMAIL_MAILER_PATH', `/usr/bin/procmail'))
FEATURE(local_procmail)

Вот FEATURE(local_procmail) согласно док-ии и говорит, что "Use procmail or another delivery agent as the local mailer."

>5. Ссылка по фильтрам была бы кстати.

Ссылка вот http://linux.ufaras.ru/sendmail2.html#Milter_seq.
Но вам ее читать еще рано, совсем голову себе заморочите.
Сначала надо с текущими проблемами разобраться.

>6. Про мэйлер читал тут http://rostovlinux.ru/content/view/394/56/

Представляете, а в родной док-ии по sendmail об этом ни слова.
=> Читать следует первоисточник, а в нем по данному поводу в секции MAILER procmail сказано следующее:
"If you use this with FEATURE(`local_procmail'), the FEATURE should be listed first."

>7. Вот как раз не совсем понятно. Я же опцией MAILER(`procmail') указываю,
>что раскладывать будет по ящикам процмэйл. Или неправильно понимаю?

КАк уже было сказано выше, за это отвечает FEATURE(local_procmail), а не MAILER(procmail)

Хотя согласна, путаница присутсвует. Зачем надо было называть мэйлером то, что на самом деле им не является, знает только САМ автор sendmail'a.


Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2023 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру