Страница 1 из 1

Логи exim4 в MySQL

Добавлено: 2008-02-04 15:28:14
tahirov
Здравствуйте!

По сути у меня задача стоит такая, логи приема/доставок сообщений класть не файл а в базу данных.
Формат примерно следующий
таблица принятых:
eximID сообщения, когда получено, содержание некоторых заголовков письма, откуда, откого
и таблица отправленых:
id, куда, когда, статус отправки

Как писать принятые сообщение уже вроде разобрался

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

LOG=INSERT INTO income_mail (date_time, sender_ip, sender_mail, dest_who, dest_where, promo_id) values (now(), $host_address, $sender_address_domain, $local_part, $domain, $header_promoID)

acl_smtp_rcpt = check_recipient
acl_smtp_data = check_message

check_recipient:
   warn   domains = !+local_domains
           set acl_m3 = 1

check_message:
  warn   condition     = ${if eq{$acl_m3}{1}}
             set acl_m19   = ${lookup mysql{LOG}}
Вот с таблицей отправленных проблема, пока не могу разобраться как это сделать.

Re: Логи exim4 в MySQL

Добавлено: 2008-02-04 16:49:08
dikens3
Я аутентификацию использую для пользователей. Тем самым это и есть отправленные письма.

Re: Логи exim4 в MySQL

Добавлено: 2008-02-04 17:55:12
tahirov
dikens3 писал(а):Я аутентификацию использую для пользователей. Тем самым это и есть отправленные письма.
Привет, dikens3!

Спасибо за оперативный ответ!

Я наверное неправильно выразился.
Мне нужно проследить судьбу сообщения проходящего через exim, получение я залогировал теперь хочу залогировать доставку.
То есть в итоге мне нужно получить что-то типа:
получено в: 2008-02-04 16:00:00
получено от: 192.168.1.50
отправитель: sender@sender.com
получатель: rcpt@rcpt.com
promo_id сообщения: 1234
статус доставки: "не было доставлено так как нет пользователя rcpt в домене rcpt.com"

Re: Логи exim4 в MySQL

Добавлено: 2008-02-04 22:36:45
dikens3
Вот этого не делал, но копать транспорты тебе нужно. Т.к. именно транспорт говорит что письмо доставлено/отложено и т.п.

http://www.lissyara.su/?id=1207#7.4

Добрый Лис использовал вроде эту опцию для обращения к mysql. В какой-то статье проскакивало.

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

 hosts_avoid_esmtp  	 smtp  	 host list†  	 незадана

Re: Логи exim4 в MySQL

Добавлено: 2008-02-05 10:09:02
tahirov
Спасибо за ответ

Прочитал что за hosts_avoid_esmtp
Эта опция - для использования с кривыми хостами, которые объявляют средства ESMTP (например PIPELINING), и, затем, не в состоянии осуществить их должным образом. Когда хост совпадает с “hosts_avoid_esmtp”, exim посылает HELO, а не EHLO, в начале сеанса SMTP. Это означает, что не могут использоваться какие бы то ни было ESMTP средства, типа AUTH, PIPELINING, SIZE, и STARTTLS.
Возможно Лис как-то хитро использовал эту штуку:)


На счет транспорта не уверен так как сообщение может отвалиться например на роуере DNSLOOKUP если в качестве домена указано что-то не хорошее и до транспорта не дойдет

Re: Логи exim4 в MySQL

Добавлено: 2008-02-05 10:23:46
Alex Keda
просто это одна из немногих раскрываемых опций в транспорте =)
в смысле - которые мона заюзать не по назначению =)

Re: Логи exim4 в MySQL

Добавлено: 2008-02-06 11:53:36
tahirov
Уважаемый lissyara!

А можно примерчик?

Re: Логи exim4 в MySQL

Добавлено: 2008-02-06 11:57:40
Alex Keda
чего?
работы?
обычная раскрываемая опция...

Re: Логи exim4 в MySQL

Добавлено: 2008-02-06 12:09:34
tahirov
dikens3 предложил эту опцию как возможное решение моей проблемы.
По описанию опции я не так понял как она может мне помочь так как суть опции
Когда хост совпадает с “hosts_avoid_esmtp”, exim посылает HELO, а не EHLO, в начале сеанса SMTP
Как её можно применить для получение отлупов в базу данных что-то не пойму

Re: Логи exim4 в MySQL

Добавлено: 2008-02-06 12:26:13
dikens3
http://www.lissyara.su/?id=1453

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

# Доставка на удалённые хосты - по SMTP
remote_smtp:
	driver	= smtp
#	headers_add	= "X-Descriptions: powered by www.lissyara.su"
# следующая строка - это внесение в таблицу отправленных писем - грамотней не 
# придумал,поэтому на неё идут варнинги в логах, однако работает :)
	hosts_avoid_esmtp =  ${lookup mysql{INSERT IGNORE INTO `sended_list` \
			(`user_from`, `user_to`, `added_timestamp`, \
			`last_mail_timestamp`, `mail_count`) VALUES \
			(LCASE('${quote_mysql:$sender_address}'), \
			LCASE('${quote_mysql:$local_part@$domain}'), \
			UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), '1') ON DUPLICATE \
			KEY UPDATE `last_mail_timestamp` = UNIX_TIMESTAMP(), \
			`mail_count` = `mail_count` + 1}}

Re: Логи exim4 в MySQL

Добавлено: 2008-02-06 12:29:34
Alex Keda
малость пеергруженный пример, ненаходишь? :)))

Re: Логи exim4 в MySQL

Добавлено: 2008-02-06 12:30:56
Alex Keda
и я бы не подсказывал...
опция редкая, запихав её в поиск по сайту форуму примеры были бы сразу.
если ему это лень сделать - думаю щас продолжатся вопросы по теме
"а как мне под себя поправить" и т.д.