Установка Fail2ban в связке с Postfix, Dovecot и Roundcube

Fail2ban это сканер почтовых логов, который выявляет IP адреса у которых большое количество ошибочных вводов паролей и бант их. Для этого он использует firewall. Установка для RH подобных систем:

yum install fail2ban
chkconfig —level 345 fail2ban on

для Debian:

apt-get install fail2ban
update-rc.d fail2ban defaults

Я буду настраивать Fail2Ban для защиты 4 сервисов: ssh, smtp, pop3/imap и webmail. Для ssh фильтры встроены, а вот для всего остального их необходимо написать. Я использую Roundcube как webmail и фильтр для него следующий, создаем файл /etc/fail2ban/filter.d/roundcube.iredmail.conf :

[Definition]
failregex = roundcube: (.*) Error: Login failed for (.*) from <HOST>\.
ignoreregex =

Для dovecot создаем файл /etc/fail2ban/filter.d/dovecot.iredmail.conf :

[Definition]
failregex = (?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed).*rip=(?P<host>\S*),.*
ignoreregex =

И для Postfix-a создаем файл /etc/fail2ban/filter.d/postfix.iredmail.conf :

[Definition]
failregex = \[<HOST>\]: SASL (PLAIN|LOGIN) authentication failed
reject: RCPT from (.*)\[<HOST>\]: 550 5.1.1
reject: RCPT from (.*)\[<HOST>\]: 450 4.7.1
reject: RCPT from (.*)\[<HOST>\]: 554 5.7.1
ignoreregex =

После этого, в файлк jail.local указываем расположение логов:

[roundcube-iredmail]
enabled = true
filter = roundcube.iredmail
action = iptables-multiport[name=roundcube, port=»ssh,http,https,smtp,smtps,pop3,pop3s,imap,imaps,sieve», protocol=tcp]
logpath = /var/log/maillog
findtime = 3600
maxretry = 5
bantime = 3600

[dovecot-iredmail]
enabled = true
filter = dovecot.iredmail
action = iptables-multiport[name=dovecot, port=»ssh,http,https,smtp,smtps,pop3,pop3s,imap,imaps,sieve», protocol=tcp]
logpath = /var/log/dovecot.log
maxretry = 5
findtime = 300
bantime = 3600
ignoreip == 127.0.0.1

[postfix-iredmail]
enabled = true
filter = postfix.iredmail
action = iptables-multiport[name=postfix, port=»ssh,http,https,smtp,smtps,pop3,pop3s,imap,imaps,sieve», protocol=tcp]
# sendmail[name=Postfix, dest=you@mail.com]
logpath = /var/log/maillog
bantime = 3600
maxretry = 5
ignoreip = 127.0.0.1

Вот и все, можем запускать:

/etc/init.d/fail2ban restart

Обновления dovecot

Я тут недавно обновлял Dovecot с 1.0.0 до 1.2.10 и начало ругаться на

Error: Error in configuration file /usr/local/etc/dovecot.conf line 210: Unknown setting: mail_extra_groups

решается изменением mail_extra_groups = mail на mail_privileged_group = mail

потом начало ругаться на:

Error: Error in configuration file /usr/local/etc/dovecot.conf line 441: Unknown setting: umask

для этого комментируем #umask=0027

Узнаем, какие способы ввода данных поддерживает postfix

И так, каким способом мы можем подавать информацию Postfix-y. Для того, что бы узнать какие способы потдерживаються вашей системой, достаточно выполнить

postconf -m

в ответ вы получите:

btree
cidr
environ
hash
ldap
mysql
nis
pcre
proxy
regexp
static
unix
 

Подключаем Pyzor, Razor2 и DCC для борьбы со спамом

Спам, вещь неприятная, не то что бы вредная, но все же мешает. Для борьбы с этой заразой есть масса всевозможных средст, я же расскажу об установке Pyzor2, Razor и DCC. В моем случаи я буду устанавливать эти службы уже на рабочую связку Postfix+Amavis(Как пример это может быть IRedMail). Для начала нам нужно будет открыть некоторые порты на фаерволе:

DCC port 6277 UDP
Razor2 port 2307 TCP
Pyzor port 24441 UDP

После этого, подключите RPMForge, инструкция как это сделать ТУТ и Atomic Rocket Repo, инструкция ТУТ

Теперь приступим к установке:

yum install pyzor razor-agents

После, выполняем следующее:

chmod -R a+rX /usr/share/doc/pyzor-0.5.0 /usr/bin/pyzor /usr/bin/pyzord
chmod -R a+rX /usr/lib/python2.4/site-packages/pyzor
mkdir /var/spool/amavisd
chown amavis:amavis /var/spool/amavisd
su -m amavis -c ‘pyzor —homedir /var/spool/amavisd discover’
su -m amavis -c ‘razor-admin -home=/var/spool/amavisd -create’
su -m amavis -c ‘razor-admin -home=/var/spool/amavisd -register’

Теперь перейдем к установке DCC:

cd /tmp
# wget http://www.dcc-servers.net/dcc/source/dcc-dccproc.tar.Z
cd dcc-dccproc-1.3.139
./configure —with-uid=amavis
make
make install
chown -R amavis:amavis /var/dcc
ln -s /var/dcc/libexec/dccifd /usr/local/bin/dccifd

Если у вас появяться какие-то ошибки связанные с sendmail, просто игнорируйте их.

Время заняться настройкой Spamassassin открываем /etc/mail/spamassassin/local.cf и добавляем следующее:

#dcc 
use_dcc 1 
dcc_home /var/dcc 
dcc_path /usr/local/bin/dccproc 
dcc_timeout     10 
add_header all  DCC _DCCB_: _DCCR_   

#pyzor 
use_pyzor 1 
pyzor_path /usr/bin/pyzor   

#razor 
use_razor2 1 
razor_config /var/spool/amavisd/razor-agent.conf   

score RAZOR2_CHECK 2.500 
score PYZOR_CHECK 2.500 
score DCC_CHECK 4.000

Редактируем /etc/mail/spamassassin/v310.pre

# DCC — perform DCC message checks.
#
# DCC is disabled here because it is not open source. See the DCC
# license for more details.
#
loadplugin Mail::SpamAssassin::Plugin::DCC

Проверяем настройки spamassassin

# spamassassin —lint

Если ошибок нет, то перезапускаем Amavis

service amavisd restart

И в конце, можно протестировать работу

spamassassin -t -D razor2 < /usr/share/doc/spamassassin-3.2.5/sample-spam.txt
spamassassin -t -D pyzor < /usr/share/doc/spamassassin-3.2.5/sample-spam.txt
cdcc info

Postfix Admin

Очень часто люди приходят на сайт по запросу — «Web интерфейс Postfix», ну или что-то подобное, и натыкаются на мой обрубок который я сделал для добавления Transporta. Поэтому, я решил, что хватит разочаровывать посетителей.

На мой взляд, PostfixAdmin является лучшей реализацией Web интерфейса для Postfix-а, он позволяет вам управлять почтой, доменами, алиасами, в общем разораться не сложно, пробуйте PostfixAdmin

Автоматическое внесение адресов почты получателей в белый лист policyd на Postfix-е

И так, проблема стара как мир, мне очень часто звонят пользователи и администраторы других объектов с проблемой, что к ним почту отправили, но вот уже ждут не первый час и она все еще не дошла. В 99.9% случаев она не прошла GreyListing и наш сервер до сих пор ждет повторного запроса. Через какое-то время мне все это надоело, и я решил добавить несколько скриптов что бы добавлять в белый лист policyd на 3 месяца адреса на которые пишут мои пользователи. Скажу сразу, что проблема была решена, и теперь, проблемные звонки исчезли как страшный сон.

Continue reading

Запрещаем прием писем с определенными вложениями в Postfix

В /etc/postfix/main.cf добавляем

header_checks = pcre:/etc/postfix/header_checks

А в /etc/postfix/header_checks

/^(.*)name=\»(.*)\.(exe|bat|cmd|mp3)\»$/ REJECT Attachment type not allowed. File «$2» has unacceptable extension: «$3»

Тогда в логах будет приблизительно такое:

Attachment type not allowed. File «document.rar» has unacceptable extension: «rar»

 

Сохраняем копии всей входящей и исходящей почты в Postfix-е

Для того, что бы сохранить копии всех исходящих писем необходимо в /etc/postfix/main.cf добавляем

sender_bcc_maps = hash:/etc/postfix/sender_bcc_maps

А в /etc/postfix/sender_bcc_maps

#Вся почта исходящая из домена teaseo.ru на info@teaseo.ru
@teaseo.ru sender_bcc@teaseo.ru

Для того, что бы сохранить копии всех входящих писем нужно в /etc/postfix/main.cf добавить

recipient_bcc_maps = hash:$config_directory/recipient_bcc_maps

В /etc/postfix/recipient_bcc_maps

# Вся входящая почта для домена teaseo.ru пересылать на info@teaseo.ru
@teaseo.ru info@teaseo.ru

Если вы хотите что бы и входящие и исходящие копии писем пересылались на определенный адрес, то вам необходимо добавить в /etc/postfix/main.cf

always_bcc = all@sys-adm.org.ua

Обязательно в конце

postmap /etc/postfix/sender_bcc_maps
postmap /etc/postfix/recipient_bcc_maps
service postfix restart

 

Запрещаем прием почты от определенного домена или адреса в Postfix

В /etc/postfix/main.cf добавляем

smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/sender_access

В /etc/postfix/sender_access

# Заблокировать всю почту с домена и поддоменов
domain.com REJECT
# Заблокировать пользователя spam с любого домена
spam@ REJECT
# Заблокировать адрес
spam@domain.com REJECT NO SPAM

Далее, обязательно

postmap /etc/postfix/sender_access
service postfix reload

 

Полезные команды Postfix

Повторно попытаться отправить все письма из очереди

postsuper -r ALL

Удалить всю очередь

postsuper -d ALL

Просмотреть текущую очередь

postqueue -p

Просмотреть текущий конфиг

postconf

Просмтреть стандартный конфиг

postconf -d

Вывод значения параметра в текущем конфиге

postconf <параметр>

Удалить все временные файлы, после падения системы или самого postfix-а

postsuper -p