Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

» FAQ по Exim MTA

Автор: tigerBy
Дата сообщения: 09.12.2004 14:57
А вот такое изза чего может быть?

exim -bt postmaster
LOG: MAIN
remote host address is the local host: domain.org (while routing <postmaster@domain.org>)
postmaster@domain.org cannot be resolved at this time:
remote host address is the local host
Автор: PashaG
Дата сообщения: 29.12.2004 10:08
Доброго времени суток!!!

Подскажите глупому юзеру как к Exim 4.xx (4.43) подключить фильтр для проверки ВСЕЙ входящей и исходящей почты (сами фильтры уже готовы), а то при переходе с Exim 3.xx возникают некоторые затруднения, да и в языках я не силён (руководство с сайта на нерусском языке не совсем понятно). А фильтрация жизненно необходима. Заранее огромное спасибо!
Автор: htr
Дата сообщения: 08.01.2005 12:19
ginger

Подскажи пожалуйста а можно сделать так:
есть полльзователи, они заходят на сервер по SSH, мне нужно чтобы в их директории
/home/user1
/home/user2
был каталог /Maildir
здесь возникает вопрос с правами доступа, у Exim'a свои группа и юзер, соответственно у директорий, а пользователей свои, включать пользователей в группу mail не хочется, т.к. они смогут друг у друга почту смотреть.
Могу ли я сделать так что бы катологи /Maildir имели ту же группу и пользователя что и сам юзер
Автор: ginger
Дата сообщения: 12.01.2005 09:51
htr
Каталог /Maildir, нужно поместить в /etc/skel с правами 700, тогда при каждом создании нового пользователя в его домашнем каталоге будет папка /Maildir, прочесть почту данного пользователя кроме его самого никто не сможет.
Автор: c0r0ner
Дата сообщения: 18.01.2005 14:46
Как в exim настоить ACL для того, чтобы для нкоторых ящиков, или для некоторых отправителей не производилась проверка отправителя, а тописьма от некоторых отправители(у которых используется SMTP авторизация) сразу отправлятся в rejected
Автор: kstanislav
Дата сообщения: 23.01.2005 13:27
Неподскажите как сделать пересылку всей почты определенного домена на определенный ящик?
Автор: xirurg2k
Дата сообщения: 29.01.2005 23:30
Уважаемый, ginger!!!
Во первых спасбо за описание и проделанную Тоюой титаническую работу.

Теперь о проблеме. Все сделал как написано.
exim почту отсылает. далее все валится нормально в ящик "/home/vmail/domains/xirurg.org"
в нем папка Maildir/new/...сообщение. Все вроде окей.
Далее telnet localhost 110 или telnet xirurg.org 110
и вот такая петрушка:
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
+OK <d48c36d996bc4c61630ca3be837bf1ae@XIRURG>
user xirurg@xirurg.org
+OK Tell me your password.
pass my-secret-pass
+OK Welcome aboard! You have exactly one message.
list
+OK Scan list follows:
1 282
.
retr 1
-ERR Can't send that message; it may have been deleted by a concurrent session

В логах:
tpop3d[17570]: listeners_post_select: client [6]127.0.0.1/XIRURG: connected to local address 127.0.0.1:110
tpop3d[17570]: authcontext_new_user_pass: began session for `xirurg@xirurg.org' with mysql; uid 8, gid 12
tpop3d[18046]: maildir_new: scanned maildir /home/vmail/domains/xirurg.org/xirurg/Maildir (1 messages) in 0.000s
tpop3d[17570]: fork_child: [6]xirurg@xirurg.org(127.0.0.1): began session for `xirurg@xirurg.org' with mysql; child PID is 18046
tpop3d[18046]: maildir_open_message_file: new/1107028819.H553187P18043.smtp.xirurg.org,S=283: can't find message
tpop3d[18046]: maildir_sendmessage: unable to send message 1
tpop3d[18046]: net_loop: timed out client [6]xirurg@xirurg.org(127.0.0.1)
tpop3d[18046]: connections_post_select: client [6]xirurg@xirurg.org(127.0.0.1): finished session for `xirurg@xirurg.org' with mysql
tpop3d[18046]: connections_post_select: client [6]xirurg@xirurg.org(127.0.0.1): disconnected; 59/315 bytes read/written

В чем грабли? Помоги плиз..
Еще раз спасибо.
С Уважением, Александр
Автор: ginger
Дата сообщения: 03.02.2005 12:07
xirurg2k
Проблема может быть с правами на /Maildir/* попробуйте покопаться с этим.
Автор: Markes
Дата сообщения: 04.02.2005 14:03
ginger
В конфиг exim добавил следующую строку:
system_filter = /usr/local/exim/senderbadlist
Далее:
deny message = SPAM !!! rejected, $sender is in a black list
senders = /usr/local/exim/senderbadlist

senderbadlist имеет такой вид:
# Exim senderbadlist
cso# cat /usr/local/exim/senderbadlist |tail
test@test.ru
cso#

Шлю тестовое мыло c test@test.ru и с других адресов. Не получаю вообще ничего, т.е. блокировка работает неправильно: почему-то не приходит почта и с адресов, которых нет в sendeblacklist.

И ещё: я так понимаю, что "message = SPAM !!! rejected, $sender is in a black list" означает, что в ответ на письмо с этого адреса придёт ответ с текстом, который справа от "=". Я прав?
Автор: UNKNOWING
Дата сообщения: 04.02.2005 23:25
Markes

Нет. Во время СМТП сессии ексим выдаст клиенту 5хх ошибку которая будет в виде
"5ХХ SPAM !!! rejected, user@yourdomain.ru is in a black list"

И не хочу разбираться на ночь глядя - но чтобы ексим делал лукап в файле нужно нечто больше чем:

system_filter = /usr/local/exim/senderbadlist
Автор: hoochie
Дата сообщения: 14.02.2005 09:22
Переполнение буфера в функциях host_aton() и spa_base64_to_bits() в Exim 4.43 и более ранних версиях
Опасность: Высокая
Наличие эксплоита: Да
Описание: Две уязвимости обнаружены в Exim. Локальный пользователь может получить поднятые привилегии на системе.
http://www.exim.org/mail-archives/exim-announce/2005/msg00000.html
Переполнение буфера обнаружено в функции host_aton(). Локальный пользователь может представить неправильный IPv6 адрес с более чем 8 компонентами через командную строку, чтобы эксплуатировать обнаруженную уязвимость. В результате возможно выполнение произвольного кода с привилегиями Exim процесса.
Также переполнение буфера обнаружено в функции spa_base64_to_bits(), используемой для SPA аутентификации. Воздействие не раскрывается.
Решение:Установите исправление для последнего релиза или сам последний релиз 4.44, в котором баг пофиксен.
ftp://ftp.csx.cam.ac.uk/pub/software/email/exim/Testing/exim-snapshot.tar.gz
ftp://ftp.csx.cam.ac.uk/pub/software/email/exim/Testing/exim-snapshot.tar.gz.sig
Автор: hoochie
Дата сообщения: 16.02.2005 17:33
Проблема c установкой Exiscan exiscan-acl-4.44-28.patch.
Скачал, в директорию, где распакован последний Exim /var/tmp/exim-4.44.
Дальше следую инструкции по инсталляции:
patch -p1 < /path/to/exiscan-acl-4.14-28.patch
а он начинает выдавать вот такую ерунду:
Hmm… The next patch looks like a unified diff to me…
The next line leading up to this was:
| diff –urN exim-4.44-orig/OS/Makefile-Base exim-4.44/OS/Makefile-Base
|--- exim-4.44-orig/OS/Makefile-BaseTue Jan 11 13:54:54 2005
|+++ exim-4.44/OS/Makefile-BaseFri Jan 14 20:35:02 2005
File to patch:

Я ему указываю путь к exim
/var/tmp/exim-4.44/OS/Makefile-Base
он патчит нужный файл и дальше все по новой - спрашивает тоже самое про следующий файл и т.п.
Я во-первых, запарился его тыкать мордой каждый раз в нужное место.
Во-вторых, чую, что это не правильно и потом может вылиться в неправильную работу Exim.
Я предполагаю, что это из-за разницы в дате файлов и патч ждет более свежих файлов, чем те, которые в дистрибутиве Exim. Но ведь я только что его скачал, новее быть не может. Что это может быть и как поступить?
Автор: ginger
Дата сообщения: 21.02.2005 09:30
Вы ошиблись в имени патча!
>>>>>>>>>>>patch -p1 < /path/to/exiscan-acl-4.14-28.patch
Вам нужен exiscan-acl-4.44-28.patch

Добавлено:
Если это "опечатка", то поиграйтесь с ключами patch, возможно ключ "-p1" нужно опустить.
Автор: hoochie
Дата сообщения: 21.02.2005 14:31
Опечатка, пардон за невнимательность... Конечно же 4.44-28.
Пробовал и без ключа, и с p2, 3, 4 - все одно, то же самое. Но пропатчил все ОК. Вот думаю собирать или нет... Да, ОС - FreeBSD - 4.10.
А кто-нибудь ставил из портов? Exim-4.44+28 - это уже пропатченный exim c exiscan 4.44-28?
Автор: Pleshkov
Дата сообщения: 22.02.2005 21:50
Если кому надо, скоро (наверное завтра) выложу архив со скриптами (web-интерфейс) для конфигурирования доменов и пользователей.
Автор: hoochie
Дата сообщения: 24.02.2005 18:48
Вопрос по поводу патча снят. Перекачал заново. Все нормально стало и скомпилилось. Спасибо за помощь.
Автор: ginger
Дата сообщения: 28.02.2005 09:12
Pleshkov

Цитата:
сли кому надо, скоро (наверное завтра) выложу архив со скриптами (web-интерфейс) для конфигурирования доменов и пользователей.

Была бы признательна.
Автор: tigerBy
Дата сообщения: 02.03.2005 08:36
А вот такой вопрос.. может кто знает:

echo -n ginger@example.ru |mmencode -b
Z2luZ2VyQGV4YW1wbGUucnU=

echo -n my-secret-pass | mmencode -b
bXktc2VjcmV0LXBhc3M=

тут все как в описании, а вот тут...
printf 'ginger@example.ru\0ginger@example.ru\0my-secret-pass' | mmencode -b
Z2luZ2VyQGV4YW1wbGUucnU=
совсем не как в описании, т.е почему то дальше ginger@example.ru не проходит дело.

Система: freeBSD 5.3-release, openssl 0.9.7d_1, mmencode 2.7
Автор: hoochie
Дата сообщения: 05.03.2005 14:16
Exim обновился до 4.50.
Хорошие новости. Начиная с этой версии, патч exiscan полностью включен в дистрибутив. Подробности...
Автор: Markes
Дата сообщения: 05.03.2005 20:09
Может кто-нибудь ответит на вопрос, заданный мною на 4-ой стр. в 14:03 04-02-2005?
ginger
Не хотели бы вы написан FAQ о прикрутке Spamassassin к Exim? У вас хорошо получается. Уж очень хочется победить спам.
Автор: Perezz
Дата сообщения: 05.03.2005 22:39
tpop3d выдает ошибку при получении почты:


/*/var/log/maillog*/
Mar 5 22:20:13 ns2 tpop3d[533]: listeners_post_select: client [6]192.168.10.117/ns2.h20.ru: connected to local address 192.168.10.217:110
Mar 5 22:20:14 ns2 tpop3d[533]: authcontext_new_user_pass: began session for `name@test.ru' with mysql; uid 1004, gid 6
Mar 5 22:20:14 ns2 tpop3d[533]: fork_child: [6]name@test.ru(192.168.10.117): began session for `name@test.ru' with mysql; child PID is 1167
Mar 5 22:20:14 ns2 tpop3d[1167]: maildir_build_index: opendir(new): No such file or directory
Mar 5 22:20:14 ns2 tpop3d[1167]: connections_post_select: client [6]name@test.ru(192.168.10.117): finished session for `name@test.ru' with mysql
Mar 5 22:20:14 ns2 tpop3d[1167]: connections_post_select: client [6]name@test.ru(192.168.10.117): disconnected; 34/157 bytes read/written

/*telnet 127.0.0.1 110*/
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
telnet: Unable to connect to remote host
ns2# telnet 127.0.0.1 110
Trying 127.0.0.1...
Connected to localhost.test.ru.
Escape character is '^]'.
+OK <686c26ec3d78f24590feef7bdfbe884e@ns2.test.ru>
user name@test.ru
+OK Tell me your password.
pass mytest
-ERR Unable to open mailbox; it may be locked by another concurrent session.
Connection closed by foreign host.

В клиенте (The Bat) прописано,- логин: name@test.ru пароль: mytest
Аутентификация обычная


Есть подозрение что это как-то связано с директориями где лежит почта =)

/*tpop3d.conf*/

listen-address: 0.0.0.0
max-children: 1024
log-facility: mail
log-bad-passwords: yes
auth-mysql-enable: yes
auth-mysql-mail-group: mail
auth-mysql-hostname: localhost
auth-mysql-database: exim
auth-mysql-username: sqlmail
auth-mysql-password: mypass
auth-mysql-pass-query: SELECT CONCAT(home, '/Maildir'), CONCAT('{crypt}',crypt),'mail','maildir' FROM users WHERE id = '$(local_part)' AND mbox_host = '$(domain)' AND active = 'Y'



/*Директории почты*/
/home/vmail/domains/test.ru/test



/*Вот что пишет телнет сессия*/
Trying 127.0.0.1...
Connected to localhost.test.ru.
Escape character is '^]'.
+OK <8379767be0d1bb7c119b7a5b5b9ccf8d@ns2.h20.ru>
user name
+OK Tell me your password.
pass mypass
-ERR Lies! Try again!
user name@test.ru
+OK Tell me your password.
pass mypass
-ERR Unable to open mailbox; it may be locked by another concurrent session.
Connection closed by foreign host.


/*права*/
exim собирался user=mail group=mail
exim работает под пользователем mail
tpop3d - под root


Если стереть Maildir, то все проходит.
А если отправить пользователю почту, то облом =(
Автор: ginger
Дата сообщения: 07.03.2005 10:36
Perezz
Начнем с того что вам следовало бы повнимательнее прочесть мою статью, где мною указаны соответсвующие права на каталоги хранения почты.
Создание ящика нового пользователя осуществляется во время доставки ему почты, Exim сам создает каталоги с нужными правами.
Tpop3d и Exim осуществляют доступ к почтовому каталогу исключительно с правами пользователя "Mail". Ну и по поводу авторизации, в статье так же все написано, как это делается

Удачи!
Автор: Perezz
Дата сообщения: 07.03.2005 10:46
Разобрался.
Авторизация тут непричем.
/*Жизнь сисадмина скушна и уныла, пока не приходят они - кривые ручки*/

Почему-то были закомментированы опции в exim.conf
Наверное я сошел с ума...

# maildir_format
# maildir_tag = ,S=$message_size


Спасибо за ответ


Автор: ginger
Дата сообщения: 07.03.2005 11:16
Markes

Цитата:
Может кто-нибудь ответит на вопрос, заданный мною на 4-ой стр. в 14:03 04-02-2005?
ginger
Не хотели бы вы написан FAQ о прикрутке Spamassassin к Exim? У вас хорошо получается. Уж очень хочется победить спам.

На самом деле, тут ничего сложного нет, как говорилось выше, существует патч exiscan-acl, который добавляет новые возможности, в том числе использование SA, а так же практически любой антивирусной программы во время smtp-сессии...
Так же есть проект SA-Exim, в нем реализована технология Greylisting.

Удачи

P.S. Имеется более интересная измененная конфигурация почтового сервера, надеюсь в скором времени поделиться ею с вами.
Автор: Markes
Дата сообщения: 07.03.2005 12:04
ginger
Понимаю, что ничего сложного. Но у меня пока ничего не получилось.

Цитата:
патч exiscan-acl

Ознакомлюсь.
Автор: Markes
Дата сообщения: 09.03.2005 09:18
Имеется установленный и рабочий exim. При установке exiscan-acl добавятся (в том числе) новые закомментированный строки в конфиг exim, с которыми потом можно будет работать. Я правильно понял суть патча? Т.е. не "покривит" патч уже рабочий exim?
Автор: ginger
Дата сообщения: 09.03.2005 14:22
Markes
Начиная с версии 4.50 в Exim интегрирован exiscan-acl патч.
Информация об этом доступна здесь:
http://duncanthrax.net/exiscan-acl/

И так, предлагаю вашему вниманию улучшенный вариант интеграции Exim+mySQL.
За основу файла конфигурации exim.conf мною был взят вариант предлагаемый автором SA-Exim.
http://marc.merlins.org/linux/exim/files/exim4-debconf/

[more=### exim.conf ###]### exim.conf ###
######################################################################
# MAIN CONFIGURATION SETTINGS #
######################################################################

MAILNAME = smtp.example.ru
MAINDOMAIN = example.ru

hide mysql_servers = localhost/exim/sqlmail/my_password

#SMARTHOST_ROUTELIST =

#CERTNAME = /etc/exim/certs/smtp.pem

# Enable teergrubing on acl errors and say how long we delay (unset to disable).
TEERGRUBE = 60s

timezone = Europe/Moscow

ALLOWEDRCPTFAIL = 3
HOSTREJECTRCPT1 = SELECT message FROM blacklists WHERE address='${sender_host_address}' AND type='REJRCPT'
RFC1918 = 172.16.0.0/12 : 192.168.0.0/16
BOGUSIPS = 127.0.0.1/8 : 169.254.0.0/16 : 192.0.2.0/24 : RFC1918
NO_RANDOM_CALLBACK = SELECT domain FROM callbackdomains WHERE domain='${domain:$header_from:}' AND type='NORND'
HDR_DOMAIN_DISABLE_CALLBACK = SELECT domain FROM callbackdomains WHERE domain='${domain:$header_from:}' AND type='NOHDR'
BLOCKENVSEND1 = SELECT message FROM blacklists WHERE address='${sender_address}' AND type='SENDER'
addresslist denyenvsenders = mysql;BLOCKENVSEND1

.ifdef MAILNAME
primary_hostname = MAILNAME
qualify_domain = MAINDOMAIN
.else
MAILNAME = @
.endif

domainlist local_domains = @ : @[] : localhost : MAILNAME : \
${lookup mysql{SELECT domain FROM domains \
WHERE domain='${domain}' AND (type='LOCAL' OR type='VIRTUAL')}}

domainlist relay_to_domains = ${lookup mysql{SELECT domain FROM domains \
WHERE domain='${domain}' AND type='RELAY'}}

domainlist envdomain_disable_callback = ${lookup mysql{SELECT domain \
FROM callbackdomains WHERE domain='${sender_host_name}' \
AND type='NOENV'}}

domainlist domains_callback_norandom = mysql;NO_RANDOM_CALLBACK

domainlist nodnsdomains = ${lookup mysql{SELECT domain FROM \
callbackdomains WHERE domain='${sender_host_name}' AND type='NODNS'}}

localpartlist noenvfromcheck = ${lookup mysql{SELECT address FROM whitelist}}
localpartlist noenvfromcallback = ${lookup mysql{SELECT address FROM whitelist}}
localpartlist nosarej = ${lookup mysql{SELECT address FROM whitelist}}
localpartlist nohdrsyncheck = ${lookup mysql{SELECT address FROM whitelist}}
localpartlist nohdrfromcallback = ${lookup mysql{SELECT address FROM whitelist}}

hostlist rfc1918 = RFC1918
hostlist bogusips = BOGUSIPS

hostlist localadds = +rfc1918 : @ : @[] : localhost : \
${lookup mysql{SELECT domain FROM domains \
WHERE domain='${domain}' AND (type='LOCAL' OR type='VIRTUAL')}}

hostlist host_reject = ${lookup mysql{SELECT address FROM blacklists \
WHERE address='${sender_host_address}' AND type='HOSTREJ'}}

hostlist host_reject_rcpt = net-mysql;HOSTREJECTRCPT1

hostlist hosts_disable_callback = ${lookup mysql{SELECT hostname FROM \
hostlists WHERE hostname='${sender_host_address}' AND type='NOCALL'}}

hostlist relay_from_hosts = +localadds : ${lookup mysql{SELECT domain \
FROM domains WHERE domain='${domain}' AND type='RELAY'}}

hostlist auth_relay_hosts = *
.ifdef CERTNAME
hostlist auth_over_tls_hosts = *
.endif
hostlist expn_hosts = *.MAINDOMAIN:localhost
hostlist vrfy_hosts = *.MAINDOMAIN:localhost

hostlist hosts_avoid_tls = ${lookup mysql{SELECT hostname FROM hostlists \
WHERE hostname='${sender_host_address}' AND type='AVOIDTLS'}}

hostlist hosts_try_auth = ${lookup mysql{SELECT hostname FROM hostlists \
WHERE hostname='${sender_host_address}' AND type='TRYAUTH'}}

acl_smtp_connect = check_connect
acl_smtp_starttls = check_tls
acl_smtp_mail = check_mail
acl_smtp_rcpt = check_rcpt
acl_smtp_mime = check_mime
acl_smtp_data = check_data
acl_smtp_auth = check_auth
acl_smtp_vrfy = check_vrfy
acl_not_smtp = check_nonsmtp

#local_scan_path = /usr/lib/sa-exim.so
#av_scanner = clamd:/var/lib/clamav/clamd.socket

log_selector = \
+address_rewrite \
+all_parents \
+arguments \
+connection_reject \
+delay_delivery \
+delivery_size \
+dnslist_defer \
+incoming_interface \
+incoming_port \
+lost_incoming_connection \
+queue_run \
+received_sender \
+received_recipients \
+retry_defer \
+sender_on_delivery \
+size_reject \
+skip_delivery \
+smtp_confirmation \
+smtp_connection \
+smtp_protocol_error \
+smtp_syntax_error \
+subject \
+tls_cipher \
+tls_peerdn

system_filter = /etc/exim/system-filter
system_filter_file_transport = address_file
system_filter_pipe_transport = address_pipe

.ifdef CERTNAME
tls_certificate = CERTNAME
tls_privatekey = CERTNAME
tls_advertise_hosts = ${if exists {CERTNAME}{*}{127.0.0.1/8}}
.endif

allow_domain_literals = false
never_users = root:daemon:bin:sync
host_lookup = *
helo_allow_chars = _
trusted_users = mail:www
trusted_groups = mail
rfc1413_hosts = !*
rfc1413_query_timeout = 0s
auth_advertise_hosts = !+relay_from_hosts : +auth_relay_hosts
helo_verify_hosts = !*
helo_try_verify_hosts = !*
helo_accept_junk_hosts = !*
smtp_accept_max_nonmail_hosts = *
ignore_bounce_errors_after = 30m
timeout_frozen_after = 3d
#gecos_pattern = ^([^,:]*)
#gecos_name = $1
freeze_tell = postmaster
auto_thaw = 1h
message_body_visible = 5000
message_size_limit = 20M
smtp_accept_max = 50
smtp_accept_max_per_connection = 50
smtp_accept_queue_per_connection = 100
smtp_connect_backlog = 50
smtp_accept_max_per_host = 25
split_spool_directory = true
syslog_timestamp = false
message_logs = false
remote_max_parallel = 15
smtp_reserve_hosts = +relay_from_hosts
smtp_load_reserve = 40
smtp_accept_max_nonmail = 7
smtp_max_unknown_commands = 1
sender_unqualified_hosts = +localadds
recipient_unqualified_hosts = +localadds
host_reject_connection = +host_reject

######################################################################
# ACL CONFIGURATION #
# Specifies access control lists for incoming SMTP mail #
######################################################################

begin acl

check_connect:
accept

.ifdef CERTNAME
check_tls:
accept
.endif

check_mail:
accept

check_rcpt:

accept hosts = :

accept hosts = 127.0.0.1/8

deny local_parts = ^.*[@%!/|] : ^\\.

warn message = X-WhitelistedRCPT-nohdrsyncheck: Yes
local_parts = +nohdrsyncheck:postmaster:abuse

warn message = X-WhitelistedRCPT-nohdrfromcallback: Yes
local_parts = +nohdrfromcallback:postmaster:abuse

warn message = X-SA-Do-Not-Rej: Yes
local_parts = +nosarej:postmaster:abuse

warn message = X-SA-Do-Not-Run: Yes
hosts = +relay_from_hosts

warn message = X-SA-Do-Not-Run: Yes
authenticated = *

warn message = X-Broken-Reverse-DNS: no host name for IP address $sender_host_address
!verify = reverse_host_lookup

# accept domains = +local_domains
# local_parts = postmaster

deny message = "HELO/EHLO required by SMTP RFC"
condition = ${if eq{$sender_helo_name}{}{yes}{no}}
.ifdef TEERGRUBE
delay = TEERGRUBE
.endif

deny message = Forged domain detected in HELO/EHLO - $sender_helo_name
condition = ${if and{{match{$sender_helo_name} \
{(example|yahoo|hotmail|compuserve)}} \
{!match{$sender_host_name}{${rxquote:$1}}}}{yes}{no}}
.ifdef TEERGRUBE
delay = TEERGRUBE
.endif

deny message = Only one recipient accepted for NULL sender
senders = :
condition = ${if >{$rcpt_count}{1}{1}}
.ifdef TEERGRUBE
delay = TEERGRUBE
.endif

.ifdef TEERGRUBE
deny log_message = Teergrube: dictionnary attack (ALLOWEDRCPTFAIL failed probes)
message = unknown user
condition = ${if >{$rcpt_fail_count}{1} {1}{0}}
.else
drop log_message = Dictionnary attack ($rcpt_fail_count failed probes). Dropping connection
message = unknown user ($rcpt_fail_count failed queries)
condition = ${if >{$rcpt_fail_count}{${eval:ALLOWEDRCPTFAIL-2}} {1}{0}}
.endif
delay = ${eval:30*$rcpt_fail_count}s
domains = +local_domains
!verify = recipient

deny condition = ${if eq{$sender_ident}{CacheFlow Server}{1}{0}}
message = Rejected - appears to be an unsecured proxy: $sender_ident

deny hosts = +host_reject_rcpt
message = Host $sender_host_address is blocked: ${lookup mysql{HOSTREJECTRCPT1}{$value}{"unspecified reason"}}
.ifdef TEERGRUBE
delay = TEERGRUBE
.endif

deny senders = +denyenvsenders
message = Sender $sender_address is blocked: ${lookup mysql{BLOCKENVSEND1}{$value}{"unspecified reason"}}

deny local_parts = !+noenvfromcheck
!verify = sender
.ifdef TEERGRUBE
delay = TEERGRUBE
.endif

# deny message = $sender_host_address is not allowed to send mail from $sender_address_domain
# spf = softfail : neutral
# !authenticated = *
#.ifdef TEERGRUBE
# delay = TEERGRUBE
#.endif

deny hosts = !+localadds:!+hosts_disable_callback:*
sender_domains = !+envdomain_disable_callback:!+domains_callback_norandom:*
local_parts = !+noenvfromcallback
!verify = sender/callout=90s,random,postmaster
# !spf = pass
.ifdef TEERGRUBE
delay = TEERGRUBE
.endif

deny hosts = !+localadds:!+hosts_disable_callback:*
sender_domains = +domains_callback_norandom
local_parts = !+noenvfromcallback
!verify = sender/callout=90s,postmaster
# !spf = pass
.ifdef TEERGRUBE
delay = TEERGRUBE
.endif

# warn message = $spf_received
# domains = +local_domains

deny message = host is listed in $dnslist_domain
dnslists = sbl-xbl.spamhaus.org : relays.ordb.org : \
combined.njabl.org : bl.spamcop.net
# !authenticated = *
.ifdef TEERGRUBE
delay = TEERGRUBE
.endif

accept domains = +local_domains
endpass
message = unknown user
verify = recipient

accept domains = +relay_to_domains
endpass
message = unrouteable address
verify = recipient/callout=30s/callout_defer_ok

accept hosts = +localadds:+relay_from_hosts
verify = recipient

accept hosts = +auth_relay_hosts
endpass
message = authentication required
authenticated = *

deny message = relay not permitted
.ifdef TEERGRUBE
delay = TEERGRUBE
.endif

check_mime:

warn decode = default

deny message = Blacklisted file extension detected
condition = ${if match {${lc:$mime_filename}} \
{\N(\.exe|\.pif|\.bat|\.scr|\.lnk|\.com)$\N} {1}{0}}

deny message = Sorry, noone speaks Chinese here
condition = ${if eq{$mime_charset}{gb2312}{1}{0}}

accept


check_data:

deny !verify = header_syntax
!condition = $header_X-WhitelistedRCPT-nohdrsyncheck:
.ifdef TEERGRUBE
delay = TEERGRUBE
.endif

accept hosts = :

accept hosts = 127.0.0.1/8

deny hosts = !+localadds:!+hosts_disable_callback:*
!condition = $header_X-WhitelistedRCPT-nohdrfromcallback:
!condition = ${lookup mysql{HDR_DOMAIN_DISABLE_CALLBACK} {yes}{no}}
!condition = ${lookup mysql{NO_RANDOM_CALLBACK} {yes}{no}}
!verify = header_sender/callout=90s,postmaster,random
.ifdef TEERGRUBE
delay = TEERGRUBE
.endif

deny hosts = !+localadds:!+hosts_disable_callback:*
!condition = $header_X-WhitelistedRCPT-nohdrfromcallback:
!condition = ${lookup mysql{HDR_DOMAIN_DISABLE_CALLBACK} {yes}{no}}
condition = ${lookup mysql{NO_RANDOM_CALLBACK} {yes}{no}}
!verify = header_sender/callout=90s,postmaster
.ifdef TEERGRUBE
delay = TEERGRUBE
.endif

deny message = Serious MIME defect detected ($demime_reason)
demime = *
condition = ${if >{$demime_errorlevel}{2}{1}{0}}

deny message = This message contains malware ($malware_name)
malware = *

accept


check_auth:

.ifdef CERTNAME
accept hosts = +auth_over_tls_hosts
endpass
message = STARTTLS required before AUTH
encrypted = *
.endif

accept


check_expn:

accept hosts = +expn_hosts
deny message = expn not allowed from this host, sorry
.ifdef TEERGRUBE
delay = TEERGRUBE
.endif


check_vrfy:

accept hosts = +vrfy_hosts
deny message = vrfy not allowed from this host, sorry
.ifdef TEERGRUBE
delay = TEERGRUBE
.endif


check_nonsmtp:

accept

######################################################################
# ROUTERS CONFIGURATION #
# Specifies how addresses are handled #
######################################################################
# THE ORDER IN WHICH THE ROUTERS ARE DEFINED IS IMPORTANT! #
# An address is passed to each router in turn until it is accepted. #
######################################################################

begin routers

always_verify:
driver = manualroute
domains = +nodnsdomains
verify_sender
verify_only
route_list = *

.ifdef SMARTHOST_ROUTELIST
smarthost:
driver = manualroute
domains = ! +local_domains
route_list = SMARTHOST_ROUTELIST
ignore_target_hosts = +bogusips
no_verify
host_find_failed = defer
same_domain_copy_routing = yes
transport = remote_smtp
.endif

dnslookup:
driver = dnslookup
domains = ! +local_domains
ignore_target_hosts = +bogusips
same_domain_copy_routing = yes
transport = remote_smtp
no_more

system_aliases:
driver = redirect
allow_defer
allow_fail
data = ${lookup mysql{SELECT recipients FROM aliases \
WHERE local_part='${local_part}' AND domain='${domain}'}}

userforward:
driver = redirect
allow_fail
allow_defer
data = ${lookup mysql{SELECT recipients FROM userforward \
WHERE local_part='${local_part}' AND domain='${domain}'}}

mysqluser:
driver = accept
condition = ${if eq{} {${lookup mysql{SELECT home FROM users \
WHERE id='${local_part}' AND mbox_host='${domain}' \
AND active='Y'}}}{no}{yes}}
local_part_suffix = +*
local_part_suffix_optional
transport = mysql_delivery

######################################################################
# TRANSPORTS CONFIGURATION #
######################################################################
# ORDER DOES NOT MATTER #
# Only one appropriate transport is called for each delivery. #
######################################################################

begin transports

mysql_delivery:
driver = appendfile
maildir_format
create_directory
maildir_tag = ,S=$message_size
directory = ${lookup mysql{SELECT CONCAT(home, "/Maildir") FROM users \
WHERE id='${local_part}' AND mbox_host='${domain}'}}
return_path_add
delivery_date_add
envelope_to_add
group = mail
mode = 0660
no_mode_fail_narrower
headers_remove = "Lines"
headers_add = "Lines: $body_linecount\n"
check_string = ""
directory_mode = 700
message_prefix = ""
message_suffix = ""
quota = ${lookup mysql{SELECT quota FROM users \
WHERE id='${local_part}' AND mbox_host='${domain}'}{${value}M}}
quota_size_regex = S=(\d+)$
quota_warn_threshold = 75%

address_pipe:
driver = pipe
log_defer_output
log_fail_output
path = "/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin"
return_output
user = mail
group = mail
headers_remove = "Lines"
headers_add = "Lines: $body_linecount\n"

address_file:
driver = appendfile
delivery_date_add
envelope_to_add
return_path_add
user = mail
group = mail

address_reply:
driver = autoreply

remote_smtp:
driver = smtp
dns_qualify_single = false
hosts_nopass_tls = *
hosts_avoid_tls = +hosts_avoid_tls
hosts_try_auth = +hosts_try_auth
# headers_remove = "X-SA-Do-Not-Run:X-SA-Exim-Scanned:X-SA-Exim-Mail-From:X-SA-Exim-Rcpt-To:X-SA-Exim-Connect-IP"

######################################################################
# RETRY CONFIGURATION #
######################################################################

begin retry

# Domain Error Retries
# ------ ----- -------

* quota
* * F,2h,15m; G,16h,1h,1.5; F,4d,6h

######################################################################
# REWRITE CONFIGURATION #
######################################################################

begin rewrite

######################################################################
# AUTHENTICATION CONFIGURATION #
######################################################################

begin authenticators

# AUTH PLAIN authentication method used by Netscape Messenger.
plain:
driver = plaintext
public_name = PLAIN
server_condition = ${if crypteq{$3} {${lookup mysql{SELECT crypt FROM users \
WHERE id = '${quote_mysql:${local_part:$2}}' \
AND mbox_host = '${quote_mysql:${domain:$2}}' \
AND passwd = '${quote_mysql:$3}' \
AND active = 'Y'}{$value}{*}}}{yes}{no}}
server_prompts = :
server_set_id = $2

# AUTH LOGIN authentication method used by MS Outlook.
login:
driver = plaintext
public_name = LOGIN
server_condition = ${if crypteq{$2} {${lookup mysql{SELECT crypt FROM users \
WHERE id = '${quote_mysql:${local_part:$1}}' \
AND mbox_host = '${quote_mysql:${domain:$1}}' \
AND passwd = '${quote_mysql:$2}' \
AND active = 'Y'}{$value}{*}}}{yes}{no}}
server_prompts = Username:: : Password::
server_set_id = $1

# AUTH CRAM-MD5 authentication method used by Eudora/TheBat!.
cram_md5:
driver = cram_md5
public_name = CRAM-MD5
server_secret = ${lookup mysql{SELECT passwd FROM users \
WHERE id = '${quote_mysql:${local_part:$1}}' \
AND mbox_host = '${quote_mysql:${domain:$1}}' \
AND active = 'Y'}{$value}fail}
server_set_id = $1

# End of Exim configuration file

Измененная структура базы данных mySQL:
--
-- Table structure for table `aliases`
--

CREATE TABLE aliases (
local_part varchar(64) NOT NULL default '',
domain varchar(128) NOT NULL default 'example.ru',
recipients text,
PRIMARY KEY (local_part,domain)
) TYPE=MyISAM;

--
-- Dumping data for table `aliases`
--

INSERT INTO aliases VALUES ('postmaster','example.ru','ginger');
INSERT INTO aliases VALUES ('mailer-daemon','example.ru','postmaster');
INSERT INTO aliases VALUES ('root','example.ru','postmaster');
INSERT INTO aliases VALUES ('bin','example.ru','root');
INSERT INTO aliases VALUES ('daemon','example.ru','root');
INSERT INTO aliases VALUES ('games','example.ru','root');
INSERT INTO aliases VALUES ('ingres','example.ru','root');
INSERT INTO aliases VALUES ('sync','example.ru','root');
INSERT INTO aliases VALUES ('mail','example.ru','root');
INSERT INTO aliases VALUES ('pop','example.ru','root');
INSERT INTO aliases VALUES ('uucp','example.ru','root');
INSERT INTO aliases VALUES ('ftp','example.ru','root');
INSERT INTO aliases VALUES ('nobody','example.ru','root');
INSERT INTO aliases VALUES ('system','example.ru','root');
INSERT INTO aliases VALUES ('toor','example.ru','root');
INSERT INTO aliases VALUES ('foo','example.ru','root');
INSERT INTO aliases VALUES ('falken','example.ru','root');
INSERT INTO aliases VALUES ('www','example.ru','root');
INSERT INTO aliases VALUES ('named','example.ru','root');
INSERT INTO aliases VALUES ('postgres','example.ru','root');
INSERT INTO aliases VALUES ('mysql','example.ru','root');
INSERT INTO aliases VALUES ('squid','example.ru','root');
INSERT INTO aliases VALUES ('drweb','example.ru','root');
INSERT INTO aliases VALUES ('webmaster','example.ru','root');
INSERT INTO aliases VALUES ('admin','example.ru','root');
INSERT INTO aliases VALUES ('manager','example.ru','root');
INSERT INTO aliases VALUES ('dumper','example.ru','root');
INSERT INTO aliases VALUES ('operator','example.ru','root');
INSERT INTO aliases VALUES ('abuse','example.ru','root');
INSERT INTO aliases VALUES ('security','example.ru','root');
INSERT INTO aliases VALUES ('hostmaster','example.ru','root');
INSERT INTO aliases VALUES ('decode','example.ru','root');
INSERT INTO aliases VALUES ('moof','example.ru','root');
INSERT INTO aliases VALUES ('moog','example.ru','root');
INSERT INTO aliases VALUES ('news','example.ru','usenet');
INSERT INTO aliases VALUES ('usenet','example.ru','root');
INSERT INTO aliases VALUES ('staff','example.ru','postmaster');
INSERT INTO aliases VALUES ('office','example.ru','postmaster');
INSERT INTO aliases VALUES ('all','example.ru','postmaster');
INSERT INTO aliases VALUES ('tech','example.ru','postmaster');
INSERT INTO aliases VALUES ('ops','example.ru','postmaster');

--
-- Table structure for table `blacklists`
--

CREATE TABLE blacklists (
address varchar(64) NOT NULL default '',
type enum('SENDER','HOSTREJ','REJRCPT') NOT NULL default 'SENDER',
message text,
PRIMARY KEY (address,type)
) TYPE=MyISAM;

--
-- Dumping data for table `blacklists`
--

INSERT INTO blacklists VALUES ('postcards@rol.ru','SENDER','We are sorry, dont want message from you');
INSERT INTO blacklists VALUES ('81.13.65.178','HOSTREJ','');

--
-- Table structure for table `callbackdomains`
--

CREATE TABLE callbackdomains (
domain varchar(128) NOT NULL default '',
type enum('NOENV','NOHDR','NORND','NODNS') NOT NULL default 'NOENV',
PRIMARY KEY (domain,type)
) TYPE=MyISAM;

--
-- Dumping data for table `callbackdomains`
--

INSERT INTO callbackdomains VALUES ('example.ru','NOENV');
INSERT INTO callbackdomains VALUES ('example.ru','NOHDR');

--
-- Table structure for table `domains`
--

CREATE TABLE domains (
domain varchar(128) NOT NULL default 'example.ru',
type enum('LOCAL','RELAY','VIRTUAL') default 'LOCAL',
PRIMARY KEY (domain)
) TYPE=MyISAM;

--
-- Dumping data for table `domains`
--

INSERT INTO domains VALUES ('example.ru','LOCAL');

--
-- Table structure for table `hostlists`
--

CREATE TABLE hostlists (
hostname varchar(64) NOT NULL default '',
type enum('AVOIDTLS','TRYAUTH','NOCALL') NOT NULL default 'AVOIDTLS',
PRIMARY KEY (hostname,type)
) TYPE=MyISAM;

--
-- Dumping data for table `hostlists`
--

INSERT INTO hostlists VALUES ('194.226.96.22','NOCALL');

--
-- Table structure for table `userforward`
--

CREATE TABLE userforward (
local_part varchar(64) NOT NULL default '',
domain varchar(128) NOT NULL default 'example.ru',
recipients text,
PRIMARY KEY (local_part,domain)
) TYPE=MyISAM;

--
-- Dumping data for table `userforward`
--

INSERT INTO userforward VALUES ('noc','example.ru','ginger');
INSERT INTO userforward VALUES ('sysadmin','example.ru','ginger, max, someone@fagci.ru');

--
-- Table structure for table `users`
--

CREATE TABLE users (
id varchar(64) NOT NULL default '',
crypt varchar(64) NOT NULL default '',
passwd varchar(64) NOT NULL default '',
uid int(10) NOT NULL default '8',
gid int(10) NOT NULL default '12',
mbox_host varchar(128) NOT NULL default 'example.ru',
shell varchar(32) NOT NULL default '/sbin/nologin',
home varchar(128) NOT NULL default '/home/vmail/domains',
quota tinyint(4) default '15',
active enum('Y','N') NOT NULL default 'Y',
PRIMARY KEY (id,mbox_host)
) TYPE=MyISAM;

--
-- Dumping data for table `users`
--

INSERT INTO users VALUES ('ginger',ENCRYPT('my-secret-pass'),'my-secret-pass',8,12,'example.ru','/sbin/nologin','/home/vmail/domains/example.ru/ginger',30,'Y');

--
-- Table structure for table `whitelist`
--

CREATE TABLE whitelist (
address varchar(64) NOT NULL default '',
PRIMARY KEY (address)
) TYPE=MyISAM;

--
-- Dumping data for table `whitelist`
--

INSERT INTO whitelist VALUES ('noc@example.ru');

+------------------+
| Tables_in_exim |
+------------------+
| aliases |
| blacklists |
| callbackdomains |
| domains |
| hostlists |
| userforward |
| users |
| whitelist |
+------------------+[/more]
Автор: Markes
Дата сообщения: 10.03.2005 11:01
ginger

Цитата:
Начиная с версии 4.50 в Exim интегрирован exiscan-acl патч.
Информация об этом доступна здесь:
http://duncanthrax.net/exiscan-acl/

Как оказалось уже "стоит" exiscan - при exim -bV вижу "Contains exiscan-acl patch revision 27". Но, как я понимаю, ниже описанные телодвижения возможны и без него. Я сделал так:

...
sender_address = lsearch;/usr/local/exim/senderbadlist
...
begin acl
...
deny message = SPAM !!! rejected, $sender is in a black list
senders = +senderbadlist

Файл senderbadlist состоит только из адреса test@test.ru и всё. Посылаю - приходят. exim -bV ошибок не показывает. Помогите с криворукостью пож-а
Автор: ginger
Дата сообщения: 10.03.2005 12:19
Markes
Вы просто ленитесь почитать инструкцию, не говоря уже о том что бы просто посмотреть файл конфигурации.

Цитата:
senders = +senderbadlist

senderbadlist Это что такое? ...вот и мне кажется что Exim никогда в жизни не догадается...
Автор: Markes
Дата сообщения: 10.03.2005 12:48
ginger

Цитата:
senderbadlist Это что такое?

Это файл Про который я "сказал" exim'у в первой строке в моём посте выше. Это не правильно?

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: MS Outlook Возвращает: Не удается доставить.


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.