Установка и настройка Exim с web-интерфейсом Xams во FreeBSD
Демо версию можно посмотреть здесь 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
Код: Выделить всё
# mysqladmin -u root password 'new_password'
При установке не забываем включить модуль SSL
Код: Выделить всё
# cd /usr/ports/www/apache22
# make clean && make install
# echo apache22_enable="YES" >> /etc/rc.conf
Включаем модуль APACHE
Код: Выделить всё
# cd /usr/ports/lang/php5
# make config
# make clean && make install
Создаем файл /usr/local/etc/apache22/Includes/php.conf и добавляем туда строчки
Код: Выделить всё
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
DirectoryIndex index.php
Код: Выделить всё
# cd /usr/ports/lang/php5-extensions
# make config
Код: Выделить всё
# make clean && make install
Код: Выделить всё
# cd /usr/ports/lang/perl5.8
# make clean && make install
Код: Выделить всё
# cpan
cpan > install DBI
cpan > force install DBD::mysql
cpan > install Unix::Syslog
cpan > install CDB_File
cpan > install Config::IniFiles
cpan > install File:chdir
Код: Выделить всё
# cd /usr/ports/mail/exim-sa-exim
# make clean && make WITH_MYSQL=YES && make install
Код: Выделить всё
# /etc/rc.d/sendmail stop
И создаем ссылку на exim
Код: Выделить всё
# mv /usr/sbin/sendmail /usr/sbin/sendmail.old
# ln -s /usr/local/sbin/exim /usr/sbin/sendmail
Код: Выделить всё
# echo sendmail_enable="NO" >> /etc/rc.conf
# echo sendmail_submit_enable="NO" >> /etc/rc.conf
# echo sendmail_outbound_enable="NO" >> /etc/rc.conf
# echo sendmail_msp_queue_enable="NO" >> /etc/rc.conf
# echo spamd_enable="YES" >> /etc/rc.conf
# echo exim_enable="YES" >> /etc/rc.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
Код: Выделить всё
# 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 с официального сайта http://www.xams.org/pages/download/download.php
Или с альтернативной ссылки http://netmaster.com.ua/files/xams-0.0.19.tar.gz
Код: Выделить всё
# wget http://netmaster.com.ua/files/xams-0.0.19.tar.gz
Распаковываем файл
Код: Выделить всё
# tar zxvf xams-0.0.19.tar.gz
Далее копируем файл autogen.conf.orig в autogen.conf и изменяем в нем нужные нам параметры
Код: Выделить всё
# cd xams-0.0.19
# cp autogen.conf.orig autogen.conf
Код: Выделить всё
VERSION = 0.0.19
XAMS_USER = mailnull
XAMS_PID_DIR = /var/run/exim
XAMS_BINDIR = /usr/local/xams/
XAMS_CONFIG_DIR = /usr/local/etc/xams
XAMS_CONFIG = xams.conf
EXIM_CONFIG_DIR = /usr/local/etc/exim
EXIM_BINDIR = /usr/local/sbin/
EXIM_PID_DIR = /var/run/exim
EXIM_SPOOL_DIR = /var/spool/exim
EXIM_USER = mailnull
EXIM_GROUP = mail
MAIL_GROUP = mail
XAMS_SQL_HOST = localhost
XAMS_SQL_DATABASE = xamsdb
XAMS_SQL_USER = xamsusr
XAMS_SQL_PASSWORD = db_password
MYSQL_SETNAMES = UTF8
EXIM_SQL_HOST = localhost
EXIM_SQL_DATABASE = xamsdb
EXIM_SQL_USER = xamsusr
EXIM_SQL_PASSWORD = db_password
MAILSCANNER_INCOMING = /var/spool/exim-incoming
MAILSCANNER_OUTGOING = /var/spool/exim-outgoing
MAILSCANNER_OUTGOING_LOG = /var/log/exim-outgoing
COURIER_SOCKET_DIR = /var/run/authdaemond
MAILDIR = /var/mail
XAMS_GUI_DIR = /usr/local/www/xams
WEBMAIL_DIR = /usr/local/www/webmail
XMU_BACKUP_DIR = /usr/local/etc/xams/archives
PHP_PATH = /usr/local/bin/php
PERL_PATH = /usr/bin/perl
подправить 43 строчку, заменить с
Код: Выделить всё
test -x /usr/bin/stat && chmod $(stat -c %a $f) $f2
Код: Выделить всё
test -x /usr/bin/stat && chmod $( stat -f %Lp $f) $f2
Теперь можем запускать скрипт autogen.sh
Код: Выделить всё
# ./autogen.sh
для создания структуры базы данных для Xams
Выполняем скрипты SQL
Код: Выделить всё
# cd xams-0.0.19/database/mysql
# mysql -p < xams-create.sql
# mysql -p xamsdb < xams-struct.sql
# mysql -p xamsdb < xams-data.sql
Код: Выделить всё
# mysql -p xamsdb
mysql> INSERT INTO pm_admins (Name, Password, Added) VALUES ("admin", MD5("password"), NOW());
Создаем все необходимые папки
Код: Выделить всё
# mkdir /var/run/exim
# mkdir /usr/local/xams/
# mkdir /usr/local/etc/xams
# mkdir /usr/local/www/xams
# mkdir /usr/local/www/xams/cache
# chown -R www:www /usr/local/www/xams/
# mkdir /usr/local/etc/xams/archives
# mkdir /usr/local/etc/xams/autoreply
# chown www:wheel /usr/local/etc/xams/autoreply/
# chmod g+wx /usr/local/etc/xams/autoreply/
# chown mailnull:wheel /usr/local/etc/xams/
# chown mailnull:wheel /usr/local/etc/xams/archives/
Код: Выделить всё
# cp -R xams-0.0.19/gui/* /usr/local/www/xams/
# cp xams-0.0.19/config/exim4/*.conf /usr/local/etc/xams/
# cp xams-0.0.19/config/exim4/mysql/*.conf /usr/local/etc/xams/
# cp xams-0.0.19/config/xams/xams.conf /usr/local/etc/xams/
# cp xams-0.0.19/docs/man/* /usr/share/man/man8/
# cp xams-0.0.19/scripts/*.pm /usr/local/lib/perl5/5.8.9/
# cp xams-0.0.19/scripts/authdaemon /usr/local/xams/
# cp xams-0.0.19/scripts/export_dns.pl /usr/local/xams/
# cp xams-0.0.19/scripts/get_maildirsize /usr/local/xams/
# cp xams-0.0.19/scripts/xmu /usr/local/xams/
[apache] Alias /xams/ "/usr/local/www/xams/"
<Directory /usr/local/www/xams>
Options -Indexes MultiViews
AllowOverride Options
SSLRequireSSL
Order allow,deny
Allow from all
</Directory>[/apache]
Обратите внимание что мы включаем доступ по 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
Код: Выделить всё
# 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
Код: Выделить всё
# openssl req -new -x509 -days 3650 -nodes -out imapd.pem -keyout imapd.pem
# openssl gendh -rand imapd.rand 512 >>imapd.pem
# openssl x509 -subject -dates -fingerprint -noout -in imapd.pem
# rm imapd.rand
Тоже самое делаем для сертификата под POP3
Код: Выделить всё
# dd if=/dev/urandom of=pop3d.rand count=1
# openssl req -new -x509 -days 3650 -nodes -out pop3d.pem -keyout pop3d.pem
# openssl gendh -rand pop3d.rand 512 >>pop3d.pem
# openssl x509 -subject -dates -fingerprint -noout -in pop3d.pem
# rm pop3d.rand
Что бы Courier-Imap мог авторизироваться в базе xams нужно заменить
стандартный демон courier-authdaemond на демон который идет вместе с Xams
Для этого нужно создать скрипт для запуска /usr/local/etc/rc.d/xams-authdaemond.sh
Код: Выделить всё
#!/bin/sh
#
# An rc.subr-style startup script for xams-authdaemond service.
# PROVIDE: xams_authdaemond
# REQUIRE: LOGIN
# KEYWORD: FreeBSD shutdown
# Define these xams_authdaemond_* variables in one of these files:
# /etc/rc.conf
# /etc/rc.conf.local
#
# DO NOT CHANGE THESE DEFAULT VALUES HERE
xams_authdaemond_enable=${xams_authdaemond_enable-"NO"}
. /etc/rc.subr
name="xams_authdaemond"
rcvar=`set_rcvar`
command="/usr/local/xams/authdaemon"
start_cmd="authdaemond_cmd start"
stop_cmd="authdaemond_cmd stop"
restart_cmd="authdaemond_cmd stop && authdaemond_cmd start"
rundir=/var/run/authdaemond/
pidfile="${rundir}/authdaemon-xams.pid"
procname="/usr/local/xams/sbin/authdaemon"
load_rc_config $name
authdaemond_cmd () {
case $1 in
start)
echo -n "Starting XAMS authdaemon: "
${command}
echo "${command}."
;;
stop)
echo -n "Stopping XAMS authdaemon: "
if [ -e $pidfile ] ; then
kill `cat $pidfile`
echo "${command}."
else
echo "no ${command} found running."
fi
;;
esac
}
run_rc_command "$1"
Делаем файл исполняемым
Код: Выделить всё
# chmod a+x /usr/local/etc/rc.d/xams-authdaemond.sh
Даем папкам и файлам права на доступ
Код: Выделить всё
# chown mailnull:mail /var/run/authdaemond
# chown mailnull:mail /var/run/exim/
Код: Выделить всё
# /usr/local/etc/rc.d/xams-authdaemond.sh start
# /usr/local/etc/rc.d/courier-imap-imapd-ssl start
# /usr/local/etc/rc.d/courier-imap-pop3d-ssl start
Настраиваем ClamAV
Настраиваем по своему усмотрению ClamAV и запускаем его
Код: Выделить всё
# /usr/local/etc/rc.d/clamav-clamd start
Код: Выделить всё
# /usr/local/etc/rc.d/clamav-freshclam start
В файле /usr/local/etc/xams/sa-exim.conf меняем параметр SAspamcpath
на SAspamcpath: /usr/local/bin/spamc
Код: Выделить всё
# cd /usr/local/etc/mail/spamassassin
Для начала обновим динамические правила
Код: Выделить всё
# /usr/local/bin/sa-update --nogpg
И добавим выполнение этой команды по расписанию, добавим в crontab примерно вот такую запись
Код: Выделить всё
# Update dynamic rules for SpamAssassin
* 8 * * * root /usr/local/bin/sa-update --nogpg && /usr/local/etc/rc.d/sa-spamd restart > /dev/null
Далее продолжаем настройку
Код: Выделить всё
# cp local.cf.sample local.cf
В файле local.cf я бы рекомендовал изменить некоторые настройки
Раскомментируем параметр
Код: Выделить всё
use_bayes 1
bayes_auto_learn 1
Добавляем
Код: Выделить всё
bayes_auto_learn_threshold_nonspam -1
bayes_auto_learn_threshold_spam 12.0
use_auto_whitelist 1
Код: Выделить всё
# /usr/local/etc/rc.d/sa-spamd start
По умолчанию значение при котором письмо считается спамом задается в файле /usr/local/etc/mail/spamassassin/local.cf параметром required_score
Но при использовании sa-exim это значение задается в файле /usr/local/etc/xams/sa-exim.conf параметрами Sapermreject и Satempreject
Задаете значения по своему усмотрению, по умолчанию эти значения равны 6 и 7 соответственно.
В том же файле что бы не сохранять отброшенные письма и письма с ошибками выключаем несколько параметров
Код: Выделить всё
SAtimeoutSavCond: 0
SAerrorSavCond: 0
SAdevnullSavCond: 0
SApermrejectSavCond: 0
SAtemprejectSavCond: 0
SAspamacceptSavCond: 0
SAnotspamSavCond: 0
Код: Выделить всё
# mv /usr/local/etc/exim/configure /usr/local/etc/exim/configure.dist
# mv /usr/local/etc/exim/sa-exim.conf /usr/local/etc/exim/sa-exim.conf.dist
# ln -s /usr/local/etc/xams/exim.conf /usr/local/etc/exim/configure
# ln -s /usr/local/etc/xams/sa-exim.conf /usr/local/etc/exim/sa-exim.conf
# cd /usr/local/etc/xams/
В файле exim-custom.conf меняем настройки
Раскомментируем параметры
Код: Выделить всё
TLS_ENCRYPTION = On
VIRUS_MODULE = On
SPAMASSASSIN_MODULE = On
SENDER_VERIFY_CALLBACK_DNS = true
SENDER_VERIFY_CALLBACK_DYNAMIC = true
SENDER_VERIFY_CALLBACK_RBL = true
RBL_LIST = cbl.abuseat.org : dnsbl.sorbs.net : dnsbl.njabl.org : cbl.abuseat.org
Код: Выделить всё
av_scanner = clamd:/var/run/clamav/clamd.ctl
Код: Выделить всё
av_scanner = clamd:/var/run/clamav/clamd.sock
Код: Выделить всё
local_scan_path = /usr/lib/exim4/local_scan/sa-exim.so
Код: Выделить всё
# cd /usr/local/etc/xams/
# openssl genrsa 1024 > server.key
# openssl req -new -key server.key -x509 -days 3650 -out server.crt
Код: Выделить всё
tls_certificate = /usr/local/etc/xams/server.crt
tls_privatekey = /usr/local/etc/xams/server.key
Код: Выделить всё
# /usr/local/xams/xmu --cdbdomlist --homedirs --autoreply
Запускаем Exim
Код: Выделить всё
# /usr/local/etc/rc.d/exim start
Код: Выделить всё
# cd /usr/local/etc/apache22
Для включения SSL в Апаче в конце файла httpd.conf разкоментируем строку
Код: Выделить всё
Include etc/apache22/extra/httpd-ssl.conf
Далее если сертификаты не созданы создаем их вручную
Код: Выделить всё
# openssl genrsa 1024 > httpd.key
# openssl req -new -key httpd.key -x509 -days 3650 -out httpd.crt
В файле extra/httpd-ssl.conf в параметрах SSLCertificateFile и
SSLCertificateKeyFile прописываем правильные пути к ним.
Запускаем Apache
Код: Выделить всё
# /usr/local/etc/rc.d/apache22 start
Открываем страничку с адресом https://servername/xams/ и проверяем Xams Для входа используем логин admin и пароль который во время установки Xams мы добавляли в базу MySQL.
Для начала нужно в разделе XAMS Accounts создать первого реcеллера, а уже потом создаём первый почтовый домен в разделе Sites и первого пользователя в разделе Users
Добавляем запись в crontab
Код: Выделить всё
# Update XAMS's domains & users
*/3 * * * root /usr/local/xams/xmu --cdbdomlist --homedirs --autoreply > /dev/null
Осталось настроить какой нибудь почтовый клиент и проверить всю почтовую систему.
Какой бы вы не выбрали клиент, для всех в настройках учетной записи должны быть включены параметры для защищенного соединения и аутентификация при отправке и получении почты
Для 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 заменяем троку
Код: Выделить всё
<h1><?php echo $tl->get('')m-Filter Configuration ?></h1>
Код: Выделить всё
<h1><?php echo $tl->get('Exim-Filter Configuration') ?></h1>
Дополнительная настройка
Далее я опишу несколько особых настроек, которые могут вам понадобиться
В файле exim-custom.conf параметром RBL_LIST мы задаем список публичных черных списков которые помогут вам отбивать спам. Зачастую некоторые из серверов перестают отвечать, из-за этого обработка писем затормаживается.
У меня этот список выглядит так
Код: Выделить всё
RBL_LIST = cbl.abuseat.org : dnsbl.sorbs.net : list.dsbl.org : multihop.dsbl.org : sbl-xbl.spamhaus.org : bl.spamcop.net
Почти всегда нам необходимо ограничить максимальный размер письма.
Это задается в файле exim-global.conf
Код: Выделить всё
message_size_limit = 15M
return_size_limit = 30K
bounce_return_size_limit = 30K
Так же в этой системе не реализована система черных и белых списков.
Эту функцию мы должны добавить сами.
Создаем соответствующие файлы где будут перечислятся доверенные и не доверенные отправители
Код: Выделить всё
# touch /usr/local/etc/exim/allowhosts
Код: Выделить всё
# touch /usr/local/etc/exim/allowsenders
Код: Выделить всё
# touch /usr/local/etc/exim/denysenders
# touch /usr/local/etc/exim/denyhosts
Далее в файле exim.conf примерно на строчке 55 мы добавляем
Код: Выделить всё
hostlist allowhosts = /usr/local/etc/exim/allowhosts
addresslist allowsenders = /usr/local/etc/exim/allowsenders
addresslist denysenders = /usr/local/etc/exim/denysenders
hostlist denyhosts = /usr/local/etc/exim/denyhosts
В этом же файле переходим в раздел 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. Получается вот такое выражение
Код: Выделить всё
.ifdef SENDER_VERIFY_CALLBACK_RBL
# Sender callback verification for hosts/domains blacklisted by RBL
deny sender_domains = ! +local_domains : ! +relay_to_domains : ! +sender_callback_domains
senders = ! +allowsenders
hosts = ! +relay_from_hosts : ! +allowhosts
! authenticated = *
log_message = Listed in RBL $dnslist_domain${if !eq {$dnslist_text}{} { ($dnslist_text)}{}} - Callback check forced
message = Sender verification failed
dnslists = RBL_LIST
! verify = sender/defer_ok/callout=10s,defer_ok
.endif
Осталось добавить блокирующие списки.
Переходим в раздел 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 и в самом начале добавляем
Код: Выделить всё
warn condition = ${if !def:h_Message-Id: {1}}
message = Message-Id: <E$message_id@$primary_hostname>
log_message = Added Message-Id <E$message_id@$primary_hostname>
В том же разделе сразу за добавленными нами строчками мы можем задать типы файлов, которые нельзя передавать или получать по почте. Для моего почтового сервера я задаю вот такие значения
Код: Выделить всё
# 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
Код: Выделить всё
SApermrejectSavCond: 1
SApermrejectsave: /var/mail/DomainName/rejected_spam
SAtemprejectSavCond: 1
SAtemprejectsave: /var/mail/DomainName/rejected_spam
Теперь для удаления писем старше 30 дней в crontab добавляем запись
Код: Выделить всё
0 1 * * * root /usr/bin/find /var/mail/DomainName/rejected_spam -type f -mtime +30 -exec rm {} \;
Установка и настройка 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/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>
В /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
В поставке 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
Код: Выделить всё
# cp xams-0.0.19/contrib/squirrelmail/xams-webmail.conf /usr/local/etc/xams
Код: Выделить всё
define('_CONFIG_FILE', '/usr/local/etc/xams/xams-webmail.conf');
И в разделе 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@example.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" - указанием того, что сообщения, не прошедшие верификацию с использованием перечисленных механизмов, следует отвергать.
Настраиваем управление DNS с помощью Xams
Копируем файлы конфигурации в папку Xams
Код: Выделить всё
# cp xams-0.0.19/config/bind/* /usr/local/etc/xams
Код: Выделить всё
# mkdir /etc/namedb/xams-zones/
Подправляем файл /usr/local/etc/xams/named_master_template, указываем правильные пути
Код: Выделить всё
zone "<<name>>" {
type master;
file "/etc/namedb/xams-zones/<<name>>";
};
Код: Выделить всё
zone_files = /etc/namedb/xams-zones/
zone_template = /usr/local/etc/xams/zone_template
named_file = /etc/namedb/xams-zones.conf
named_master_template = /usr/local/etc/xams/named_master_template
named_slave_template = /usr/local/etc/xams/named_slave_template
В конце конфигурационного файла Bind9 /etc/namedb/named.conf, что бы подключить файлы что будет генерить Xams, дописываем строчку
Код: Выделить всё
include "/etc/namedb/xams-zones.conf";
После того как мы в Xams будем менять настройки DNS нужно перегружать Bind, что бы не делать это вручную пишем не большой скрипт и прописываем его в crontab
Создаем скрипт
Код: Выделить всё
# touch /usr/local/xams/dns_reload.sh
# chmod a+x /usr/local/xams/dns_reload.sh
#!/bin/sh
DCOUNT=`/usr/local/xams/xmu --update-bind | grep "No zones to update" | wc -l`
if [ $DCOUNT = 0 ]; then
/usr/sbin/rndc reload
fi
Код: Выделить всё
*/3 * * * * root /usr/local/xams/dns_reload.sh > /dev/null
Открываем 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); )
Ссылки по статьe:
Оригинал статьи: 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