Добрый день!Почтовый сервер на Exim стал рассылать спам с поддельными заголовками.
В почтовых логах красуется хост с именем "local".От этого хоста за 4 дня ушло 7500 писем на разные почтовые сервера в которых даже есть gmail.com, aol.com и т.д.
Мой IP занесли в черные списки.
Почта от клиентов этого домена перестала ходить на многие сервера.Конфиг exim.conf:
################ Начало файла ###################
primary_hostname = mail.company.ru
hide mysql_servers = localhost/mail/sqlmail/M4pnh12domainlist local_domains = ${lookup mysql{SELECT `domain` \
FROM `domain` WHERE \
`domain`='${quote_mysql:$domain}' AND \
`active`='1'}}domainlist relay_to_domains = ${lookup mysql{SELECT `domain` \
FROM `domain` WHERE \
`domain`='${quote_mysql:$domain}' AND \
`active`='1'}}hostlist relay_from_hosts = localhost:127.0.0.0/8:192.168.1.0/24 #add the hosts from which you allow relaying here
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_dataav_scanner = clamd:/var/run/clamav/clamd.socket
####
#spamd_address = 127.0.0.1 783##### tls
#tls_on_connect_ports = 465
#tls_advertise_hosts = *
#tls_certificate = /usr/local/etc/ssl/certs/mail.pem
#tls_privatekey = /usr/local/etc/ssl/certs/mail.key
#####
daemon_smtp_ports = 25 : 465
####
qualify_domain = company.ru
qualify_recipient = company.ru
allow_domain_literals = false
exim_user = exim
exim_group = exim
never_users = root
rfc1413_query_timeout = 0ssender_unqualified_hosts = +relay_from_hosts
recipient_unqualified_hosts = +relay_from_hosts
ignore_bounce_errors_after = 45m
timeout_frozen_after = 15d
helo_accept_junk_hosts =
auto_thaw = 1h
smtp_banner = "$primary_hostname, ESMTP Postfix"
smtp_accept_max = 50
smtp_accept_max_per_connection = 25
smtp_connect_backlog = 30
smtp_accept_max_per_host = 20
split_spool_directory = true
remote_max_parallel = 15
return_size_limit = 70k
message_size_limit = 64M
helo_allow_chars = _
smtp_enforce_sync = truelog_selector = \
+all_parents \
+connection_reject \
+incoming_interface \
+lost_incoming_connection \
+received_sender \
+received_recipients \
+smtp_confirmation \
+smtp_syntax_error \
+smtp_protocol_error \
-queue_runsyslog_timestamp = no
begin acl
acl_check_rcpt:
deny condition = ${if eq{$host_lookup_failed}{1}}
#deny condition = ${lookup{$sender_host_name}nwildlsearch{black.list}{yes}}accept hosts = :
deny message = "incorrect symbol in address"
domains = +local_domains
local_parts = ^[.] : ^.*[@%!/|]deny message = "incorrect symbol in address"
domains = !+local_domains
local_parts = ^[./|] : ^.*[@%!] : ^.*/\\.\\./accept local_parts = postmaster
domains = +local_domainsdeny message = "HELO/EHLO required by SMTP RFC"
condition = ${if eq{$sender_helo_name}{}{yes}{no}}accept authenticated = *
deny !authenticated = *
sender_domains = +local_domains : +relay_to_domains
message = Warning! Authentication required!deny message = "Your IP in HELO - access denied!"
hosts = * : !+relay_from_hosts : !81-196.niitk.kz
condition = ${if eq{$sender_helo_name}\
{$sender_host_address}{true}{false}}deny condition = ${if eq{$sender_helo_name}\
{$interface_address}{yes}{no}}
hosts = !127.0.0.1 : !localhost : *
message = "My IP in your HELO! Access denied!"deny condition = ${if match{$sender_helo_name}\
{\N^\d+$\N}{yes}{no}}
hosts = !127.0.0.1 : !localhost : *
message = "Incorrect HELO string"# filter spammers from dynamic ips
deny message = "your hostname is bad (adsl, poll, ppp & etc)."
condition = ${if match{$sender_host_name} \
{adsl|dialup|pool|peer|dhcp} \
{yes}{no}}warn
set acl_m0 = 30s
warn
hosts = +relay_from_hosts: #disable waits for 'friendly' hosts
set acl_m0 = 0s
warn
logwrite = Delay $acl_m0 for $sender_host_name \
[$sender_host_address] with HELO=$sender_helo_name. Mail \
from $sender_address to $local_part@$domain.
delay = $acl_m0accept domains = +local_domains
endpass
message = "No such user"
verify = recipientaccept domains = +relay_to_domains
endpass
message = "i don't know how to relay to this address"
verify = recipientdeny message = "you in blacklist - $dnslist_domain \n $dnslist_text"
dnslists = opm.blitzed.org : \
cbl.abuseat.org : \
bl.csma.biz :\
dialups.mail-abuse.org :\
bl.spamcop.net :\
zen.spamhaus.org
accept hosts = +relay_from_hostsdeny message = "Homo hominus lupus est"
acl_check_data:
# check for viruses
deny malware = *
message = "Your message contains viruses: $malware_name"# if needed - add spam filtering here
# permit everything else
acceptbegin routers
dnslookup:
driver = dnslookup
domains = ! +local_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
no_moresystem_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}'}}dovecot_user:
driver = accept
condition = ${lookup mysql{SELECT `goto` FROM \
`alias` WHERE \
`address`='${quote_mysql:$local_part@$domain}' OR \
`address`='${quote_mysql:@$domain}'}{yes}{no}}
transport = dovecot_deliverybegin transports
remote_smtp:
driver = smtp
#interface = 4.3.2.1 #your public ip address, if it's the main server ip - you could skip this parameter. if it's an alias- it must be specified in cleardovecot_delivery:
driver = pipe
command = /usr/libexec/dovecot/deliver -d $local_part@$domain
message_prefix =
message_suffix =
delivery_date_add
envelope_to_add
return_path_add
log_output
user = eximaddress_pipe:
driver = pipe
return_outputaddress_reply:
driver = autoreplybegin retry
* * F,2h,15m; G,16h,1h,1.5; F,4d,6h
begin rewrite
begin authenticators
auth_plain:
driver = plaintext
public_name = LOGIN
server_prompts = Username:: : Password::
server_condition = "${if crypteq{$2}{${lookup mysql{SELECT `password` FROM `mailbox` WHERE `username` = '${quote_mysql:$1}'}}}{yes}{no}}"
server_set_id = $1auth_login:
driver = plaintext
public_name = PLAIN
server_condition = "${if crypteq{$3}{${lookup mysql{SELECT `password` FROM `mailbox` WHERE `username` = '${quote_mysql:$2}'}}}{yes}{no}}"
server_prompts = :
server_set_id = $2auth_cram_md5:
driver = dovecot
public_name = CRAM-MD5
server_socket = /var/run/dovecot/auth-client
server_set_id = $auth1
################## Конец Файла ########################Стало интересно, как мой почтовик стал рассылать спам при опции:
accept authenticated = *Кто не прошел авторизацию, тот не может посылать письма.
Также стоит это:
hostlist relay_from_hosts = localhost:127.0.0.0/8:192.168.1.0/24Здесь нету сети 0.0.0.0/0 - которая говорит что мой сервер открытый релей.
Как вообще произошло такое, если самые основные опции в конфиге уже имеются.
Поможет ли мне опция?:
auth_advertise_hosts = *
Проверьте сервер на openrelay, можно использовать любой бесплатный сервис. Просто наберите в google openrelay testПроанализируйте логи, откуда идет почта. Возможно у вас сами пользователи рассылают или произошел взлом и т.д.
> Проверьте сервер на openrelay, можно использовать любой бесплатный сервис. Просто наберите
> в google openrelay test
> Проанализируйте логи, откуда идет почта. Возможно у вас сами пользователи рассылают или
> произошел взлом и т.д.Проверка на Openreay делал - закрыт релей.
>> Проверьте сервер на openrelay, можно использовать любой бесплатный сервис. Просто наберите
>> в google openrelay test
>> Проанализируйте логи, откуда идет почта. Возможно у вас сами пользователи рассылают или
>> произошел взлом и т.д.
> Проверка на Openreay делал - закрыт релей.отлично.
> Проверка на Openreay делал - закрыт релей.Сейчас в очереди 68467 писем, хочу посмотреть что там :)
# exim -bpc
68467
Посмотрел заголовок сообщения:
#### НАЧАЛО ЗАГОЛОВКА ####
1VffGh-00080K-3A-H
exim 93 93
<tahsin.yilmaz@ors.com.tr>
1384129335 0
-helo_name User
-host_address 108.59.244.136.35990
-host_auth auth_plain
-interface_address 217.15.54.54.25
-received_protocol esmtpa
-body_linecount 65
-max_received_linelength 68
-auth_id admin@company.ru
YY astute25@in.com
YY astropolis_111@hotmail.com
YN astronut@bellsouth.net
NN astronuata2501@tiscali.it
YY astrow20@gmil.com
#### КОНЕЦ ЗАГОЛОВКА ####Видно что спам пер с учетки admin@compnay.ru
Само тело сообщения уже не так интересно - это спам.
#### НАЧАЛО ТЕЛА СООБЩЕНИЯ ####
1VffGh-00080K-3A-D
I am Mrs. Connie Stevens I am a US citizen
and i am 34 years Old. I reside here in 108 Crockett Court. Apt 303,
New Braunfels Texas, United States and i am thinking of
relocating since I am now rich.I am one of those that took
...
#### КОНЕЦ ТЕЛА СООБЩЕНИЯ ####
> Видно что спам пер с учетки admin@compnay.ruНу, пароль, вероятно, ломанули. Эка невидаль. :) Срочно меняйте пароль, перекрывайте доступ по 25 порту сетке (сеткам) откуда идут соединения и чистите очередь.
> Ну, пароль, вероятно, ломанули. Эка невидаль. :)Сто пудов подобрали или сбрутили пароль.
Кстати, заодно неплохо бы суточный лимит отправки сообщений установить для своих пользователей, вряд-ли кто-то из них будет более сотни сообщений в день отсылать, а если в очередной раз спамерюги подберут пароль то они не смогут такое огромное количество сообщений пропихнуть.
>> Ну, пароль, вероятно, ломанули. Эка невидаль. :)
> Сто пудов подобрали или сбрутили пароль.
> Кстати, заодно неплохо бы суточный лимит отправки сообщений установить для своих пользователей,
> вряд-ли кто-то из них будет более сотни сообщений в день отсылать,
> а если в очередной раз спамерюги подберут пароль то они не
> смогут такое огромное количество сообщений пропихнуть.Ага, надо вот такую штуку поставить:
acl_not_smtp = acl_not_smtp
begin acl
acl_not_smtp:
deny message = Sender rate overlimit - $sender_rate / $sender_rate_period
ratelimit = 50 / 1h / strict
acceptНу кто же знал, что подберут пароль....
>[оверквотинг удален]
> Ага, надо вот такую штуку поставить:
> acl_not_smtp = acl_not_smtp
> begin acl
> acl_not_smtp:
> deny message = Sender
> rate overlimit - $sender_rate / $sender_rate_period
> ratelimit = 50 /
> 1h / strict
> accept
> Ну кто же знал, что подберут пароль....а куда это конкретно вставлять? у меня таже проблема
>[оверквотинг удален]
>> acl_not_smtp = acl_not_smtp
>> begin acl
>> acl_not_smtp:
>> deny message = Sender
>> rate overlimit - $sender_rate / $sender_rate_period
>> ratelimit = 50 /
>> 1h / strict
>> accept
>> Ну кто же знал, что подберут пароль....
> а куда это конкретно вставлять? у меня таже проблемаЯ не стал эти правила ставить, перешел на Postfix. Там установил Fail2ban, потом iptables настроил чтобы не разрешал многое число коннектов от одного IP адреса. Еще вот хочу Denyhost попробовать. Для нас блондинок хватает и Postfix'a, пока еще до Exim'a не доросли...
Благо при переходе с Exim на Postfix в базе хранились MD5 пароли. Все осталось как было Dovecot, RoundCube, PostfixAdmin и MySQL. Заменился только MTA...А те правила думаю здесь надо прописывать:
begin acl
acl_not_smtp:
deny message = Sender rate overlimit - $sender_rate / $sender_rate_period
ratelimit = 30 / 1h / strict
accept
***acl_check_rcpt:
***