Страница 1 из 1
exim: включение автоответа письмом пользователя.
Добавлено: 2010-05-07 11:42:10
BlitzKrieg
Собственно тут посмотрел
http://wiki.exim.org/EximAutoReply?high ... utorepl%29
Все ясно все понятно.
Идея такая: пользователь, уходящий в отпуск шлет письмо на некий адрес (самому себе как вариант) к сообщению приатачивает файлик i.e. vacation.msg в котором текст, который вставляется в автоответ. Exim определяет (как вариант из бд что пользователь в отпуске) и отвечает на приходящие на адрес пользователя сообщения вставляя текст из файла в письмо. По возвращении из отпуска пользователь снова шлет письмо (самому себе/на некий адрес) и автоответ выключается. I.e. запись о том, что пользователь в отпуске может быть в бд.
Как это сделать?
Re: exim: включение автоответа письмом пользователя.
Добавлено: 2010-05-07 11:50:38
dikens3
полезные скрипты почитать?
Re: exim: включение автоответа письмом пользователя.
Добавлено: 2010-05-07 12:23:15
BlitzKrieg
Ну коли уж Вы знаете, что ответ на мой вопрос есть в "полезных скриптах", то, возможно, соблаговолите указать конкретно в каком посте, ибо я не нашел ничего достаточного близкого.
Re: exim: включение автоответа письмом пользователя.
Добавлено: 2010-05-07 13:30:19
dikens3
У вас какая проблема?
1. Как создать автоответчик? - полезные скрипты.
2. Как прикрепить файл или сообщение?
http://forum.lissyara.su/viewtopic.php?f=20&t=25603
Re: exim: включение автоответа письмом пользователя.
Добавлено: 2010-05-07 13:59:55
Гость
Идея включать выключать автоответ письмом, содержащим файл с текстом автоответа.
Примерный алгоритм такой:
Пользователь вкладывает файл с текстом автоответа в письмо и отсылает на некий адрес или себе самому.
exim выковыривает из этого письма аттачмент и кладет его скажем в /var/mail/$domain/$local_part.
Далее все согласно faq по приведенной мною выше ссылке.
Т.е. при приходе письма абоненту у которого в /var/mail/$domain/$local_part есть vacation.msg отправляется автоответ с текстом из этого файла.
когда юзер возрвращается из турции он может этот файл-письмо удалить.
Re: exim: включение автоответа письмом пользователя.
Добавлено: 2010-05-07 14:10:56
Гость
Возможно отслыать письмо с неким опознавательным знаком чтобы exim брал из него текст и сувал в mysql а также ставил скажем active из 1 в 0 далее при приеме сообщений он бы проверял совпадение удреса получателя с адресом где active не 1 и при совпадении брал бы текст из mysql.
Вобщем идея - чтобы пользователь сам мог включать выключать автоответ без веб морд и прочей мути.
Re: exim: включение автоответа письмом пользователя.
Добавлено: 2010-05-07 19:50:58
dikens3
Почему нельзя написать нормально один автоответ для всех?
Типа - пользователь временно отсутствует/спит/не читает почту/и т.п. позвоните вчера..
что касается автоматики, то это просто. Создайте некий секретный адрес
XXX@domain.ru и пусть пользователь отправляет письмо по этому адресу.
В вашем случае нужно проверить отправителя и внести изменения в автоответчик при получении письма на этот адрес.
Обратно так же, только проверить включён ли уже автоответ.
Опять же на этапе DATA уже имеется всё письмо и можно забрать его из переменной и внести в mysql.
Re: exim: включение автоответа письмом пользователя.
Добавлено: 2010-05-07 23:17:29
BlitzKrieg
Потому, что в одном автоответе не напишешь когда и у кого отпуск :-)
Т.е. Вы предлагаете помещать все письмо в бд, а при автоответе просто менять адресата?
Переменная message_body c message_body_visible или как-там?
Re: exim: включение автоответа письмом пользователя.
Добавлено: 2010-05-07 23:39:36
Alex Keda
он вам много чего предложил.
перечитайте пост ещё раз
Re: exim: включение автоответа письмом пользователя.
Добавлено: 2010-05-08 0:09:53
dikens3
BlitzKrieg писал(а):Потому, что в одном автоответе не напишешь когда и у кого отпуск :-)
Почему?
К сожалению пользователь сейчас в отпуске. При необходимости свяжитесь с пользователем по его телефону.
Что значит какой пользователь? Тот которому идёт письмо.
BlitzKrieg писал(а):Т.е. Вы предлагаете помещать все письмо в бд, а при автоответе просто менять адресата?
и отвечает на приходящие на адрес пользователя сообщения вставляя текст из файла в письмо.
Идея включать выключать автоответ письмом, содержащим файл с текстом автоответа.
Да это вы предлагаете, я просто показал мысль что можно и с базой работать.
BlitzKrieg писал(а):Переменная message_body c message_body_visible или как-там?
Да.
Re: exim: включение автоответа письмом пользователя.
Добавлено: 2010-05-08 0:11:31
BlitzKrieg
TO:Alex Keda
При всем уважении к вам вы не в тему. Много это ссылки на посты в которых нет ответа на мой вопрос? Из всего писаного подполковником толкьо последний пост дельный но по факту уже запоздалый.
Re: exim: включение автоответа письмом пользователя.
Добавлено: 2010-05-08 0:14:20
BlitzKrieg
Отпуск понятие весьма растяжимое... где-то он 20 дней, а где-то как придется, на заводах предпраздничный день на час короче, наверное, потому, что работы много. :-)
Вы даже не подрзреваете как может поворачиваться ситуация... i.e. пользователь сейчас в италии и телефон какой у него он даже сам не знает пока туда не приедет. Однако же отправить письмо через наш сервер может.
Re: exim: включение автоответа письмом пользователя.
Добавлено: 2010-05-08 9:13:34
Alex Keda
BlitzKrieg писал(а):TO:Alex Keda
При всем уважении к вам вы не в тему. Много это ссылки на посты в которых нет ответа на мой вопрос? Из всего писаного подполковником толкьо последний пост дельный но по факту уже запоздалый.
да я как раз в тему.
просто вы не хотите думать, а хотите готвого решения.
тут вам его не будет. тут только направления выдаются - в которых надо думать.
Дикенс вам их выдал более чем достаточно.
Re: exim: включение автоответа письмом пользователя.
Добавлено: 2010-05-08 13:47:22
BlitzKrieg
Направления думать - это линки на тот же фак тока раком? Я думать люблю просто таки обожаю. Только тут дело не в думать, а в знании возможностей. Я exim настраиваю второй раз в жизни, Вы какой? Код готовый мне не нужен, мне нужно было предложение по реализации исходя из моих требований в проекции на возможности exim. Тем более коли уж даже я указал переменную, то Вам и подполковнику наверняка особого труда не составило бы ее указать. По большому счету в нее все и упиралось.
Сейчас мне видится таким алгоритм, пользователь шлет письмо на некий адрес, по этому событию ехим пихает в базу $message_body и ставит некий флаг что юзер отдыхает, далее при ответе берет тело письма из бд.
Вот если бы Вы мне или подполковник не давали ссылок а просто написали эти строки, уверяю Вас я бы уж нашел в документации как и чего сделать и молился о Вашем и подполковника благополучии и здравии. А так отдает каким-то высокомерием и т.д.

Re: exim: включение автоответа письмом пользователя.
Добавлено: 2010-05-08 13:55:22
dikens3
Решение задачи бывает в 2 этапа.
Первый:
Идея, её словесное обсуждение, возможность реализации и т.п.
На данном этапе никакой точности быть не может, просто набросок.
Второй:
Сама реализация идеи. Тут помощь оказывается при возникновении трудностей. Если никто ничего не сделал, то ни о какой помощи говорить не стоит.
Например вы сообщаете, что хочу блокировать что-то, сделал это, но не работает...
Вот если бы Вы мне или подполковник не давали ссылок а просто написали эти строки
Вы писали про 1-й этап, о возможности или невозможности. Я ответил на вашу просьбу, но вам и пункт 2 реализовать понимаешь надо было. Писать вопросы нужно правильно -
Сделайте за меня вот это, потому что не знаю как, тогда и куча желающих сразу появится.
Я не прав?
Re: exim: включение автоответа письмом пользователя.
Добавлено: 2010-05-08 14:19:40
BlitzKrieg
Конечно правы, Вы ведь старше по званию.
Re: exim: включение автоответа письмом пользователя.
Добавлено: 2010-05-09 13:53:08
Alex Keda
кроме FAQ есть ещё и
дока.
на русском, кстати.
прочтите - 90% вопросов сами отпадут.
========
тока не надо рассказов что она большая и вы ниасилите.
это вам так кажется. она маленькая.
Re: exim: включение автоответа письмом пользователя.
Добавлено: 2010-05-17 16:51:10
BlitzKrieg
Потихоньку делается.
Вот вопрос возник. $message_body по умолчанию 500 символов, messagу_body_visible это понятно. Но как быть когда неизвестно сколько символов?
Т.е. мне нужно все после DATA целиком пихнуть в бд, все ок, но как пихнуть именно все что после DATA а не только все что укладывается в messagу_body_visible
Re: exim: включение автоответа письмом пользователя.
Добавлено: 2010-05-17 19:55:36
BlitzKrieg
Вобщем вопрос такой.
Я сделал следующее: при отправке на адрес
vacation@domain.ru проверяется есть ли в таблице автоответа пользователь, если нет до вносится его адрес, если есть то запись с его адресом вытирается.
При проверке тела письма при наличии записи о пользователе в той таблице добавляется в таблицу $message_body, message_body_newlines=true.
ТАким образом после этого в таблице имею вот что:
Код: Выделить всё
| test@domain.ru | This is a multi-part message in MIME format.
------=_NextPart_000_0116_01CAF601.28694BF0
Content-Type: text/plain;
charset="koi8-r"
Content-Transfer-Encoding: quoted-printable
Privet
------=_NextPart_000_0116_01CAF601.28694BF0
Content-Type: text/html;
charset="koi8-r"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; charset=3Dkoi8-r">
<META content=3D"MSHTML 6.00.2900.2180" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>Privet</FONT></DIV></BODY></HTML>
------=_NextPart_000_0116_01CAF601.28694BF0--
КОгда автоответ включен (т.е. есть запись в указанной таблице) то при написании письма на
test@domain.ru приходит автоответ. В теле все, что в таблице, т.е. это не воспринимается клиентом как служебная информация, а как текст письма.
Что я не так делаю?
Пробовал слать просто письмо и сравнивать с автоответом, разница есть, Не хватает части заголовков и т.д. ПРобовал в таблицу ручками пихать так чтобы наиболее было похоже на простое письмо результат тот же.
Вот письмо, написаное ручками:
Код: Выделить всё
Return-path: <it@domain.ru>
Envelope-to: test@domain.ru
Delivery-date: Mon, 17 May 2010 20:39:48 +0400
Received: from host ([88.111.240.11]:2065 helo=fdjdsakljdafl)
by mail2.domain.ru with smtps (TLSv1:RC4-MD5:128)
(Exim 4.71 (FreeBSD))
(envelope-from <it@domain.ru>)
id 1OE3M4-000ExY-Br
for test@domain.ru; Mon, 17 May 2010 20:39:48 +0400
Message-ID: <011201caf5df$931576d0$0201a8c0@fdjdsakljdafl>
From: <it@domain.ru>
To: <test@domain.ru>
Subject: Privet
Date: Mon, 17 May 2010 20:39:50 +0400
MIME-Version: 1.0
Content-Type: multipart/alternative;
boundary="----=_NextPart_000_010F_01CAF601.18C16C50"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2900.2180
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180
This is a multi-part message in MIME format.
------=_NextPart_000_010F_01CAF601.18C16C50
Content-Type: text/plain;
charset="koi8-r"
Content-Transfer-Encoding: quoted-printable
Privet
------=_NextPart_000_010F_01CAF601.18C16C50
Content-Type: text/html;
charset="koi8-r"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; charset=3Dkoi8-r">
<META content=3D"MSHTML 6.00.2900.2180" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>Privet</FONT></DIV></BODY></HTML>
------=_NextPart_000_010F_01CAF601.18C16C50--
А вот автоответ:
Код: Выделить всё
Return-path: <>
Envelope-to: test@domain.ru
Delivery-date: Mon, 17 May 2010 20:40:22 +0400
Received: from mailnull by mail2.domain.ru with local (Exim 4.71 (FreeBSD))
id 1OE3Mc-000EyI-0k
for test@domain.ru; Mon, 17 May 2010 20:40:22 +0400
Date: Mon, 17 May 2010 20:40:22 +0400
Message-Id: <E1OE3Mc-000EyI-0k@mail2.domain.ru>
From: it@domain.ru
To: test@domain.ru
Subject: Re:
In-Reply-To: <012401caf5df$a6b4f670$0201a8c0@fdjdsakljdafl>
References: <012401caf5df$a6b4f670$0201a8c0@fdjdsakljdafl>
Auto-Submitted: auto-replied
This is a multi-part message in MIME format.
------=_NextPart_000_0116_01CAF601.28694BF0
Content-Type: text/plain;
charset="koi8-r"
Content-Transfer-Encoding: quoted-printable
Privet
------=_NextPart_000_0116_01CAF601.28694BF0
Content-Type: text/html;
charset="koi8-r"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; charset=3Dkoi8-r">
<META content=3D"MSHTML 6.00.2900.2180" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>Privet</FONT></DIV></BODY></HTML>
------=_NextPart_000_0116_01CAF601.28694BF0--
Re: exim: включение автоответа письмом пользователя.
Добавлено: 2010-05-18 9:40:38
BlitzKrieg
Решил пока проблему отправкой письма на
vacation@domain.ru как текст. Тада все ок. На данный момент такой вариант вполне устраивает.
Re: exim: включение автоответа письмом пользователя.
Добавлено: 2010-05-18 20:53:49
BlitzKrieg
Вобщем сделал так:
Ну таблица чот типа такого
Код: Выделить всё
CREATE TABLE holiday(recipient varchar(255), body text default NULL);
Переменная
message_body_visible =65535
message_body_newlines=true
Макросы:
Код: Выделить всё
CHECK_USER=SELECT COUNT(*) FROM holiday WHERE recipient='${quote_mysql:$sender_address}';
INSERT_USER=INSERT INTO holiday(recipient) values ('${quote_mysql:$sender_address}');
DELETE_USER=DELETE FROM holiday WHERE recipient='${quote_mysql:$sender_address}';
ADD_BODY=UPDATE holiday SET body='${quote_mysql:$message_body}' WHERE recipient='${quote_mysql:$sender_address}' AND body IS NULL;
acl_check_rcpt:
Код: Выделить всё
#AUTOREPLAY
warn hosts = +relay_from_hosts
domains = +relay_to_domains
local_parts = vacation
set acl_m5 = ${lookup mysql{CHECK_USER}{$value}{0}}
warn hosts = +relay_from_hosts
domains = +relay_to_domains
local_parts = vacation
condition = ${if == {$acl_m5}{0}{yes}{no}}
set acl_m6 = ${lookup mysql{INSERT_USER}{$value}{0}}
warn hosts = +relay_from_hosts
domains = +relay_to_domains
local_parts = vacation
condition = ${if == {$acl_m5}{1}{yes}{no}}
set acl_m6 = ${lookup mysql{DELETE_USER}{$value}{0}}
acl_check_data:
Код: Выделить всё
warn
hosts = +relay_from_hosts
set acl_m8 = ${lookup mysql{CHECK_USER}{$value}{0}}
warn
hosts = +relay_from_hosts
condition = ${if == {$acl_m8}{1}{yes}{no}}
set acl_m9 = ${lookup mysql{ADD_BODY}{$value}{0}}
routers:
Код: Выделить всё
vacation_autoreply:
driver = accept
condition = ${if eq{} {${lookup mysql{SELECT recipient FROM holiday WHERE recipient='${quote_mysql:$local_part}@${quote_mysql:$domain}'}}}{no}{yes}}
domains = +local_domains
no_expn
no_verify
transport = vacation_autoreply
unseen
transports:
Код: Выделить всё
vacation_autoreply:
driver = autoreply
to = $sender_address
from = "$local_part@$domain"
subject = Re: $h_subject
text = ${lookup mysql{SELECT body FROM holiday WHERE recipient='${quote_mysql:$local_part}@${quote_mysql:$domain}'}{$value}{0}}
Покритикуйте, пожалуйста, что где не так.
Re: exim: включение автоответа письмом пользователя.
Добавлено: 2010-05-19 9:02:28
dikens3
Код: Выделить всё
warn hosts = +relay_from_hosts
domains = +relay_to_domains
local_parts = vacation
set acl_m5 = ${lookup mysql{CHECK_USER}{$value}{0}}
condition = ${if == {$acl_m5}{0}{yes}{no}}
set acl_m6 = ${lookup mysql{INSERT_USER}{$value}{0}}
Аналогично в дата.
Re: exim: включение автоответа письмом пользователя.
Добавлено: 2010-05-19 13:04:38
BlitzKrieg
Спасибо.
Так как я сделал это ошибка или просто некошерно? :-)
Re: exim: включение автоответа письмом пользователя.
Добавлено: 2010-05-19 22:08:00
dikens3
Правильнее и быстрее.
Re: exim: включение автоответа письмом пользователя.
Добавлено: 2010-05-20 8:46:02
BlitzKrieg
Спасибо, значит кошернее:-)