Нужна помощь зала как никогда.
Итак, задача состоит в следующем:
Нужно организовать переадресацию с ящика пользовтаеля нескольким получателям с возможностью копирования писем на изначальные ящики (которые идут в загловках письма).
Тут я буду описывать три способа
Способ первый.
Задачу шал следющим образом:
1.Создал таблицу в mysql:
Код: Выделить всё
+--------+-------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+-------------------+-----------------------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| adress | varchar(40) | NO | | NULL | |
| goto | varchar(40) | NO | | NULL | |
| copy | tinyint(1) | NO | | 0 | |
| date | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+--------+-------------+------+-----+-------------------+-----------------------------+Код: Выделить всё
if $recipients is "${lookup mysql{SELECT adress FROM `forward` WHERE \
adress='$recipients' AND `copy`=1 LIMIT 0,1}}"
then
unseen deliver "${lookup mysql{SELECT `goto` FROM `forward` WHERE \
adress='$recipients' LIMIT 0,1}}"
endif
if $recipients is "${lookup mysql{SELECT adress FROM `forward` WHERE \
adress='$recipients' AND `copy`=0 LIMIT 0,1}}"
then
deliver "${lookup mysql{SELECT `goto` FROM `forward` WHERE \
adress='$recipients' LIMIT 0,1}}"
endif
Способ второй.
Немного подумав, я решил сделать по другому свой системный фильтр:
Код: Выделить всё
if $recipients is "${lookup mysql{SELECT '$recipients' FROM `forward` WHERE \
FIND_IN_SET(`adress`,'$recipients') AND `copy`=0 LIMIT 0,1}}"
then
#для адресов, с которых есть переадресация
mail from $header_from subject $header_subject text $message_body to
"${lookup mysql{SELECT group_concat(`goto`) FROM `forward` WHERE \
FIND_IN_SET(`adress`,replace('$recipients',' ','')) }}" extra_headers "Content-Type:$header_content-type\nContent-Transfer-Encoding: 8bit"
#для адресов, с которых нет переадресации
mail from $header_from subject $header_subject text $message_body to
"${lookup mysql{SELECT group_concat(`username`) FROM `mailbox` WHERE \
username not in (select adress from forward) and FIND_IN_SET(`username`,replace('$recipients',' ','')) }}" extra_headers "Content Type:$header_content-type\nContent-Transfer-Encoding: 8bit"
endif
Способ третий.
Поматерившись, решил сделать по - другому:
Код: Выделить всё
if foranyaddress "$recipients" ( $thisaddress is "${lookup mysql{SELECT adress FROM `forward` WHERE adress='$thisaddress'}}" )
then deliver "${lookup mysql{SELECT goto FROM `forward` WHERE adress='$thisaddress' }}"
else
deliver $thisaddress
endifЯ уже выбился из сил и решил попросить помощь Зала, ибо уже не вмоготу.
