Всем доброго времени суток!!!
Возникла у меня необходимость поднять почтарь на CentOS.
Статей в интернете много, но я выложу свои настройки тут.
Сама статья взята тут
Что бы не забыть я перенесу ее сюда… с небольшими комментариями что мне довелось изменить , что бы у меня заработало
Для полноценной работы понадобятся дополнительные пакеты, такие как: Dovecot v2, MySQL, Postgrey, ClamAV.
Плохим тоном считается, использования публичных почтовых служб. У клиентов такой компании, да и у партнеров может сложится плохое впечатление о фирме, если они увидят адрес известного почтового сервера (mail.ru, yandex.ru, gmail.com и т.д.)
Преимущества Postfix как агента передачи следующие:
Скажем спасибо @Cruiser78 за ценную информацию которую он всегда любезно предоставляет.
Краткое содержание:
http://linuxforum.ru/viewtopic.php?id=21934
Аналогичная установка на CentOS 7:
Установка и настройка почтового сервера Postfix на CentOS 6.5 x32
Домен: point.local
Имя хоста почтового сервера: mx.point.local
IP адрес почтового сервера: 192.168.1.2
Если у вас другой домен и имя хоста, а также IP адрес сервера – поменяйте их на свои в конфигах!
Начнем нашу установку с настройки сетевого адаптера
По умолчанию этот файл содержит следующие настройки
Чтобы внести текст в файл, нажмите клавишу “INS” -это активирует режим редактирования, переведет вас с режима просмотра в режим редактирования. После чего вводите новые данные. Обычно после нажатия “INS”, текст вставляется комбинацией “SHISFT”+”INS”.
По окончанию ввода текста, нажмите кнопку “ESC” и потом нажмите одновременно кнопки “SHIFT+z+z” или введите “:w!” и потом нажмите “ENTER” – это делается для сохранения файла и выхода с редактора.
Поиск файла в редакторе vi делается путем нажатия кнопки “/”, далее вводится текст который нужно найти.
Перезапустим сетевую службу:
192.168.1.2 – это IP адрес нашего почтового сервера, он также будет выступать в роли DNS сервера
111.222.333.444 – адрес DNS сервера провайдера
Перезапустим сетевую службу, чтобы внесенные нами изменения вступили в силу:
Первая debug_peer_level отвечает за уровень логирования, а вторая строчка указывает с каких хостов и сетей должны попадать логи.
Для примера, можно ввести адреса серверов популярных почтовых сервисов:
Если будут проблемы, вас спасет это debug режим.
Примечание: При составлении Postfix конфига, важно соблюдать отступы в два пробела в некоторых местах.
Откроем опять главный конфиг файл:
Здесь мы отключи встроенную цепочку правил фаерволла (RH-Input)
Отключаем SELINUX:
Теперь запретим нашему серверу быть открытым Релеем, допишем в файл:
Создадим дополнительные конфигурационные файлы, которые указаны в /etc/postfix/main.cf, эти файлы отвечают за обращение к базе данных MySQL:
И так, первым делом проверяем наш файл /etc/resolv.conf:
Если у вас есть купленное доменное имя – “company.ru” и два DNS сервера хостера/провайдера, то данный пункт по настройке DNS сервера – можно пропустить! Вписав в файл /etc/resolv.conf – IP адреса вашего провайдера. Провайдерские DNS в свою очередь обратятся к DNS серверам вашего хостера. Тем самым обеспечивая работу вашего домена.
После наших изменений в файле – /etc/resolv.conf, данные о зоне “point.local” будут браться из нашего DNS сервера с IP адресом 192.168.1.2. Другие запросы будут разрешатся через DNS сервер провайдера.
Наш почтовый сервер имеет следующий IP адрес 192.168.1.2, он еще у нас должен быть и DNS сервером. Теперь самое главное, установим пакет Bind:
192.168.1.2 – наш DNS сервер
111.222.333.444 – IP адрес DNS сервера провайдера
Сохраняем на всякие пожарные основной конфигурационный файл демона “named”:
А также в при добавлении PTR записи требуется ставить последнею цифру IP адреса,
у нас эта цифра 2, так как IP адрес почтового сервере оканчивается на 2 (192.168.1.2)
Веб интерфейс PostfixAdmin позволит управлять вашим почтовым сервером. Добавление новых обслуживаемых доменов и почтовых ящиков производится в нем.
Настроим его загрузив веб страницу PostfixAdmin, для этого запустите браузер и введите веб адрес http://127.0.0.1/postfixadmin/setup.php
В окошке Change setup password введите свой пароль. Запомните его, он нам пригодится в дальнейшем.
Во втором окошке появится HASH нашего пароля (шифрованный пароль). Скопируйте эту “белеберду” в буфер.
После того как вы скопировали “hash” в буфер обмена, его нужно вставить в файл:
Зайдите еще раз на страничку: http://127.0.0.1/postfixadmin/setup.php
Создайте учетку Админа, например “administrator@point.local”, определите его пароль.
Нажмите на кнопке “Add Admin”, появится надпись:
Теперь уже заходим на страничку http://127.0.0.1/postfixadmin/
Вводим почтовый адрес админа и пароль.
Добавляем домен “point.local”: Domain List – > New Domain -> point.local
Меню Virtual List -> Add MailBox ->
Username – linux
Password – 123 (sample)
Ну все!
Теперь пришло время тестировать наш почтовый сервер.
Найдите в локальной сети свободный компьютер, настройте сетевые настройки так чтобы он видел почтовый сервер.
Сетевой адрес должен быть в под сети сервера. Не забудьте указать ДНС сервер, у меня он имеет IP адрес почтового сервера.
Откройте почтовый клиент Outlook, укажите адрес вашего сервера и логин/пароль учетной записи linux@point.local
SMTP/POP3 server: mx.point.local
Учетная запись (Account name): linux@point.local
Пароль (password): 123
Примечание: Не забудьте настроить SMTP авторизацию.
Отправьте себе тестовое письмо!
По окончании установки веб интерфейса, Вам будет предложено скачать и сохранить один конфигурационный файл:
roundcube – имя пользователя базы roundcubemail
password – пароль доступа к базе
roundcubemail – сама база веб Интерфейса RoundCube
Если все прошло успешно, удаляем директорию установщика в целях безопасности.
Например, можно добавить возможность закачки всех вложений единым архивом и т.д.
iptables -F -t nat
iptables -F -t mangle
iptables -X
iptables -X -t nat
iptables -X -t mangle
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -A OUTPUT -o lo -p all -j ACCEPT
iptables -A OUTPUT -o eth0 -p ICMP -j ACCEPT
iptables -A OUTPUT -p tcp –sport 1234 -j ACCEPT
iptables -A OUTPUT -p tcp –sport 80 -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport –sports 25,110,143 -j ACCEPT
iptables -A INPUT -p udp -m udp –dport 53 -m state –state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m tcp –dport 53 -m state –state NEW,ESTABLISHED,RELATED -j ACCEPT
–hashlimit-mode srcip –hashlimit-burst 100 –hashlimit-srcmask 28 -j DROP
Даем права на запуск файла (исполняемый файл):
На сервер часто ломятся разные роботы (боты), подбирая пароли и логины. Логи почтовой системы от этих ботов растут, и самое главное в конце концов не исключено что, бот подберет правильную пару логин/пароль. Утилита Fail2Ban помогает утихомирить ботов, блокируя через iptables ip адреса хостов ботов.
192.168.1.2 – за место этого IP адреса указываем Ваш внешний белый адрес который не будет проверятся fail2ban. Если их два, указываем их через пробел.
Создаем файл – /etc/fail2ban/filter.d/roundcube.banhammer.conf:
Почтовый сервер установлен и настроен, теперь за электронную переписку отвечает связка программ из мира Open Source. Решение бесплатное, гибкое и довольно быстрое. В компании где я работаю, Postfix трудится уже продолжительное время. Управлять таким почтовым сервером легко, даже Windows админ справится с такой задачей, так как мы настроили Веб интерфейс под названием PostfixAdmin. В нем можно быстро создавать почтовые домены, пользователей, настраивать пересылку и автоответчик. И это еще не все его достоинства.
Для обычных пользователей, доступен Веб интерфейс, через который они могут проверять почту, если под рукой не оказалось почтового клиента.
В данном посте в целях более лучшего понимания и упрощения, было решено оставить только самое важное.
Это дает базовый функционал, который в принципе многих удовлетворит.
Если у вас возникнуть вопросы, можете их задавать на специализированном форуме Postfix: www.postfix.ru
Анализатор логов к Postfix
Полезно знать статистику по почтовому серверу, сколько писем отправлен/получено, а также сколько спама отбилось.
Или даже можно узнать что у вас проблема с конфигурационным файлом.
Можно также получить статистику сегодняшнего дня задав параметр – today
Чтобы каждый день виден статистику по серверу, полезно установить утилиту Logwatch которая будет отправлять на ваш почтовый ящик статистику каждый день, тем самым позволяя вам держать руку на пульсе, если вдруг что случится с вашим почтарем или любым другим серверов.
Тестовый отчет можно получить если ввести
Возникла у меня необходимость поднять почтарь на CentOS.
Статей в интернете много, но я выложу свои настройки тут.
Сама статья взята тут
Что бы не забыть я перенесу ее сюда… с небольшими комментариями что мне довелось изменить , что бы у меня заработало
Установка и настройка почтового сервера Postfix в CentOS 6.6 x32
В данном посте описан процесс установки почтового сервера на основе MTA Postfix. В качестве платформы будет использована CentOS версии 6.6 x32.Для полноценной работы понадобятся дополнительные пакеты, такие как: Dovecot v2, MySQL, Postgrey, ClamAV.
Введение
Почтовая переписка важный инструмент взаимодействия сотрудников компании применительно к корпоративному сектору. Сейчас практически каждая уважаемая себя компания имеет свой почтовый сервер.Плохим тоном считается, использования публичных почтовых служб. У клиентов такой компании, да и у партнеров может сложится плохое впечатление о фирме, если они увидят адрес известного почтового сервера (mail.ru, yandex.ru, gmail.com и т.д.)
Преимущества Postfix как агента передачи следующие:
- Быстрый и безопасный
- Модульная архитектура
- Бесплатный
- Сложная установка и настройка по сравнению с Windows решениями.
- Требуется знать основы Linux
Давайте разберем зачем нам столько пакетов и зачем они используются: - Postfix – будет заниматься отправкой и получением писем от других почтовых серверов (MTA – Mail Transfer Agent / почтовый агент пересылки )
- Dovecot – занимается доставкой почты от Postfix к почтовым клиентам (MDA – mail delivery agent / почтовый агент доставки)
- MySQL – в базе MySQL будут содержаться такие данные как наш домен company.kz, имена почтовых учетных записей, пароли и т.д.
- Postgrey – эффективный спам фильтр, который будет отсеивать спам не создавая большой вычислительной нагрузки на сервер.
- ClamAV и ClamSMTP – это антивирус задача которого проверка почтовых сообщений на предмет вирусов
- PostfixAdmin – веб интерфейс для администратора почтового сервера который позволяет управлять почтовым сервером, такие операции как заведение доменов, почтовых учетный записей, смена паролей производятся именно в нем.
- RoundCube – веб интерфейс для пользователей почтового сервера, этот интерфейс позволяет работать с почтовым ящиком. Пользователь в нем просматривает почтовые сообщения, отправлять письма и т.д.
- Белый статический IP адрес. Обычно эти IP адреса выдает провайдер.
- Зарегистрированное доменное имя – company.ru. Можете воспользоватся любым регистратором, например www.reg.ru
- Два DNS сервера которые будут отвечать за домен – company.ru. Бывает так, что после регистрации домена регистратор дает свои DNS сервера в пользование. Можно уговорить провайдера поддерживать Ваш домен, а можно настроить свои DNS сервера
- PTR запись которая правильно резолвит Ваш почтовый хост (111.222.333.444 -> mail.company.ru). Обычно PTR запись прописывает провайдер, поэтому админ обращается к провайдеру с запросом занести PTR запись вида – IP адрес -> mail.company.ru
Скажем спасибо @Cruiser78 за ценную информацию которую он всегда любезно предоставляет.
Краткое содержание:
- Настройка сетевого адаптера
- Установка MySQL и создание базы
- Установка и настройка Postfix
- Установка и настройка Dovecot
- Установка Postgrey
- Установка ClamAV
- Установка PostfixAdmin и Apache
- Настройка DNS сервера
- Настройка PostfixAdmin
- Установка и настройка RoundCube Web Mail
- Настройка фаерволла iptables
- Установка Fail2Ban
http://linuxforum.ru/viewtopic.php?id=21934
Аналогичная установка на CentOS 7:
Установка и настройка почтового сервера Postfix на CentOS 6.5 x32
Домен: point.local
Имя хоста почтового сервера: mx.point.local
IP адрес почтового сервера: 192.168.1.2
Если у вас другой домен и имя хоста, а также IP адрес сервера – поменяйте их на свои в конфигах!
Начнем нашу установку с настройки сетевого адаптера
1. Настройка сетевого адаптера
Наш сервер имеет всего один сетевой адаптер, после установки CentOS, настройки этого адаптера хранятся в файле “/etc/sysconfig/network-scripts/ifcfg-eth0”.По умолчанию этот файл содержит следующие настройки
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
HWADDR="08:00:27:79:17:85"
NM_CONTROLLED="yes"
ONBOOT="no"
Следует дописать в этот файл дополнительные настройки, подправим содержимое этого файла, открываем его в текстовом редакторе vi:# vi /etc/sysconfig/network-scripts/ifcfg-eth0Чтобы внести текст в файл, нажмите клавишу “INS” -это активирует режим редактирования, переведет вас с режима просмотра в режим редактирования. После чего вводите новые данные. Обычно после нажатия “INS”, текст вставляется комбинацией “SHISFT”+”INS”.
По окончанию ввода текста, нажмите кнопку “ESC” и потом нажмите одновременно кнопки “SHIFT+z+z” или введите “:w!” и потом нажмите “ENTER” – это делается для сохранения файла и выхода с редактора.
Поиск файла в редакторе vi делается путем нажатия кнопки “/”, далее вводится текст который нужно найти.
DEVICE="eth0"
HWADDR="08:00:27:79:17:85"
NM_CONTROLLED="no"
ONBOOT="yes"
GATEWAY=192.168.1.250
IPADDR=192.168.1.2
NETMASK=255.255.255.0
BROADCAST=192.168.1.255
Здесь мы дописали IP адрес нашего сервера/компьютера, его подсеть и шлюз в Интернет.Перезапустим сетевую службу:
# service network restart
Вписываем наш домен и адреса DNS серверов:# vi /etc/resolv.conf
search point.local
nameserver 127.0.0.1 // адрес обратной петли, это ускорит работу DNS
nameserver 192.168.1.2 //Первичный DNS
nameserver 111.222.333.444 //Вторичный DNS
Здесь IP адреса:192.168.1.2 – это IP адрес нашего почтового сервера, он также будет выступать в роли DNS сервера
111.222.333.444 – адрес DNS сервера провайдера
Перезапустим сетевую службу, чтобы внесенные нами изменения вступили в силу:
# service network restart
Проверьте, ваш сервер должен иметь выход Интернет:# ping google.ru
2. Установка MySQL и создание базы
# yum install mysql mysql-server mysql-devel -y
Ставим демон (службу) в автозагрузку:# chkconfig mysqld on
Запускаем демон СУБД MySQL:# service mysqld start
Заходим в консоль MySQL для создания почтовой базы “mail”:# mysql -u root -p
mysql> Enter password: *****
mysql> CREATE DATABASE mail;
mysql> GRANT ALL PRIVILEGES ON mail.* TO 'postfix'@'localhost' IDENTIFIED BY 'password';
mysql> quit
3. Установка и настройка Postfix
# yum install postfix pam mod_ssl openssl crypto-utils mc system-config-firewall-tui setuptool wget -y
На всякие пожарные, сохраним оригинальный конфиг файл:# mv /etc/postfix/main.cf /etc/postfix/main.cf.original
Создадим свой:# vi /etc/postfix/main.cf
Содержимое файла:soft_bounce = no
queue_directory = /var/spool/postfix
daemon_directory = /usr/libexec/postfix
mail_owner = postfix
default_privs = nobody
inet_interfaces = all
myhostname = mx.point.local
mydomain = point.local
myorigin = $mydomain
mydestination = $myhostname,localhost.$myhostname,localhost
local_recipient_maps = proxy:unix:passwd.byname $alias_maps
unknown_local_recipient_reject_code = 550
mynetworks = 127.0.0.0/8
relay_domains =
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mail_spool_directory = /var/mail
smtpd_banner = $myhostname ESMTP
debug_peer_level = 2
debug_peer_list = 127.0.0.1
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
xxgdb $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail
mailq_path = /usr/bin/mailq
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/local/man
config_directory = /etc/postfix
Вот тут у меня возникли небольшие проблемы. Почта не принмалась а локально доставлялась с огромными тормозами. Пришлось исправить строку в main.cf пункт mydestination = $myhostname,localhost.$myhostname,localhost на mydestination = localhost, localhost.localdomainЭтот листинг содержит базовые настройки для запуска Postfix. В нем нам интересны такие настройки как debug_peer_level и debug_peer_list. Эти строчки отвечают за логирование SMTP сессий.
Первая debug_peer_level отвечает за уровень логирования, а вторая строчка указывает с каких хостов и сетей должны попадать логи.
Для примера, можно ввести адреса серверов популярных почтовых сервисов:
debug_peer_level = 2
debug_peer_list = yandex.ru, mail.ru pochta.ru 10.10.10.23/32 10.10.10.0/24
Хосты и сети можно перечислять через пробелы и знака запятой.Если будут проблемы, вас спасет это debug режим.
Примечание: При составлении Postfix конфига, важно соблюдать отступы в два пробела в некоторых местах.
Откроем опять главный конфиг файл:
# vi /etc/postfix/main.cf
И добавим:virtual_mailbox_domains = mysql:$config_directory/sql/vdomains.cf
virtual_mailbox_base = /var/vmail
virtual_mailbox_maps = mysql:$config_directory/sql/vmailbox.cf
virtual_alias_maps = mysql:$config_directory/sql/valias.cf
virtual_minimum_uid = 1150
virtual_uid_maps = static:1150
virtual_gid_maps = static:12
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
smtpd_sasl_auth_enable = yes
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = /var/spool/postfix/private/dovecot-auth
В этом листинге важно выставить идентификаторы пользователя, под
которым будет работать Postfix. Если пользователь создан, ID можно взять
с файла /etc/passwd, а ID группы хранится в /etc/groups. Так как у нас
нет данного пользователя, создадим его:# useradd -r -u 1150 -g mail -d /var/vmail -s /sbin/nologin -c Virtual vmail
Тут мы создали нового пользователя vmail c идентификатором ID – 1150,
добавили его в группу mail. Созданный пользователь имеет право на папку
/var/vmail, при этом он больше ни где не используется. При входе в
систему его не будет, то есть ему запрещено входить в систему как
обычный пользователь (nologin).# mkdir -p -v /var/vmail
# chmod 770 -R /var/vmail
# chown vmail:mail /var/vmail
Для корректной работы создали каталог почтовых сообщений /var/vmail, куда будет попадать почтовая переписка.# setup
Firewall Configuration -> Firewall Enabled -> Убираем галочкуЗдесь мы отключи встроенную цепочку правил фаерволла (RH-Input)
Отключаем SELINUX:
# vi /etc/selinux/config
Находим строчку:SELINUX=enforcing
Приводим ее к виду:SELINUX=disabled
Встроенная цепочка и SELINUX иногда мешают нормальной работе программ. Поэтому мы отключили их.Теперь запретим нашему серверу быть открытым Релеем, допишем в файл:
# vi /etc/postfix/main.cf
следующий блок:smtpd_recipient_restrictions = permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
reject_non_fqdn_recipient,
reject_invalid_hostname,
reject_unknown_recipient_domain,
reject_unknown_client,
reject_unlisted_recipient,
reject_unverified_recipient,
reject_unauth_pipelining,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client dialups.mail-abuse.org,
reject_rbl_client bl.spamcop.net,
reject_rbl_client zen.spamhaus.org,
reject_rbl_client sbl-xbl.spamhaus.org,
permit
Здесь правило reject_unauth_destination – должно запрещать открытый релей через ваш сервер.Создадим дополнительные конфигурационные файлы, которые указаны в /etc/postfix/main.cf, эти файлы отвечают за обращение к базе данных MySQL:
# mkdir /etc/postfix/sql
# vi /etc/postfix/sql/vdomains.cf
user = postfix
password = password
hosts = localhost
dbname = mail
table = domain
select_field = domain
where_field = domain
additional_conditions = and backupmx = '0' and active = '1'
# vi /etc/postfix/sql/vmailbox.cf
user = postfix
password = password
hosts = localhost
dbname = mail
table = mailbox
select_field = CONCAT(domain,'/',maildir)
where_field = username
additional_conditions = and active = '1'
# vi /etc/postfix/sql/valias.cf
user = postfix
password = password
hosts = localhost
dbname = mail
table = alias
select_field = goto
where_field = address
additional_conditions = and active = '1'
4. Установка и настройка Dovecot
# yum install dovecot dovecot-mysql -y
Чтобы Dovecot служил локальным транспортом, допишем следующие строчки в /etc/postfix/master.cf# vi /etc/postfix/master.cf
dovecot unix - n n - - pipe
flags=DRhu user=vmail:mail argv=/usr/libexec/dovecot/deliver -d $(recipient)
Добавим в конец файла main.cf следующие строчки:# vi /etc/postfix/main.cf
Чтобы лучше отбивался спам, добавим также следующие ограничения:smtpd_client_restrictions =
reject_unauth_pipelining,
permit_sasl_authenticated,
permit_mynetworks,
reject_unknown_client_hostname,
permit
smtpd_helo_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_invalid_hostname,
reject_invalid_helo_hostname,
reject_unknown_hostname,
reject_non_fqdn_helo_hostname,
reject_unknown_helo_hostname,
permit
smtpd_sender_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_non_fqdn_sender,
reject_authenticated_sender_login_mismatch,
reject_unauthenticated_sender_login_mismatch,
reject_unknown_sender_domain,
permit_sasl_authenticated,
reject_sender_login_mismatch
permit
Сохраним оригинальный конфиг файл dovecot.confСоздаем файл /etc/dovecot/dovecot.confmv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.orig
Вставим туда следующие настройки:vi /etc/dovecot/dovecot.conf
# 2.0.9: /etc/dovecot/dovecot.conf
# OS: Linux 2.6.32-220.7.1.el6.i686 i686 CentOS release 6.6 (Final) ext4
auth_debug = yes
auth_debug_passwords = yes
auth_mechanisms = plain login cram-md5
auth_verbose = yes
base_dir = /var/run/dovecot/
disable_plaintext_auth = no
ssl = no
first_valid_uid = 1150
last_valid_uid = 1150
log_timestamp = %Y-%m-%d %H:%M:%S
mail_debug = yes
mail_location = maildir:/var/vmail/%d/%u
passdb {
args = /etc/dovecot/dovecot-sql.conf
driver = sql
}
protocols = imap pop3
service auth {
unix_listener /var/spool/postfix/private/dovecot-auth {
user = postfix
group = postfix
mode = 0660
}
unix_listener auth-master {
user = vmail
group = mail
mode = 0660
}
unix_listener auth-userdb {
user = vmail
group = mail
mode = 0660
}
#user=root
}
service imap-login {
executable = /usr/libexec/dovecot/imap-login
inet_listener imap {
address = *
port = 143
}
}
service imap {
executable = /usr/libexec/dovecot/imap
}
service pop3-login {
executable = /usr/libexec/dovecot/pop3-login
inet_listener pop3 {
address = *
port = 110
}
}
service pop3 {
executable = /usr/libexec/dovecot/pop3
}
userdb {
args = /etc/dovecot/dovecot-sql.conf
driver = sql
}
protocol lda {
auth_socket_path = /var/run/dovecot/auth-master
postmaster_address = admin@point.local
}
Теперь создайте файл /etc/dovecot/dovecot-sql.confВнутри него поместите:vi /etc/dovecot/dovecot-sql.conf
driver = mysql
connect = host=localhost dbname=mail user=postfix password=password
default_pass_scheme = CRAM-MD5
user_query = SELECT '/var/vmail/%d/%n' as home, 'maildir:/var/vmail/%d/%n'as mail, 1150 AS uid, 12 AS gid, concat('dirsize:storage=', quota) AS quota FROM mailbox WHERE username = '%u' AND active = '1'
password_query = SELECT username as user, password, '/var/vmail/%d/%n' as userdb_home, 'maildir:/var/vmail/%d/%n' as userdb_mail, 1150 as userdb_uid, 12 asuserdb_gid FROM mailbox WHERE username = '%u' AND active = '1'
5. Установка Postgrey
Подключим необходимый репозитарий:Теперь установим Postgrey:rpm -Uvh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm
После установки нам нужно дописать всего 1 строчку в главный конфигурационный файл main.cf, чтобы postfix подружился со спам фильтром postgrey. Открываем файл – /etc/postfix/main.cf и делаем соответствующие изменения:yum install postgrey -y
vi /etc/postfix/main.cf
smtpd_recipient_restrictions = permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
check_policy_service unix:/var/spool/postfix/postgrey/socket,
reject_non_fqdn_recipient,
reject_invalid_hostname,
reject_unknown_recipient_domain,
reject_unknown_client,
reject_unlisted_recipient,
reject_unverified_recipient,
reject_unauth_pipelining,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client dialups.mail-abuse.org,
reject_rbl_client bl.spamcop.net,
reject_rbl_client zen.spamhaus.org,
reject_rbl_client sbl-xbl.spamhaus.org,
permit
smtpd_client_restrictions =
reject_unauth_pipelining,
permit_sasl_authenticated,
permit_mynetworks,
reject_unknown_client_hostname,
permit
smtpd_helo_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_invalid_hostname,
reject_invalid_helo_hostname,
reject_unknown_hostname,
reject_non_fqdn_helo_hostname,
reject_unknown_helo_hostname,
permit
smtpd_sender_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_non_fqdn_sender,
reject_authenticated_sender_login_mismatch,
reject_unauthenticated_sender_login_mismatch,
reject_unknown_sender_domain,
permit_sasl_authenticated,
reject_sender_login_mismatch
permit
Примечание: строчка “check_policy_service
unix:/var/spool/postfix/postgrey/socket,” должна быть обязательно
прописана после строчки параметра “reject_unauth_destination”, как на
примере выше.6. Установка ClamAV
Обновляем базы:yum remove rpmforge-release -y
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
yum install clamav clamav-server clamsmtp –y
freshclam -v
Устанавливаем автообновление баз:freshclam -d
mv /etc/clamsmtpd.conf /etc/clamsmtpd.conf.orig
vi /etc/clamsmtpd.conf
OutAddress: 10026
TimeOut: 180
KeepAlives: 0
XClient: on
Listen: 127.0.0.1:10025
ClamAddress: /var/run/clamav/clamd.sock
Header: X-Virus-Scanned: ClamAV using ClamSMTP
TempDirectory: /var/tmp
Action: drop
Quarantine: on
User: clam
Добавляем в main.cf строчки:chown clam:mail -R /var/run/clamd.clamsmtp/
chown clam:clam -R /var/lib/clamd.clamsmtp
vi /etc/postfix/main.cf
content_filter = scan:127.0.0.1:10025
receive_override_options = no_address_mappings
Добавляем в master.cf строчки:vi /etc/postfix/master.cf
scan unix - - n - 16 smtp -o smtp_send_xforward_command=yes
Добавляем ниже приведенный конфиг в master.cf:vi /etc/postfix/master.cf
127.0.0.1:10026 inet n - n - 16 smtpd
-o content_filter=
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks_style=host
-o smtpd_authorized_xforward_hosts=127.0.0.0/8
7. Установка PostfixAdmin и Apache
Установим зависимости для Postfixadmin:Скачаем Postfixadmin и настроим его:yum -y install httpd php php-imap php-mbstring php-common php-pdo php-mysql php-cli
Открываем файл /var/www/html/postfixadmin/config.inc.phpcd /var/www/html
wget http://sourceforge.net/projects/postfixadmin/files/postfixadmin/postfixadmin-2.91/postfixadmin-2.91.tar.gz/download -O postfixadmin-2.91.tar.gz
tar -xvzf postfixadmin-2.91.tar.gz
mv postfixadmin-2.91/ postfixadmin
cd postfixadmin
chown -R apache.apache /var/www/html/postfixadmin/templates_c
В этом файле находим строчки которые внизу и меняем их значение на следующие:vi /var/www/html/postfixadmin/config.inc.php
$CONF['configured'] = true;
$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'password';
$CONF['database_name'] = 'mail';
$CONF['encrypt'] = 'dovecot:CRAM-MD5';
$CONF['dovecotpw'] = "/usr/bin/doveadm pw";
$CONF['emailcheck_resolve_domain']='YES';
Ставим все службы в автозагрузку:# chkconfig mysqld on
# chkconfig dovecot on
# chkconfig postfix on
# chkconfig httpd on
# chkconfig postgrey on
# chkconfig clamd on
# chkconfig clamsmtpd on
# chkconfig saslauthd on
8. Настройка DNS сервера
Для того чтобы протестировать почтовый сервер, установите пакет Bind. Установка Bind позволить настроить DNS сервер. После установки Bind, станет доступна служба named – отвечающая за функции DNS сервера.И так, первым делом проверяем наш файл /etc/resolv.conf:
search point.local
nameserver 127.0.0.1
nameserver 192.168.1.2 //Первичный DNS
nameserver 111.222.333.444 //Вторичный DNS
Мы вписали в этот файл два DNS сервера. Первый адрес – это будет наш сервер DNS сервер, второй адрес – провайдерский DNS.Если у вас есть купленное доменное имя – “company.ru” и два DNS сервера хостера/провайдера, то данный пункт по настройке DNS сервера – можно пропустить! Вписав в файл /etc/resolv.conf – IP адреса вашего провайдера. Провайдерские DNS в свою очередь обратятся к DNS серверам вашего хостера. Тем самым обеспечивая работу вашего домена.
После наших изменений в файле – /etc/resolv.conf, данные о зоне “point.local” будут браться из нашего DNS сервера с IP адресом 192.168.1.2. Другие запросы будут разрешатся через DNS сервер провайдера.
Наш почтовый сервер имеет следующий IP адрес 192.168.1.2, он еще у нас должен быть и DNS сервером. Теперь самое главное, установим пакет Bind:
Впишем имя хоста:yum install bind -y
vi /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=mx.point.local
vi /etc/hosts
192.168.1.2 mx.point.local mx
Удаляем Network Manager (NM):# service NetworkManager stop
# chkconfig NetworkManager off
# yum remove dnsmasq -y
# service network restart
# vi /etc/resolv.conf
search point.local
nameserver 127.0.0.1
nameserver 192.168.1.2
nameserver 111.222.333.444
Здесь IP адреса:192.168.1.2 – наш DNS сервер
111.222.333.444 – IP адрес DNS сервера провайдера
Сохраняем на всякие пожарные основной конфигурационный файл демона “named”:
Создаем чистый конфиг файл с настройками внизу:mv /etc/named.conf /etc/named.conf.orig
vi /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
listen-on port 53 { 127.0.0.1; 192.168.1.2; }; # ставим внешний IP интерфейса
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; }; # меняем, даем обращатся всем
allow-query-cache { localhost; 10.0.0.0/24; }; # меняем, добавляем локальную сеть если она есть
allow-recursion { localhost; 10.0.0.0/24;}; # меняем, добавляем локальную сеть если она есть
forwarders { 111.222.333.444; 444.555.666.777; }; # добавляем, ip dns провайдера
dnssec-enable no;
dnssec-validation no;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
# Зона прямого просмотра "point.local"
zone "point.local" {
type master;
file "point.local.fwd";
allow-update {none;};
allow-transfer {192.168.1.10; }; //вторичный DNS
};
# Наша обратная зона просмотра "point.local"
zone "1.168.192.in-addr.arpa" {
type master;
file "point.local.rev";
allow-update {none;};
allow-transfer {192.168.1.10; };
};
include "/etc/named.rfc1912.zones";
Даем права на файл:chown root:named /etc/named.confСоздаем файл прямого просмотра зоны – point.local (forward zone)
vi /var/named/point.local.fwd
$ORIGIN point.local.
$TTL 3D
@ SOA mx.point.local. root.point.local. (12 4h 1h 1w 1h)
@ IN NS mx.point.local.
@ IN MX 10 mail.point.local.
mx.point.local. IN A 192.168.1.2
www IN A 192.168.1.2
mail IN A 192.168.1.2
Создаем файл обратного просмотра зоны – point.local (reverse zone)Здесь за место 1.168.192 – надо указать свою под сеть в обратном порядке.vi /var/named/point.local.rev
А также в при добавлении PTR записи требуется ставить последнею цифру IP адреса,
у нас эта цифра 2, так как IP адрес почтового сервере оканчивается на 2 (192.168.1.2)
$ORIGIN 1.168.192.in-addr.arpa.
$TTL 3D
@ SOA mx.point.local. root.point.local. (12 4h 1h 1w 1h)
@ IN NS mx.point.local.
2 IN PTR mx.point.local.
Проверка работы DNS:service named start
chkconfig named on
nslookup mx.point.local
nslookup 192.168.1.2
nslookup -type=MX point.local
hostname -f
mx.point.local
9. Настройка PostfixAdminreboot
Веб интерфейс PostfixAdmin позволит управлять вашим почтовым сервером. Добавление новых обслуживаемых доменов и почтовых ящиков производится в нем.
Настроим его загрузив веб страницу PostfixAdmin, для этого запустите браузер и введите веб адрес http://127.0.0.1/postfixadmin/setup.php
В окошке Change setup password введите свой пароль. Запомните его, он нам пригодится в дальнейшем.
Во втором окошке появится HASH нашего пароля (шифрованный пароль). Скопируйте эту “белеберду” в буфер.
После того как вы скопировали “hash” в буфер обмена, его нужно вставить в файл:
/var/www/html/postfixadmin/config.inc.phpОткройте этот файл и найдите в нем строчку:
$CONF['setup_password'] = 'changeme';
За место “changeme” ставим наш hash который скопировали в буфер. Получится так:$CONF['setup_password'] = '6c5af4c72af213f0acac5f21d8f95ca1:e59172283d2bb72a5992af8ddc15332cde62f003';
И еще поставьте YES здесь:$CONF['emailcheck_resolve_domain']='YES';
Сохраните файл.Зайдите еще раз на страничку: http://127.0.0.1/postfixadmin/setup.php
Создайте учетку Админа, например “administrator@point.local”, определите его пароль.
Нажмите на кнопке “Add Admin”, появится надпись:
Admin has been added!
(administrator@point.local)
Запомните адрес админа и пароль.Теперь уже заходим на страничку http://127.0.0.1/postfixadmin/
Вводим почтовый адрес админа и пароль.
Добавляем домен “point.local”: Domain List – > New Domain -> point.local
Aliases - Ставим 0
Mailboxes - Ставим 0
Add default mail aliases - Галочка
После появится надпись:Domain has been added!
(point.local)
Создадим первый почтовый ящик, я создал “linux@point.local”.Меню Virtual List -> Add MailBox ->
Username – linux
Password – 123 (sample)
Ну все!
Теперь пришло время тестировать наш почтовый сервер.
Найдите в локальной сети свободный компьютер, настройте сетевые настройки так чтобы он видел почтовый сервер.
Сетевой адрес должен быть в под сети сервера. Не забудьте указать ДНС сервер, у меня он имеет IP адрес почтового сервера.
Откройте почтовый клиент Outlook, укажите адрес вашего сервера и логин/пароль учетной записи linux@point.local
SMTP/POP3 server: mx.point.local
Учетная запись (Account name): linux@point.local
Пароль (password): 123
Примечание: Не забудьте настроить SMTP авторизацию.
Отправьте себе тестовое письмо!
10. Установка и настройка RoundCube Web Mail
На данном этапе у нас есть удобный веб интерфейс для администратора почтового сервера, но нет веб интерфейса для пользователей. Этот досадное недоразумение решается установкой RoundCube:Cоздаем файл roundcube.conf:rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
yum install php php-xml php-mcrypt php-intl php-sqlite php-pgsql
cd /var/www/html
wget http://sourceforge.net/projects/roundcubemail/files/roundcubemail/1.0.3/roundcubemail-1.0.3.tar.gz/download -O roundcubemail-1.0.3.tar.gz
tar xvfz roundcubemail-1.0.3.tar.gz
mv roundcubemail-1.0.3 roundcube
Вписываем следующее:vi /etc/httpd/conf.d/roundcube.conf
Alias /webmail /var/www/html/roundcube
<Directory /var/www/html/roundcube>
AddType application/x-httpd-php .php .php3 .php4 .phtml
# forcing open_base dir do not affect anything
php_admin_value open_basedir /
# AddDefaultCharset UTF-8
AddType text/x-component .htc
<IfModule mod_php4.c>
php_flag display_errors Off
php_flag log_errors On
php_value error_log logs/errors
php_value upload_max_filesize 5M
php_value post_max_size 6M
php_value memory_limit 64M
</IfModule>
<IfModule mod_php5.c>
php_flag display_errors Off
php_flag log_errors On
php_value error_log logs/errors
php_value upload_max_filesize 5M
php_value post_max_size 6M
php_value memory_limit 64M
</IfModule>
<FilesMatch "(\.inc|\~)$">
Order allow,deny
Deny from all
</FilesMatch>
Order deny,allow
Allow from all
</Directory>
Далее создаем базу данных и пользователя:mysqladmin -p create roundcubemail
mysql -p
mysql> GRANT ALL ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY 'password';
mysql> quit
Ставим свой часовой пояс:service httpd restart
chown apache:apache -R /var/www/html/roundcube/temp
chown apache:apache -R /var/www/html/roundcube/logs
vi /etc/php.ini
date.timezone = Asia/Almaty
илиdate.timezone = Europe/Moscow
Далее идем по адресу http://127.0.0.1/roundcube/installer/
и устанавливаем по умолчанию, не меняя никаких настроек, кроме двух
полей, где нужно указать название базы данных и пароль. В нашем случае
название базы будет “roundcubemail”, а пароль указанный ранее
‘password’. В процессе настройки надо обязательно согласится на создание
схемы базы Roundcube (Create Database Scheme или Initialize Database). В
противном случае будет ошибка, и вы не сможете войти на страничку
RoundCube.По окончании установки веб интерфейса, Вам будет предложено скачать и сохранить один конфигурационный файл:
- config.inc.php
/var/www/html/roundcube/config/
Далее открываем файл /var/www/html/roundcube/config/defaults.inc.php и в нем меняем алгоритм по умолчанию на:# vi /var/www/html/roundcube/config/defaults.inc.php
$rcmail_config[‘imap_auth_type’] = cram-md5;А также ставим IP адрес своего почтового хоста чтобы каждый раз не вводить его, логично было бы указать адрес – 127.0.0.1:
$rcmail_config['default_host'] = '127.0.0.1';
В RoundCube нету автозаполнения полей логин и пароль, чтобы включить эту возможность отредактируйте строку:$rcmail_config['login_autocomplete'] = 2;
Также следует включить опцию ‘htmleditor’ в ‘always’.$config['htmleditor'] = 0;
Если у вас всего один домен, и вы не хотите вводит доменную часть
почтового адреса при входе в веб интерфейс, установите заранее свой
домен здесь:$rcmail_config['username_domain'] = 'company.kz';
Если пароль к базе Roundcube был введен с ошибкой, его можно сменить в файле# vi /var/www/html/roundcube/config/db.inc.php
$rcmail_config['db_dsnw'] = 'mysql://roundcube:password@localhost/roundcubemail';
Здесь:roundcube – имя пользователя базы roundcubemail
password – пароль доступа к базе
roundcubemail – сама база веб Интерфейса RoundCube
Если все прошло успешно, удаляем директорию установщика в целях безопасности.
# rm -R -f /var/www/html/roundcube/installer
Пытаемся зайти с Веб интерфейса, в браузере вводим адрес:http://point.local/webmail
илиhttp://point.local/roundcube
Будет выведено окошко, где надо указать:- логин
- пароль
- сервер
Вводим например: - логин: user@point.local
- пароль: 123456
- сервер: point.local
Например, можно добавить возможность закачки всех вложений единым архивом и т.д.
11. Настройка фаерволла iptables
Создаем файл с правилами фаерволла:# vi /etc/sysconfig/firewall.sh
!/bin/bash
Очистка всех цепочек
iptables -Fiptables -F -t nat
iptables -F -t mangle
iptables -X
iptables -X -t nat
iptables -X -t mangle
Политика по умолчанию – запретить все, что не разрешено
iptables -P INPUT DROPiptables -P OUTPUT DROP
iptables -P FORWARD DROP
Разрешаем обращение к lo интерфейсу
iptables -A INPUT -i lo -p all -j ACCEPTiptables -A OUTPUT -o lo -p all -j ACCEPT
Пропускать уже инициированные, а также их дочерние пакеты на вход
iptables -A INPUT -p all -m state –state ESTABLISHED,RELATED -j ACCEPTПропускать новые, инициированные, а также их дочерние на выход
iptables -A OUTPUT -p all -m state –state NEW,ESTABLISHED,RELATED -j ACCEPTРазрешаем пинги с внeшнего интерфейса
iptables -A INPUT -i eth0 -p ICMP -j ACCEPTiptables -A OUTPUT -o eth0 -p ICMP -j ACCEPT
Разрешаем доступ по SSH на 1234 порт сервера
iptables -A INPUT -p tcp –dport 1234 -j ACCEPTiptables -A OUTPUT -p tcp –sport 1234 -j ACCEPT
Разрешаем WWW на 80 порт (для Roundcube и Postfixadmin)
iptables -A INPUT -p tcp –dport 80 -j ACCEPTiptables -A OUTPUT -p tcp –sport 80 -j ACCEPT
Разрешаем почтовый доступ по портам 143 (IMAP), 110(POP3) и 25 (SMTP).
iptables -A INPUT -p tcp -m multiport –dports 25,110,143 -j ACCEPTiptables -A OUTPUT -p tcp -m multiport –sports 25,110,143 -j ACCEPT
Разрешаем ходить DNS запросам по UDP протоколу
iptables -A OUTPUT -p udp -m udp –dport 53 -m state –state NEW,ESTABLISHED,RELATED -j ACCEPTiptables -A INPUT -p udp -m udp –dport 53 -m state –state NEW,ESTABLISHED,RELATED -j ACCEPT
Разрешаем ходить DNS запросам по TCP протоколу
iptables -A OUTPUT -p tcp -m tcp –dport 53 -m state –state NEW,ESTABLISHED,RELATED -j ACCEPTiptables -A INPUT -p tcp -m tcp –dport 53 -m state –state NEW,ESTABLISHED,RELATED -j ACCEPT
Лимитируем запросы по DNS порту
iptables -A INPUT -p udp –dport 53 -m hashlimit –hashlimit-name DNS –hashlimit-above 20/second \–hashlimit-mode srcip –hashlimit-burst 100 –hashlimit-srcmask 28 -j DROP
Даем права на запуск файла (исполняемый файл):
# chmod +x /etc/sysconfig/firewall.sh
Вставляем автозапуск скрипта во время загрузки ОС:vi /etc/rc.d/rc.local
/etc/sysconfig/firewall.sh
12. Установка Fail2BanНа сервер часто ломятся разные роботы (боты), подбирая пароли и логины. Логи почтовой системы от этих ботов растут, и самое главное в конце концов не исключено что, бот подберет правильную пару логин/пароль. Утилита Fail2Ban помогает утихомирить ботов, блокируя через iptables ip адреса хостов ботов.
Откройте файл – /etc/fail2ban/jail.confyum install fail2ban -y
И добавьте в конец файла следующий текст:vi /etc/fail2ban/jail.conf
[roundcube-banhammer]
enabled = true
filter = roundcube.banhammer
action = iptables-multiport[name=roundcube, port="http,https", protocol=tcp]
logpath = /var/log/maillog
findtime = 3600
maxretry = 5
bantime = 3600
[dovecot-banhammer]
enabled = true
filter = dovecot.banhammer
action = iptables-multiport[name=dovecot, port="pop3,pop3s,imap,imaps", protocol=tcp]
logpath = /var/log/maillog
maxretry = 5
findtime = 300
bantime = 3600
ignoreip == 127.0.0.1 192.168.1.2
[postfix-banhammer]
enabled = true
filter = postfix.banhammer
action = iptables-multiport[name=postfix, port="smtp,smtps", protocol=tcp]
# sendmail[name=Postfix, dest=you@mail.com]
logpath = /var/log/maillog
bantime = 3600
maxretry = 5
ignoreip = 127.0.0.1 192.168.1.2
Здесь IP адрес:192.168.1.2 – за место этого IP адреса указываем Ваш внешний белый адрес который не будет проверятся fail2ban. Если их два, указываем их через пробел.
Создаем файл – /etc/fail2ban/filter.d/roundcube.banhammer.conf:
vi /etc/fail2ban/filter.d/roundcube.banhammer.conf
[Definition]
[INCLUDES]
before = common.conf
failregex = roundcube: (.*) Error: Login failed for (.*) from <HOST>\.
roundcube:^\s*(\[(\s[+-][0-9]{4})?\])?(%(__hostname)s roundcube: IMAP Error)?: (FAILED login|Login failed) for .*? from <HOST>(\. .* in .*?/rcube_imap\.php on line \d+ \(\S+ \S+\))?$
ignoreregex =
Создаем файл – /etc/fail2ban/filter.d/dovecot.banhammer.conf:vi /etc/fail2ban/filter.d/dovecot.banhammer.conf
[Definition]
failregex = dovecot: auth-worker\(default\): sql\(.*,<HOST>\): unknown user
dovecot: (pop3|imap)-login: Aborted login \(.*\): .*, \[<HOST>\]
dovecot: (pop3|imap)-login: Disconnected \(auth failed, .*\): .*, \[<HOST>\]
dovecot: auth\(default\): passdb\(.*,<HOST>\)\: Attempted login with password having illegal chars
dovecot: (pop3|imap)-login: Disconnected \(auth failed, .*\): .*, \[<HOST>\]
dovecot: (pop3|imap)-login: Aborted login: .*, \[<HOST>\]
(?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed).*rip=(?P<host>\S*),.*
dovecot.*auth-worker\(default\): sql\(.*,<HOST>\): Password mismatch
dovecot: auth: sql.*,<HOST>.*: Password mismatch
dovecot: auth: sql.*,<HOST>.*: unknown user
ignoreregex =
Создаем файл – /etc/fail2ban/filter.d/postfix.banhammer.conf# vi /etc/fail2ban/filter.d/postfix.banhammer.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
(?i): warning: [-._\w]+\[<HOST>\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed(: [ A-Za-z0-9+/]*={0,2})?\s*$
Connection rate limit exceeded: .* from (.*)\[<HOST>\] for service smtp
ignoreregex =
Чтобы проверить срабатывания правил fail2ban, необходимо чтобы почтовый сервер поработал некоторое время, например 1 день. Далее введите команды:chkconfig fail2ban on
service fail2ban start
В ответ получите вывод, где должна быть строчка с количеством совпадений:fail2ban-regex /var/log/maillog /etc/fail2ban/filter.d/postfix.banhammer.conf
fail2ban-regex /var/log/maillog /etc/fail2ban/filter.d/dovecot.banhammer.conf
Failregex: 6958 total
ЗаключениеПочтовый сервер установлен и настроен, теперь за электронную переписку отвечает связка программ из мира Open Source. Решение бесплатное, гибкое и довольно быстрое. В компании где я работаю, Postfix трудится уже продолжительное время. Управлять таким почтовым сервером легко, даже Windows админ справится с такой задачей, так как мы настроили Веб интерфейс под названием PostfixAdmin. В нем можно быстро создавать почтовые домены, пользователей, настраивать пересылку и автоответчик. И это еще не все его достоинства.
Для обычных пользователей, доступен Веб интерфейс, через который они могут проверять почту, если под рукой не оказалось почтового клиента.
В данном посте в целях более лучшего понимания и упрощения, было решено оставить только самое важное.
Это дает базовый функционал, который в принципе многих удовлетворит.
Если у вас возникнуть вопросы, можете их задавать на специализированном форуме Postfix: www.postfix.ru
Анализатор логов к Postfix
Полезно знать статистику по почтовому серверу, сколько писем отправлен/получено, а также сколько спама отбилось.
Или даже можно узнать что у вас проблема с конфигурационным файлом.
\# yum -y install postfix-perl-scripts
\# perl /usr/sbin/pflogsumm -d yesterday /var/log/maillog >> /home/yesterday.log
Теперь откройте статистику из файла /home/yesterday.log через vi или mcedit.Можно также получить статистику сегодняшнего дня задав параметр – today
\# perl /usr/sbin/pflogsumm -d yesterday /var/log/maillog >> /home/yesterday.log
Установка LogwatchЧтобы каждый день виден статистику по серверу, полезно установить утилиту Logwatch которая будет отправлять на ваш почтовый ящик статистику каждый день, тем самым позволяя вам держать руку на пульсе, если вдруг что случится с вашим почтарем или любым другим серверов.
# yum install logwatchТеперь отредактируйте файл
# vi /usr/share/logwatch/default.conf/logwatch.conf
MailTo = admin@company.ru
MailFrom = Logwatch_Company_Mail
Detail = High
Здесь мы указали что отчет должен отсылаться на ящик admin@company.ruТестовый отчет можно получить если ввести
/etc/cron.daily/0logwatch
Комментариев нет:
Отправить комментарий