From: Maxim Vasilets <maxim.vasilets@gmail.com.>
Newsgroups:
Date: Mon, 10 Aug 2009 14:31:37 +0000 (UTC)
Subject: Установка и настройка Exim с web-интерфейсом Xams во FreeBSD
Установка и настройка Exim с веб-интерфейсом Xams для управления почтовым сервером.
Exim + Xams + MySQL + Courier-Imap + Clam-AV + SpamAssassin + WebMail
В этой статье, я расскажу о решении для почтовых систем на базе Exim с
удобным web-интерфейсом XAMS http://www.xams.org
Демо версию можно посмотреть здесь http://xamsdemo.netmaster.com.ua
Пароль и логин: demo
Причиной написания этой статьи послужил тот факт, что информации в сети
о Xams практически нет, а сама программа очень удобная и решает очень
много насущных вопросов.
Хотя проект Xams развивается медленно, но уже на данный момент он имеет
внушительный набор функций:
* Конфигурирование настроек почтового сервера через web-интерфейс.
* Управление любым количеством почтовых доменов, почтовых ящиков и рассылок.
* Распределение прав для реселлеров по управлению необходимыми доменами.
* Возможность задать квоту на размер почты всего домена и отдельного почтового ящика.
* Управление Spam-фильтром и Антивирусом.
* Каждый пользователь может самостоятельно изменить настройки своего
постового ящика: сменить пароль, выключить/включить спам-фильтр,
выключить/включить антивирус , задать автоответ.
* Есть плагины для Horde и SquirrelMail.
* Управление DNS-зонами Bind9 через web-интерфейс.
Я не буду углубляться в тонкости установки и настройки сопутствующего
софта, информацию об этом можно легко найти в интернете, я остановлюсь
только на ключевых моментах.
Xams мы будем устанавливать на FreeBSD 7.1-RELEASE, с этим у меня
тоже возникли проблемы так как по умолчанию Xams поддерживает только
Linux. Пришлось подправить несколько параметров, создать скрипты запуска
и все заработало на FreeBSD. Для линуксоидов эта статья также послужит
хорошим руководством по установке Xams, хотя некоторые значения и могут
меняться.
Приступим к установке софта, конечно же у кого он уже установлен могут
пропустить этот раздел.
Устанавливаем MySQL (5.1.32)
# cd /usr/ports/databases/mysql51-server/
# make clean && make install
# echo mysql_enable="YES" >> /etc/rc.conf
# /usr/local/etc/rc.d/mysql-server start
Задаем пароль для root
# mysqladmin -u root password 'new_password'
Устанавливаем Apache (2.2.11_3)
При установке не забываем включить модуль SSL
# cd /usr/ports/www/apache22
# make clean && make install
# echo apache22_enable="YES" >> /etc/rc.conf
Устанавливаем Php5 (5.2.9)
Включаем модуль APACHE
# cd /usr/ports/lang/php5
# make config
# make clean && make install
Создаем файл /usr/local/etc/apache22/Includes/php.conf и добавляем туда строчки
# cd /usr/ports/mail/courier-imap/
# make clean && make install
# echo courier_imap_pop3d_ssl_enable="YES" >> /etc/rc.conf
# echo courier_imap_imapd_ssl_enable="YES" >> /etc/rc.conf
Устанавливаем ClamAV (0.94.2)
# cd /usr/ports/security/clamav
# make clean && make install
# echo clamav_freshclam_enable="YES" >> /etc/rc.conf
# echo clamav_clamd_enable="YES" >> /etc/rc.conf
Устанавливаем Xams (0.0.19)
Загружаем Xams с официального сайта http://www.xams.org/pages/download/download.php
Или с альтернативной ссылки http://netmaster.com.ua/files/xams-0.0.19.tar.gz
создаем файл для Apache /usr/local/etc/apache22/Includes/xams.conf
Alias /xams/ "/usr/local/www/xams/"
<Directory /usr/local/www/xams>
Options -Indexes MultiViews
AllowOverride Options
SSLRequireSSL
Order allow,deny
Allow from all
</Directory>
Обратите внимание что мы включаем доступ по https
Создаем файл /usr/local/www/xams/.htaccess для задания необходимых переменных для Xams
php_flag register_globals Off
php_flag allow_call_time_pass_reference Off
php_flag display_errors On
php_flag magic_quotes_gpc Off
php_flag short_open_tag Off
php_value error_reporting 2047
Далее начинаем конфигурировать сервисы, начнем с Courier-Imap
# cd /usr/local/etc/courier-imap
В файле imapd обязательно задаем нужное значение для параметра
IMAP_MAILBOX_SANITY_CHECK=0
Генерим сертификаты для защищенного соединения
# cd /usr/local/share/courier-imap
# dd if=/dev/urandom of=imapd.rand count=1
В файле extra/httpd-ssl.conf в параметрах SSLCertificateFile и
SSLCertificateKeyFile прописываем правильные пути к ним.
Запускаем Apache
# /usr/local/etc/rc.d/apache22 start
Проверяем Xams
Открываем страничку с адресом https://servername/xams/ И
проверяем Xams Для входа используем логин admin и пароль который во
время установки Xams мы добавляли в базу MySQL.
Для начала нужно в разделе XAMS Accounts создать первого
реcеллера, а уже потом создаём первый почтовый домен в разделе
Sites и первого пользователя в разделе Users
(Обратите внимание что после добавления пользователя в Xams его домашняя
папка для писем будет создана только после того как сработает скрипт xmu
прописанный в crontab, в нашем случае он срабатывает каждые 3 минуты.)
Осталось настроить какой нибудь почтовый клиент и проверить всю почтовую систему.
Какой бы вы не выбрали клиент, для всех в настройках учетной записи
должны быть включены параметры для защищенного соединения и
аутентификация при отправке и получении почты
Для POP3 - SSL (порт 995)
Для SMTP - TLS если доступен (порт 25)
Для IMAP - SSL (порт 993)
Имя пользователя при аутентификации обязательно должно указываться
вместе с именем домена (пример: user@example.com)
Примеры настроек разных почтовых клиентов можно посмотреть здесь
http://netmaster.com.ua/docs/screenshots.html
Далее смотрим логи /var/log/maillog и /var/log/exim/mainlog
Проверяем нет ли каких нибудь ошибок.
Работает ли антивирус можно проверить скачав пример вируса допустим с
сайта http://vx.netlux.org/vl.php
В файле /usr/local/www/xams/eximfilter.php я обнаружил ошибку в функции
работы с фильтрами.
Для того что бы исправить ее открываем файл eximfilter.php и на строке
62 заменяем троку
Мы закончили основной этап установки и первичной конфигурации Xams.
Дополнительная настройка
Далее я опишу несколько особых настроек, которые могут вам понадобиться
В файле exim-custom.conf параметром RBL_LIST мы задаем список
публичных черных списков которые помогут вам отбивать спам. Зачастую
некоторые из серверов перестают отвечать, из-за этого обработка писем
затормаживается.
В этом же файле параметром QUOTA_THRESHOLD мы можем задать величину в
процентах, когда пользователю будет отправляться предупреждение о
переполнении почтового ящика.
Почти всегда нам необходимо ограничить максимальный размер письма.
Это задается в файле exim-global.conf
Так же в этой системе не реализована система черных и белых списков.
Эту функцию мы должны добавить сами.
Создаем соответствующие файлы где будут перечислятся доверенные и не доверенные отправители
# touch /usr/local/etc/exim/allowhosts
В этот файл мы будем добавлять ip адреса или адреса сетей отправка писем
с которых не будет блокироваться спам фильтром или публичными черными
списками. (пример: 193.143.223.145 или 193.143.223.128/25)
# touch /usr/local/etc/exim/allowsenders
В этот файл мы добавляем e-mail адреса или домены отправка писем с
которых не будут блокироваться спам фильтром или публичными черными
списками (пример: user@mail.com или *@mail.com)
В этих файлах мы соответственно задаем отправителей, которые точно будут блокироваться
Во всех этих файлах каждое новое значение задается с новой строчки.
Далее в файле exim.conf примерно на строчке 55 мы добавляем
В этом же файле переходим в раздел acl_check_rcpt
Примерно на строчке 273 перед # Default tag мы добавляем
warn message = X-SA-Do-Not-Run: Yes
senders = +allowsenders
log_message = No scanned, e-mail adress is in the trusted list (account $acl_m0 off)
set acl_m6 = 1
warn message = X-SA-Do-Not-Run: Yes
hosts = +allowhosts
log_message = No scanned, ip adress is in the trusted list (account $acl_m0 off)
set acl_m6 = 1
Это позволит не запускать спам фильтр для доверенных писем
Далее находим строчку .ifdef SENDER_VERIFY_CALLBACK_RBL
И немного правим это правило, добавляем наши переменные allowsenders и allowhosts.
Получается вот такое выражение
Осталось добавить блокирующие списки.
Переходим в раздел acl_check_rcpt и в самом начале добавляем 2 строчки
deny senders = +denysenders
message = Sender $sender_address is blocked. Sender is in the deny list
deny hosts = +denyhosts
message = Sender $sender_address is blocked. Sender is in the deny hosts list
Это все что нам необходимо для функциональности белых и черных списков.
Продолжаем дальше.
Exim по умолчанию не добавляет Message-Id для писем в которых его
нет. Этот параметр необходим для идентификации уникальности каждого
письма. Почти всегда это значение задает почтовый клиент и проблем в
таком случае не возникает. Но если почтовый клиент не добавляет это
значений могут возникнуть необъяснимые ошибки, например, отправляется
одно письмо, но каждому адресату приходит столько писем, сколько было
адресов в поле СС
Мы можем заставить Exim добавлять это значений, если почтовый клиент его
не добавил. Для этого переходим в раздел acl_check_content и в самом
начале добавляем
Параметр Message-Id обязательно должен начинаться с прописной буквы, для
этого к началу message_id добавляется символ E
В том же разделе сразу за добавленными нами строчками мы можем задать
типы файлов, которые нельзя передавать или получать по почте.
Для моего почтового сервера я задаю вот такие значения
# Some malicious people have used this file format to spread viruses. Consequently, the mail server has prevented your ma
deny message = Your message contained an ($found_extension) file.
demime = scr:vbs:bat:lnk:pif:com:cmd:exe
(Обратите внимание что эти функции, установка Message-Id и
блокирование запрещенных файлов, будут работать только тогда когда в
файле exim-custom.conf установлен параметр VIRUS_MODULE = On)
Иногда случается так что спам-фильтр отбрасывает необходимые и зачастую
очень важные письма. Как решения я могу предложить вариант когда все
письма отмеченные как спам складываются в отдельный почтовый ящик в
которым письма старше допустим 30 дней автоматически удаляются. В любой
момент администратор почтового сервера может зайти на этот ящик по
web-почте и восстановить те письма которые не были доставлены адресату.
Реализуем эту функцию
C помощью Xams создаем пользователя rejected_spam
Для сохранения отброшенных писем задаем несколько параметров в файле /usr/local/etc/xams/sa-exim.conf
Вместо DomainName указываем правильный путь к домашней папке вашего домена
Установка и настройка WebMail
Есть много web-интерфейсов для почты, например Horde-Imp
(http://horde.org/imp/) или SquirrelMail (http://www.squirrelmail.org/)
Я предпочитаю использовать Nutsmail-BlueHive, это основанный на
SquirrelMail почтовый web-клиент. Он довольно прост в использовании и в
настройке с симпатичным дизайном.
Скриншеты вы можете посмотреть здесь http://netmaster.com.ua/docs/bluehive-screenshots.html
Скачиваем архив здесь (http://netmaster.com.ua/files/bluehive-webmail.tgz)
Устанавливаем pear-DB (1.7.13,1)
Для некоторых компонентов нам понадобится это дополнение
# cd /usr/ports/databases/pear-DB
# make clean && make install
Распаковываем архив в папку /usr/local/www/webmail
Создаем конфигурационный файл /usr/local/etc/apache22/Includes/webmail.conf для Apache
Alias /webmail/ "/usr/local/www/webmail/"
<Directory /usr/local/www/webmail>
Options -Indexes MultiViews
AllowOverride Options
SSLRequireSSL
Order allow,deny
Allow from all
</Directory>
Наша web-почта работает по протоколу Imap но без шифрования. Только для
web-почты мы запустим демон Imap без SSL на локальном адресе 127.0.0.1
В /etc/rc.conf добавим строку courier_imap_imapd_enable=YES
В его настройках в файле /usr/local/etc/courier-imap/imapd в параметре
ADDRESS задаем значение 127.0.0.1
И запускаем его
# /usr/local/etc/rc.d/courier-imap-imapd start
Теперь настраиваем web-почту. Запускаем скрипт конфигурирования
# /usr/local/www/webmail/config/conf.pl
Все настройки задаем по собственному усмотрению, в разделе Server
Settings обязательно задаем настройки Imap сервера - localhost:143, SMTP
сервера localhost:25 и в параметре Domain задаем домен
В поставке Xams под Horde и SquirrelMail идут несколько плагинов для
смены пароля и автоответа.
Нас интересуют плагины для SquirrelMail.
Переходим в папку xams-0.0.19/contrib/squirrelmail
(В начале установки Xams когда вы запускали скрипт генерации настроек
(autogen.sh) он должен был в этих плагинах прописать нужные настройки
для доступа к MySQL базе, если вы не запускали этот скрипт просто
отредактируйте файл xams_global/config.php)
Копируем все 3 папки в папку плагинов нашей web-почты /usr/local/www/webmail/plugins
Копируем файл xams-0.0.19/contrib/squirrelmail/xams-webmail.conf в папку с файлами
конфигурации /usr/local/etc/xams
Теперь в плагинах нам нужно указать где лежит этот файл конфигурации
Открываем на редактирование файл /usr/local/www/webmail/plugins/xams_global/config.php
И в параметре define('_CONFIG_FILE', ''); прописываем правельный путь
Запускаем скрипт конфигурации /usr/local/www/webmail/config/conf.pl
И в разделе Plugins включаем 3 наших плагина
xams_global, xams_autoreply, xams_chpasswd
Теперь в нашей web-почте в разделе Options появились дополнительные
пункты по смене пароля и автоответа (Password changing, Autoreply update).
Я сделал еще один плагин для Xams позволяющий каждому пользователю
отключать для себя спам-фильтр и антивирус для входящих и исходящих
сообщений.
Качаем архив с http://netmaster.com.ua/files/xams_spamantivir.tgz
Точно так же распаковываем архив в /usr/local/www/webmail/plugins
Запускаем скрипт конфигурации и включаем этот плагин.
Перезапускаем Apache и пробуем зайти на web-почту
https://servername/webmail/
Не забываем что логин нужно писать полный вместе с именем домена (user@exemple.com)
SPF-записи
Очень советую на вашем DNS добавить SPF-запись.
http://www.openspf.org/Introduction
http://ru.wikipedia.org/wiki/Sender_Policy_Framework
Не буду сильно углубляться, скажу только что благодаря этой записи вы
можете точно указать какие ip-адреса могут отправлять почту от имени
вашего домена. Это позволит получателям застраховаться от получения
поддельных писем с вашего домена.
Пример: example.com. IN TXT "v=spf1 +mx -all"
v= определяет используемую версию SPF.
+mx разрешает прием писем, если отправляющий узел указан в одной из MX-записей для example.com.
Строка завершается "-all" - указанием того, что сообщения, не прошедшие верификацию
с использованием перечисленных механизмов, следует отвергать.
В конце конфигурационного файла Bind9 /etc/namedb/named.conf, что бы
подключить файлы что будет генерить Xams, дописываем строчку
include "/etc/namedb/xams-zones.conf";
После того как мы в Xams будем менять настройки DNS нужно перегружать
Bind, что бы не делать это вручную пишем не большой скрипт и
прописываем его в crontab
Для того что бы пункт по управленю DNS появился в меню нужно в файле
/usr/local/www/xams/include/xml/menu.xml на строчке 21 разкомонтировать
параметр
Открываем Xams https://servername/xams/, заходим в раздел DNS,
нажимаем create a new Zone.
(Я обнаружил ошибку при автоматическом увеличении поля serial для зоны,
последнее число изменялось в диапазоне от 1-9 а не как задумывалось
1-99, при этом если вы за день делали больше чем 10 изменения счетчик
становился меньше чем в начале дня. Для исправления переходим в фале
/usr/local/www/xams/include/dns.php на строчку 85 и заменяем число 9 на
8 что бы строчка выглядела так $date_stored2 =
(int)substr($this->serial, 8, 2); )
Ссылки по стать:
Оригинал статьи: http://netmaster.com.ua/docs/xams.html
Официальный сайт Xams: http://www.xams.org
Демо Xams: http://xamsdemo.netmaster.com.ua
Альтернативная ссылка для скачивания Xams: http://netmaster.com.ua/files/xams-0.0.19.tar.gz
Дополнительный плагин под Xams: http://netmaster.com.ua/files/xams_spamantivir.tgz
Примеры конфигурационных файлов Xams: http://netmaster.com.ua/files/xams_conf.zip
Настройки почтовых клиентов: http://netmaster.com.ua/docs/screenshots.html
Примеры вирусов для проверки антивируса: http://vx.netlux.org/vl.php
Web-почта: http://netmaster.com.ua/files/bluehive-webmail.tgz
Скриншеты web-почты: http://netmaster.com.ua/docs/bluehive-screenshots.html
Дополнительные ссылки:
Sa-Exim-Stats - Анализатор логов Sa-Exim с выводом статистики http://nossie.addicts.nl/projects/sa-exim-stats
Exilog - Анализатор логов Exim с очень удобным web-интерфейсом http://butch.blog.ru/8083427.html
1179 Прочтений • [Установка и настройка Exim с web-интерфейсом Xams во FreeBSD (exim web mail freebsd imap)] [08.05.2012] [Комментариев: 0]