postfixadmin:
добавил алиас-домен для другого домена, в таблице alias_domain появилась соответствующая строкаалиасы для почтовых ящиков (в рамках одного домена) exim смотрит так:
exim.conf
system_aliases:
driver = redirect
allow_fail
allow_defer
data = ${lookup mysql{SELECT `goto` FROM `alias` WHERE \
`address`='${quote_mysql:$local_part@$domain}' OR \
`address`='${quote_mysql:@$domain}'}}
А как настроить exim.conf что-бы он использовал смотрел домены алиасы из таблицы alias_domain?Заранее благодарен за помощь!!!
P.S. CREATE TABLE `alias_domain` (
`alias_domain` varchar(255) NOT NULL,
`target_domain` varchar(255) NOT NULL,
`created` datetime NOT NULL default '0000-00-00 00:00:00',
`modified` datetime NOT NULL default '0000-00-00 00:00:00',
`active` tinyint(1) NOT NULL default '1',
PRIMARY KEY (`alias_domain`),
KEY `active` (`active`),
KEY `target_domain` (`target_domain`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Postfix Admin - Domain Aliases';
Покажи хотя бы одну запись из alias_domain
>Покажи хотя бы одну запись из alias_domainmysql> select * from alias_domain;
+--------------+---------------+---------------------+---------------------+--------+
| alias_domain | target_domain | created | modified | active |
+--------------+---------------+---------------------+---------------------+--------+
| domain1.ru | domian2.ru | 2009-09-30 21:59:31 | 2009-09-30 21:59:31 | 1 |
>[оверквотинг удален]
>mysql> select * from alias_domain;
>+--------------+---------------+---------------------+---------------------+--------+
>| alias_domain | target_domain | created
> | modified
> | active |
>
>+--------------+---------------+---------------------+---------------------+--------+
>| domain1.ru | domian2.ru | 2009-09-30 21:59:31
>| 2009-09-30 21:59:31 | 1 |
>И как запрос
data = ${lookup mysql{SELECT `goto` FROM `alias` WHERE \
`address`='${quote_mysql:$local_part@$domain}' OR \
`address`='${quote_mysql:@$domain}'}}соответствует структуре таблицы?
>И как запрос
>
>data = ${lookup mysql{SELECT `goto` FROM `alias` WHERE \
>
>`address`='${quote_mysql:$local_part@$domain}' OR \
>
> `address`='${quote_mysql:@$domain}'}}
>
>соответствует структуре таблицы?уточняю:
есть две таблицы "alias" и "alias_domain" postfixadmin (Version 2.3rc7 - 2009/07/27 - SVN r691) работает с обеямив таблицу "alias" он заносит записи для прямых псевдонимов в зоне одного домена, например:
+-----------------------+------------------+------------+---------------------+---------------------+--------+
| address | goto | domain | created | modified | active |
+-----------------------+------------------+------------+---------------------+---------------------+--------+
| abuse@domain.ru | admin@domain.ru | domain.ru | 2009-09-26 19:53:28 | 2009-09-26 19:54:38 | 1 |
| hostmaster@domain.ru | admin@domain.ru | domain.ru | 2009-09-26 19:53:28 | 2009-09-26 19:54:58 | 1 |
| postmaster@domain.ru | admin@domain.ru | domain.ru | 2009-09-26 19:53:28 | 2009-09-26 19:55:04 | 1 |в таблицу "alias_domain" он заносит записи для псевдонимов-доменов, например:
+--------------+---------------+---------------------+---------------------+--------+
| alias_domain | target_domain | created | modified | active |
+--------------+---------------+---------------------+---------------------+--------+
| domain2.ru | domain.ru | 2009-09-30 21:59:31 | 2009-09-30 21:59:31 | 1 |
| domain3.ru | domain.ru | 2009-10-04 19:56:14 | 2009-10-04 19:56:14 | 1 |
+--------------+---------------+---------------------+---------------------+--------+цель - модифицировать что-либо, с тем что-бы ходила почта для:
1. алиасов в зоне одного домена
2. ящиков и алиасов, существующих в зоне целевого домена, направленных на такие-же имена в зоне домена-алиаса
>[оверквотинг удален]
>
> allow_fail
> allow_defer
> data = ${lookup mysql{SELECT `goto` FROM `alias` WHERE
>\
>
>`address`='${quote_mysql:$local_part@$domain}' OR \
>
> `address`='${quote_mysql:@$domain}'}}
>Запрос взят похоже из статьи с сайта Лисяры и он у меня тоже не заработал. Алиасы такого типа - @domain.com - > @otherdomain.com.
Изменил запрос на такой , работает, хотя может быть можно сделать лучше (отдельную таблицу не создавал, постфиксадмин со стандартной работает) :data = ${lookup mysql{SELECT IF(`goto` LIKE '@%',CONCAT('${quote_mysql:$local_part}',`goto`),`goto`) FROM `alias` WHERE \ `address`='${quote_mysql:$local_part@$domain}' OR \ `address`='${quote_mysql:@$domain}'}}
>Запрос взят похоже из статьи с сайта Лисяры и он у меня тоже не заработал. Алиасы такого типа - @domain.com - > @otherdomain.com.да, от туда
>Изменил запрос на такой , работает, хотя может быть можно сделать лучше
>(отдельную таблицу не создавал, постфиксадмин со стандартной работает) :я тоже не создавал, при создании алиаса-домена в postfixadmin'а он записывает их в таблицу alias_domain
а алиасы-ящики (в рамках одного домена) пишутся в таблицу alias и имеют вид:
+-----------------------+------------------+------------+--------+
| address | goto | domain | active |
+-----------------------+------------------+------------+--------+
| abuse@domain1.ru | admin@domain1.ru | domain1.ru | 1 |
| hostmaster@domain1.ru | admin@domain1.ru | premial.ru | 1 |
| postmaster@domain2.ru | admin@domain2.ru | domain2.ru | 1 |
| webmaster@domain2.ru | admin@domain2.ru | domain2.ru | 1 |
>
>data = ${lookup mysql{SELECT IF(`goto` LIKE '@%',CONCAT('${quote_mysql:$local_part}',`goto`),`goto`) FROM `alias` WHERE \
> `address`='${quote_mysql:$local_part@$domain}' OR \
>
> `address`='${quote_mysql:@$domain}'}}куда ваш postfixadmin пишет домены-алиасы? покажите наглядно плз.
ваш рецепт пока еще не попробовал, буду разбираться
Спасибо!!!
>[оверквотинг удален]
>
>
>>
>>data = ${lookup mysql{SELECT IF(`goto` LIKE '@%',CONCAT('${quote_mysql:$local_part}',`goto`),`goto`) FROM `alias` WHERE \
>> `address`='${quote_mysql:$local_part@$domain}' OR \
>>
>> `address`='${quote_mysql:@$domain}'}}
>
>куда ваш postfixadmin пишет домены-алиасы? покажите наглядно плз.
>У меня вообще нет таблицы alias_domain. postfixadmin 2.2.0.
Алиас домена такой:
select * from alias where goto like '@%' limit 1;
+---------------+----------+--------------+---------------------+---------------------+--------+
| address | goto | domain | created | modified | active |
+---------------+----------+--------------+---------------------+---------------------+--------+
| @other.domain.com | @domain.com | other.domain.com | 2008-01-01 00:00:00 | 2008-01-01 00:00:00 | 1 |
+---------------+----------+--------------+---------------------+---------------------+--------+
>[оверквотинг удален]
>+---------------+----------+--------------+---------------------+---------------------+--------+
>| address | goto
> | domain |
>created
> | modified
> | active |
>+---------------+----------+--------------+---------------------+---------------------+--------+
>| @other.domain.com | @domain.com | other.domain.com | 2008-01-01 00:00:00 | 2008-01-01 00:00:00
>| 1 |
>+---------------+----------+--------------+---------------------+---------------------+--------+насколько я понимаю при вашем SQL-запросе почта для домена алиаса, в вашем примере @other.domain.com, придет в домен @domain.com даже для несуществующих ящиков и ящиков алиасов в домене @domain.com
например, имеем ящик admin@domain.com и алиас к нему admin2@@domain.com, почта для ящика vasia@other.domain.com свалится в ящик admin@domain.com
я прав?
>[оверквотинг удален]
>>+---------------+----------+--------------+---------------------+---------------------+--------+
>
>насколько я понимаю при вашем SQL-запросе почта для домена алиаса, в вашем
>примере @other.domain.com, придет в домен @domain.com даже для несуществующих ящиков и
>ящиков алиасов в домене @domain.com
>
>например, имеем ящик admin@domain.com и алиас к нему admin2@@domain.com, почта для ящика
>vasia@other.domain.com свалится в ящик admin@domain.com
>
>я прав?Нет
>[оверквотинг удален]
>>насколько я понимаю при вашем SQL-запросе почта для домена алиаса, в вашем
>>примере @other.domain.com, придет в домен @domain.com даже для несуществующих ящиков и
>>ящиков алиасов в домене @domain.com
>>
>>например, имеем ящик admin@domain.com и алиас к нему admin2@@domain.com, почта для ящика
>>vasia@other.domain.com свалится в ящик admin@domain.com
>>
>>я прав?
>
>Нетувы, я прав
я сделал таблицу по аналогии с вашей и заполнил ее следующими значениями:
SELECT * FROM alias;
+------------------------+------------------+------------------+
| address | goto | domain |
+------------------------+------------------+------------------+
| abuse@domain.com | admin@domain.com | domain.com |
| admin@domain.com | admin@domain.com | domain.com |
| @other.domain.com | @domain.com | other.domain.com |
+------------------------+------------------+------------------+и примерил ваш SQL-запрос:
SELECT IF(goto LIKE '@%', CONCAT('$local_part', goto), goto) FROM alias WHERE address='$local_part@$domain' OR address='@$domain';получил следующие выборки:
admin@domain.com -> admin@domain.com (правильно)
abuse@domain.com -> admin@domain.com (правильно)
noexist@domain.com -> '' (правильно)
admin@other.domain.com -> admin@domain.com (правильно)
abuse@other.domain.com -> abuse@domain.com (не правильно, ожидалось admin@domain.com)
noexist@other.domain.com -> noexist@domain.com (не правильно, ожидалось '')
>[оверквотинг удален]
>>>ящиков алиасов в домене @domain.com
>>>
>>>например, имеем ящик admin@domain.com и алиас к нему admin2@@domain.com, почта для ящика
>>>vasia@other.domain.com свалится в ящик admin@domain.com
>>>
>>>я прав?
>>
>>Нет
>
>увы, я правНе прав.
>[оверквотинг удален]
>SELECT IF(goto LIKE '@%', CONCAT('$local_part', goto), goto) FROM alias WHERE address='$local_part@$domain' OR
>address='@$domain';
>
>получил следующие выборки:
>admin@domain.com -> admin@domain.com (правильно)
>abuse@domain.com -> admin@domain.com (правильно)
>noexist@domain.com -> '' (правильно)
>admin@other.domain.com -> admin@domain.com (правильно)
>abuse@other.domain.com -> abuse@domain.com (не правильно, ожидалось admin@domain.com)
>noexist@other.domain.com -> noexist@domain.com (не правильно, ожидалось '')Кем ожидалось? Вы ,наверное, не понимаете как работает редирект. Письмо при данной конфигурации, отправленное на abuse@other.domain.com, будет доставлено admin@domain.com.
>>получил следующие выборки:
>>admin@domain.com -> admin@domain.com (правильно)
>>abuse@domain.com -> admin@domain.com (правильно)
>>noexist@domain.com -> '' (правильно)
>>admin@other.domain.com -> admin@domain.com (правильно)
>>abuse@other.domain.com -> abuse@domain.com (не правильно, ожидалось admin@domain.com)
>>noexist@other.domain.com -> noexist@domain.com (не правильно, ожидалось '')
>
>Кем ожидалось?мной ожидалось, я думал, что здесь exim должен получить вполне определенные данные
>Вы ,наверное, не понимаете как работает редирект.
да, не совсем понимаю
>Письмо при данной конфигурации, отправленное на abuse@other.domain.com, будет доставлено admin@domain.com.
Я так понял - не смотря на то, что он получил от БД abuse@domain.com?
А куда будет доставлено письмо посланное на адрес noexist@other.domain.com (ведь в ответе от БД exim получит noexist@domain.com, а этого ящика/алиаса нет)?
Спасибо!
>[оверквотинг удален]
>>>abuse@domain.com -> admin@domain.com (правильно)
>>>noexist@domain.com -> '' (правильно)
>>>admin@other.domain.com -> admin@domain.com (правильно)
>>>abuse@other.domain.com -> abuse@domain.com (не правильно, ожидалось admin@domain.com)
>>>noexist@other.domain.com -> noexist@domain.com (не правильно, ожидалось '')
>>
>>Кем ожидалось?
>
>мной ожидалось, я думал, что здесь exim должен получить вполне определенные данные
>Exim их получил, решение о транспорте ещё не принято.
>[оверквотинг удален]
>
>да, не совсем понимаю
>
>>Письмо при данной конфигурации, отправленное на abuse@other.domain.com, будет доставлено admin@domain.com.
>
>Я так понял - не смотря на то, что он получил от
>БД abuse@domain.com?
>
>А куда будет доставлено письмо посланное на адрес noexist@other.domain.com (ведь в ответе
>от БД exim получит noexist@domain.com, а этого ящика/алиаса нет)?Unrouteable address
содрал ваш sql, вроде все работает
Спасибо!!!