URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 79758
[ Назад ]

Исходное сообщение
"Sendmail - копирование определенной почты."

Отправлено cYbErLoRd , 10-Апр-08 19:41 
Локалка. Бэкэнд эксчендж (юзерские ящики), фронтэнд sendmail (relay). Есть задача, организовать специальный ящик (на эксчендже), куда должна копироваться почта, которая уходит(из локалки) и приходит снаружи на\с определенного почтового домена (xyz.com). Т.е. собственно говоря для мониторинга переписки руководством. Кто-нибудь может подсказать, как это можно организовать средствами сендмыла?

Содержание

Сообщения в этом обсуждении
"Sendmail - копирование определенной почты."
Отправлено cYbErLoRd , 10-Апр-08 21:06 
Вот, нашел классную статейку по этому поводу
http://www.opennet.me/docs/RUS/sendmail_copy/
то что надо! Использую вариант номер 4. Единственная проблема, что почта копируется только если в /etc/mail/copy-users указать точный почтовый ящик. А мне нужен не ящик а домен!
Может быть кто-нить умный подскажет как переписать copymail.m4, так чтобы достаточно было указать домен?

Вот код м4 файла:
_______________________________________________________________________

copymail.m4 (Вариант 4):

PUSHDIVERT(-1)

ifdef(`COPYMAIL_MAILBOX',,
    `define(`COPYMAIL_MAILBOX', `postmaster')')dnl

ifdef(`COPY_USERS',,
    `define(`COPY_USERS', `-o /etc/mail/copy-users')')dnl

ifdef(`NOCOPY_CONFIG',,
    `errprint(`*** You must define NOCOPY_CONFIG for copymail mailer!!! ***')')dnl

POPDIVERT
#########################################
###   COPYMAIL Mailer specification   ###
#########################################

VERSIONID(`$Id: cpsendmail.html,v 1.2 2002/06/14 18:39:10 freeman Exp $')dnl

LOCAL_CONFIG
F{COPY}COPY_USERS

LOCAL_RULE_0
# Send mail $={COPY} to copymail mailer
R$* < @ $+ . > $*            $: $1 < @ $2 . > $3 $| $1 @ $2
R$* < @ $+ . > $* $| $={COPY}        $#copymail $@ localhost $: $1 < @ $2 . > $3
R$* < @ $+ . > $* $| $*            $: $1 <@ $2 . > $3 $| $&{client_addr}
R$* < @ $+ . > $* $| $={COPY}        $#copymail $@ localhost $: $1 < @ $2 . > $3
R$* < @ $+ . > $* $| $*            $: $1 <@ $2 . > $3 $| $&f
R$* < @ $+ . > $* $| <$*>        $: $1 <@ $2 . > $3 $| $4
R$* < @ $+ . > $* $| $={COPY}        $#copymail $@ localhost $: $1 < @ $2 . > $3
R$* < @ $+ . > $* $| $*            $: $1 <@ $2 . > $3

# Send message to original recipient + additional mailbox: COPYMAIL_MAILBOX
Mcopymail, P=/usr/sbin/sendmail, F=fmSDFMu, S=0, R=0,
    A=sendmail -N never -C NOCOPY_CONFIG COPYMAIL_MAILBOX $u
_________________________________________________________________________________


"Sendmail - копирование определенной почты."
Отправлено cYbErLoRd , 11-Апр-08 10:57 
Неужели никто не разбирается в м4?
Я бы с радостью сам бы разобрался, но найти грамотную инфу, чтобы можно было понять все эти
"R$* < @ $+ . > $* $| $={COPY}        $#copymail $@ localhost $: $1 < @ $2 . > $3" не получается :(

"Sendmail - копирование определенной почты."
Отправлено Medlar , 11-Апр-08 11:36 
>Неужели никто не разбирается в м4?
>Я бы с радостью сам бы разобрался, но найти грамотную инфу, чтобы
>можно было понять все эти
>"R$* < @ $+ . > $* $| $={COPY}        $#copymail $@ localhost $: $1 < @ $2 . > $3" не получается :(

Вам нужно и юзер и домен
или только домен



"Sendmail - копирование определенной почты."
Отправлено akuzhelev , 11-Апр-08 11:02 
Посмотрите мильтер synonym

"Sendmail - копирование определенной почты."
Отправлено Medlar , 11-Апр-08 11:53 
>[оверквотинг удален]
>###   COPYMAIL Mailer specification   ###
>#########################################
>
>VERSIONID(`$Id: cpsendmail.html,v 1.2 2002/06/14 18:39:10 freeman Exp $')dnl
>
>LOCAL_CONFIG
>F{COPY}COPY_USERS
>
>LOCAL_RULE_0
># Send mail $={COPY} to copymail mailer

!!! Небольшое изменение здесь
>[оверквотинг удален]
>R$* < @ $+ . > $* $| $={COPY}        $#copymail $@ localhost $: $1 < @ $2 . > $3
>R$* < @ $+ . > $* $| $*            $: $1 <@ $2 . > $3 $| $&f
>R$* < @ $+ . > $* $| <$*>        $: $1 <@ $2 . > $3 $| $4
>R$* < @ $+ . > $* $| $={COPY}        $#copymail $@ localhost $: $1 < @ $2 . > $3
>R$* < @ $+ . > $* $| $*            $: $1 <@ $2 . > $3
>
># Send message to original recipient + additional mailbox: COPYMAIL_MAILBOX
>Mcopymail, P=/usr/sbin/sendmail, F=fmSDFMu, S=0, R=0,
> A=sendmail -N never -C NOCOPY_CONFIG COPYMAIL_MAILBOX $u
>_________________________________________________________________________________


"Sendmail - копирование определенной почты."
Отправлено cYbErLoRd , 11-Апр-08 12:05 
2 Medlar
Мне нужен домен.
Я правильно вас понял, что вместо

R$* < @ $+ . > $*            $: $1 < @ $2 . > $3 $| $1 @ $2
R$* < @ $+ . > $* $| $={COPY}        $#copymail $@ localhost $: $1 < @ $2 . > $3
R$* < @ $+ . > $* $| $*            $: $1 <@ $2 . > $3 $| $&{client_addr}
R$* < @ $+ . > $* $| $={COPY}        $#copymail $@ localhost $: $1 < @ $2 . > $3
R$* < @ $+ . > $* $| $*            $: $1 <@ $2 . > $3 $| $&f
R$* < @ $+ . > $* $| <$*>        $: $1 <@ $2 . > $3 $| $4
R$* < @ $+ . > $* $| $={COPY}        $#copymail $@ localhost $: $1 < @ $2 . > $3
R$* < @ $+ . > $* $| $*            $: $1 <@ $2 . > $3

нужно написать

R$* < @ $+ . > $* $| $={COPY}        $#copymail $@ localhost $: $1 < @ $2 . > $3
R$* < @ $+ . > $* $| $*            $: $1 <@ $2 . > $3 $| $&f
R$* < @ $+ . > $* $| <$*>        $: $1 <@ $2 . > $3 $| $4
R$* < @ $+ . > $* $| $={COPY}        $#copymail $@ localhost $: $1 < @ $2 . > $3
R$* < @ $+ . > $* $| $*            $: $1 <@ $2 . > $3

?


"Sendmail - копирование определенной почты."
Отправлено Medlar , 11-Апр-08 12:01 
В предыд ответе часть строк съелась при постинге.

LOCAL_RULE_0
# Send mail $={COPY} to copymail mailer
Вместо
R$* < @ $+ . > $*            $: $1 < @ $2 . > $3 $| $1 @ $2

Пишем
R$* < @ $+ . > $*            $: $1 < @ $2 . > $3 $|  $2

будут проверяться только домены получателя


Вместо
R$* < @ $+ . > $* $| <$*>        $: $1 <@ $2 . > $3 $| $4

Пишем
R$* < @ $+ . > $* $| <$+@$+>        $: $1 <@ $2 . > $3 $| $5

и отправителя

Но! Есть нюансы. А пока проверьте это.


"Sendmail - копирование определенной почты."
Отправлено cYbErLoRd , 11-Апр-08 12:07 
Понял, сейчас попробую. Спасибо!

"Sendmail - копирование определенной почты."
Отправлено cYbErLoRd , 11-Апр-08 12:32 
В общем когда письмо уходит получателю(to=), то все работает и письма копируются.. А вот когда оно приходит от нужного домена (from=) то нет :(

"Sendmail - копирование определенной почты."
Отправлено Medlar , 11-Апр-08 12:55 
>В общем когда письмо уходит получателю(to=), то все работает и письма копируются..

По домену? С моими исправлениями?

>А вот когда оно приходит от нужного домена (from=) то нет :(

Добавим вывод в лог
обложите сислогом эти строки вот так:
R$*          $: $(syslog syslog:1: $1 $) $1
R$* < @ $+ . > $* $| $*            $: $1 <@ $2 . > $3 $| $&f
R$*          $: $(syslog syslog:2: $1 $) $1
R$* < @ $+ . > $* $| <$+@$+>        $: $1 <@ $2 . > $3 $| $5

пересоберите конфиг, затем вручную вбейте в sendmail.cf строку
Ksyslog syslog
(найдите в начале конфига где-то в его первой пятой части строки начинающиеся с K
и после них добавьте)

рестарт и покажите вывод в лог


"Sendmail - копирование определенной почты."
Отправлено Medlar , 11-Апр-08 12:58 
и может, чтобы не засорять форум, остальное пришлете
на постмастер на анрб  в зоне ру

"Sendmail - копирование определенной почты."
Отправлено cYbErLoRd , 11-Апр-08 13:10 
>По домену? С моими исправлениями?

Да.

>рестарт и покажите вывод в лог

А что именно в логе нужно показать?
Записи с пометкой сислога?
Apr 11 13:02:08 relay sendmail[7024]: m3B923Ea007024: syslog:2:user<@workdomain.com.>\233user2@gmail.com
Apr 11 13:02:15 relay sendmail[7041]: m3B923Ea007024: syslog:2:user<@workdomain.com.>\233user2@gmail.com


"Sendmail - копирование определенной почты."
Отправлено Medlar , 11-Апр-08 13:17 
>Apr 11 13:02:08 relay sendmail[7024]: m3B923Ea007024: syslog:2:user<@workdomain.com.>\233user2@gmail.com
>Apr 11 13:02:15 relay sendmail[7041]: m3B923Ea007024: syslog:2:user<@workdomain.com.>\233user2@gmail.com

egrep m3B923Ea007024: maillog


"Sendmail - копирование определенной почты."
Отправлено cYbErLoRd , 11-Апр-08 13:22 
Apr 11 13:02:08 relay sendmail[7024]: m3B923Ea007024: syslog:1:User1<@workdomain.ru.>\23374.125.46.152
Apr 11 13:02:08 relay sendmail[7024]: m3B923Ea007024: syslog:2:User1<@workdomain.ru.>\233User2@gmail.com
Apr 11 13:02:08 relay sendmail[7024]: m3B923Ea007024: from=<User2@gmail.com>, size=1780, class=0, nrcpts=1, msgid=<81661f8c0804110204s14fea249y2afc3147be54aa91@mail.gmail.com>, proto=ESMTP, daemon=MTA, relay=yw-out-1718.google.com [74.125.46.152]
Apr 11 13:02:15 relay sendmail[7041]: m3B923Ea007024: syslog:1:User1<@workdomain.ru.>\23374.125.46.152
Apr 11 13:02:15 relay sendmail[7041]: m3B923Ea007024: syslog:2:User1<@workdomain.ru.>\233User2@gmail.com
Apr 11 13:02:15 relay sendmail[7041]: m3B923Ea007024: to=<User1@workdomain.ru>, delay=00:00:07, xdelay=00:00:00, mailer=smtp, pri=121780, relay=[10.80.225.7] [10.80.225.7], dsn=2.0.0, stat=Sent ( <81661f8c0804110204s14fea249y2afc3147be54aa91@mail.gmail.com> Queued mail for delivery)

Соотв. gmail.com это домен для мониторинга а workdomain.ru это ящик внутри компании.


"Sendmail - копирование определенной почты."
Отправлено Medlar , 11-Апр-08 13:31 
ага вот это похоже на правду

опечаточка-то в первоисточнике!
добавьте угловые скобки
т.е. вместо $&f
напишите <$&f>

и кажется будет вам счастье ...



"Sendmail - копирование определенной почты."
Отправлено cYbErLoRd , 11-Апр-08 13:54 
Спасибо ща попробую..

"Sendmail - копирование определенной почты."
Отправлено cYbErLoRd , 11-Апр-08 14:01 
Все равно не работает..
Вот новый вывод лога.

Apr 11 13:54:54 relay sendmail[14763]: m3B9sn6C014763: syslog:1:User1<@workdomain.ru.>\23374.125.46.156
Apr 11 13:54:54 relay sendmail[14763]: m3B9sn6C014763: syslog:2:User1<@workdomain.ru.>\233<User2@gmail.com>
Apr 11 13:54:55 relay sendmail[14763]: m3B9sn6C014763: from=<User2@gmail.com>, size=1783, class=0, nrcpts=1, msgid=<81661f8c0804110257l7f918545h5ca8af3059b2d0c2@mail.gmail.com>, proto=ESMTP, daemon=MTA, relay=yw-out-1718.google.com [74.125.46.156]
Apr 11 13:55:01 relay sendmail[14795]: m3B9sn6C014763: syslog:1:User1<@workdomain.ru.>\23374.125.46.156
Apr 11 13:55:01 relay sendmail[14795]: m3B9sn6C014763: syslog:2:User1<@workdomain.ru.>\233<User2@gmail.com>
Apr 11 13:55:01 relay sendmail[14795]: m3B9sn6C014763: to=<User1@workdomain.ru>, delay=00:00:07, xdelay=00:00:00, mailer=copymail, pri=121783, relay=localhost, dsn=2.0.0, stat=Sent


"Sendmail - копирование определенной почты."
Отправлено cYbErLoRd , 11-Апр-08 14:03 
Хм, послал второе письмо и оно скопировалось.. странно.

"Sendmail - копирование определенной почты."
Отправлено cYbErLoRd , 11-Апр-08 14:07 
Не, вроде все работает, послал еще пяток писем.
ОГРОМНОЕ вам спасибо! Вы настоящий гуру сэндмыла! Кстати а не подскажите где можно почитать про логику работы данных "скриптов"?



"Sendmail - копирование определенной почты."
Отправлено Medlar , 11-Апр-08 14:16 
>ОГРОМНОЕ вам спасибо! Вы настоящий гуру сэндмыла!

я не гуру я толкь учусь

>Кстати а не подскажите где
>можно почитать про логику работы данных "скриптов"?

у меня можете посмотреть
http://www.anrb.ru/linux/intro.html
все известные ссылки с объяснениями я там выложила


"Sendmail - копирование определенной почты."
Отправлено Medlar , 11-Апр-08 14:07 
добавьте еще один вывод в лог после строки
R$* < @ $+ . > $* $| <$+@$+>        $: $1 <@ $2 . > $3 $| $5
R$*                                 $: $(syslog syslog:3: $1 $) $1

1. Покажите ваши текущие copyuser-правила
2. Файл copyuser
3. Вывод в лог


"Sendmail - копирование определенной почты."
Отправлено cYbErLoRd , 11-Апр-08 14:23 
Оу, вы еще и девушка! Тогда респект в двойне!

"Sendmail - копирование определенной почты."
Отправлено cYbErLoRd , 14-Апр-08 15:31 
2 Medlar
А можно-ли сделать так, чтобы в файл /etc/mail/copy-users можно было вносить, как домены, так и отдельных пользователей?

"Sendmail - копирование определенной почты."
Отправлено Medlar , 14-Апр-08 18:20 
http://www.anrb.ru/linux/sendmail2.html#17

"Sendmail - копирование определенной почты."
Отправлено cYbErLoRd , 14-Апр-08 19:07 
>http://www.anrb.ru/linux/sendmail2.html#17

Спасибо! Сегодня вечером проверю и отпишусь о работоспособности.


"Sendmail - копирование определенной почты."
Отправлено cYbErLoRd , 14-Апр-08 19:44 
Проверил, все  работает :)
Еще раз спасибо!