Почитал документацию по exim и захотелось настроить этот прекрасный MTA.
Возникли некоторые проблемы:
Для борьбы со спамом одним из методов применяем delay.
Взято со статьи http://www.lissyara.su/?id=1016
acl_check_rcpt:accept hosts = :
# Задержка приёма письма - как средство борьбы со спамом -
# спамерам некогда ждать по 99 секунд :)
warn
set acl_m0 = 0swarn
hosts = !+relay_from_hosts:!213.234.195.226/32
set acl_m0 = 30swarn
condition = ${if and {\
{match{$sender_host_name}\
{\N^[-a-z]*\d{0,3}[-a-z]*\.?[-a-z]*\d{0,3}[-a-z]*\.\w+$\N}} \
{!eq{$acl_c0}{outblaze_helo}} \
}{yes}{no}}
set acl_m0 = 1swarn
condition = ${if and {\
{match{$sender_helo_name}{\N^\w*\.\w{3}$\N}} \
{eq{$acl_c1}{}} \
}{yes}{no}}
set acl_m0 = 99swarn
condition = ${if and {\
{!match{$sender_host_name}{\N.+.outblaze.com$\N}} \
{eq{$acl_c0}{outblaze_helo}} \
}{yes}{no}}
set acl_m0 = 99swarn
condition = ${if and {\
{!match{$sender_host_name}{\N.+.outblaze.com$\N}} \
{eq{$acl_c2}{outblaze_domain}} \
}{yes}{no}}
set acl_m0 = 99swarn
condition = ${if or {\
{eq{$sender_address}{}} \
{eq{$acl_m1}{0s}} \
} {yes}{no}}
set acl_m0 = 0swarn
logwrite = Delay $acl_m0 for $sender_host_name \
[$sender_host_address] with HELO=$sender_helo_name. \
Mail from $sender_address to $local_part@$domain.
set acl_m1 = 0s
delay = $acl_m0############ ###################
deny local_parts = ^.*[@%!/|] : ^\\.# Приём писем для постмастера локальных доменов без проверок
# accept local_parts = postmaster
# domains = +local_domainsrequire verify = sender
deny message = HELO/EHLO required by SMTP RFC
condition = ${if eq{$sender_helo_name}{}{yes}{no}}deny message = Go Away! You are spammer.
condition = ${if match{$sender_host_name} \
{bezeqint\\.net|net\\.il|dialup|pool|peer|dhcp} \
{yes}{no}}deny message = host is listed in $dnslist_domain
dnslists = sbl.spamhaus.org : \
relays.ordb.org : \
opm.blitzed.org : \
proxies.blackholes.easynet.nlaccept domains = +local_domains
endpass
message = unknown user
verify = recipientaccept domains = +relay_to_domains
endpass
message = unrouteable address
verify = recipientaccept hosts = +relay_from_hosts
accept authenticated = *
deny message = RELAY NOT PERMITTED
А хотелосьбы для некоторых 100% хороших доменов принимать почту без всяких задержек.
типа
domainlist gooddomain = domain1.ru:domain2.ru
accept domains = +gooddomainПри этом хочется пропускать если HELO=domain1.ru
Помогите реализовать это, а то что-то никак не получается
Спасибо.
У меня реализовано следующим образом:
hostlist white_list = /usr/local/etc/exim/white_list##acl
warn hosts = +white_hosts
set acl_m0 = 0warn ......... <Проверка на других acl>
set acl_c1 = <значение>deny condition = ${if and { {>{$acl_с1}{<значение>}}{!={$acl_m0}{0}} } {true}}
log_message = ...
message = ...принцип думаю ясен.
Спасибо за совет
Идею понял - подправил и заработало.
Возникла ещё одна проблема с courier-imap-pop3d
Не могу принять почту по поп3
Аутентификация проходит
-ERR chdir Maildir failed
База пользователей находится в mysql
Есть поля home и id
exim кладёт почту в CONCAT(`home`,`id`,'Maildir')
тут проблем нет - письма там
в authmysqlrc
...
MYSQL_MAILDIR_FIELD CONCAT(`home`,`id`)
...pop3d
MAILDIRPATH=MaildirЧто тут не так?
Есть в системе такойже пользователь и если Maildir перенести в его домашний каталог - всё работает.
Как научить pop3d искать почту в каталогах CONCAT(`home`,`id`)?
>Возникла ещё одна проблема с courier-imap-pop3d
>Не могу принять почту по поп3
>Аутентификация проходит
>-ERR chdir Maildir failed
>База пользователей находится в mysql
>Есть поля home и id
>exim кладёт почту в CONCAT(`home`,`id`,'Maildir')
>тут проблем нет - письма там
>в authmysqlrc
>...
>MYSQL_MAILDIR_FIELD CONCAT(`home`,`id`)
>...
>
>pop3d
>MAILDIRPATH=Maildir
>
>Что тут не так?
>Есть в системе такойже пользователь и если Maildir перенести в его домашний
>каталог - всё работает.
>Как научить pop3d искать почту в каталогах CONCAT(`home`,`id`)?
покажи authmysqlrc и запись из mysql для какого-нибудь пользователя, где указывается путь к его ящику.
MYSQL_SERVER localhost
MYSQL_USERNAME exim
MYSQL_PASSWORD exim
MYSQL_PORT 3306
MYSQL_DATABASE exim
MYSQL_USER_TABLE users
MYSQL_CLEAR_PWFIELD passwd
MYSQL_UID_FIELD uid
MYSQL_GID_FIELD gid
MYSQL_LOGIN_FIELD id
MYSQL_NAME_FIELD full_name
MYSQL_MAILDIR_FIELD CONCAT(`home`,`id`)
DEFAULT_DOMAIN mydomen.netТаблица users в базе данных exim
id full_name passwd uid gid home active
user@mydomen.net User passwd 26 26 /mail/exim/ Y
И ещё вопрос
на одном из серверов крутится сендмаил, хочу заменит ьна exim, но чтоб база осталась старой. Там вся почта хранится для каждого пользователя в файле с именем пользователя и правами пользователя в папке /usr/home/mail
Как эксиму сказать тоже новые письма дописывать в этот файл?local_delivery:
driver = appendfile
group = mail
mode = 0660
mode_fail_narrower = false
envelope_to_add = true
return_path_add = true
directory = /usr/home/mail/по воттакой схеме для каждого письма создаётся отдельный файл со странным именем
>И ещё вопрос
>на одном из серверов крутится сендмаил, хочу заменит ьна exim, но чтоб
>база осталась старой. Там вся почта хранится для каждого пользователя в
>файле с именем пользователя и правами пользователя в папке /usr/home/mail
>Как эксиму сказать тоже новые письма дописывать в этот файл?
>
>local_delivery:
> driver = appendfile
> group = mail
> mode = 0660
> mode_fail_narrower = false
> envelope_to_add = true
> return_path_add = true
> directory = /usr/home/mail/
>
>по воттакой схеме для каждого письма создаётся отдельный файл со странным именем
>а если так?
local_delivery:
driver = appendfile
file = /usr/home/mail/$local_part
delivery_date_add
envelope_to_add
return_path_add
group = mail
user = $local_part
mode = 0660
no_mode_fail_narrower
Заработало!
Огромное спасибо.
А по вопросу с courier-imap не могли бы помочь? (Вопрос задан выше)
Почему он не хочет искать почту в указанной MAILDIR?
Простите за наглость и ещё вопрос
При помощи Exim можно задать размер почтового ящика?
Сейчас сделано квотами на уровне файловой системы, есть неудобства.
>Простите за наглость и ещё вопрос
>При помощи Exim можно задать размер почтового ящика?
>Сейчас сделано квотами на уровне файловой системы, есть неудобства.
то что надо
спасибо
>Заработало!
>Огромное спасибо.
>А по вопросу с courier-imap не могли бы помочь? (Вопрос задан выше)
>
>Почему он не хочет искать почту в указанной MAILDIR?
Посмотри все таки лог mysql, что он возращает в результате запроса