Виртуальные пользователи и домены с Postfix, Courier, MySQL и SquirrelMail (Ubuntu 13.10)
Это руководство существует для этих версий ОС
- Ubuntu 13.10 (дерзкая саламандра)
- Ubuntu 11.04 (Natty Narwhal)
На этой странице
- 1 Предварительное примечание
- 2. Установите Postfix, Courier, Saslauthd, MySQL, phpMyAdmin.
- 3. Применение исправления квоты к Postfix
- 4 Создание базы данных MySQL для Postfix/Courier
- 5 Настройка Postfix
- 6 Настройка Saslauthd
- 7 Настройка курьера
- 8 Изменить файл /etc/aliases
- 9 Установите amavisd-new, SpamAssassin и ClamAV
- 10. Установите Razor, Pyzor и DCC и настройте SpamAssassin
Это руководство защищено авторскими правами (c) 2014 Falko Timme & Srijan Kishore. Он основан на руководстве Кристофа Хааса, которое вы можете найти на http://workaround.org. Вы можете использовать это руководство по лицензии Creative Commons 2.5 или любой более поздней версии.
В этом документе описывается, как установить почтовый сервер Postfix, основанный на виртуальных пользователях и доменах, то есть на пользователях и доменах, находящихся в базе данных MySQL. Я также продемонстрирую установку и настройку Courier (Courier-POP3, Courier-IMAP), чтобы Courier мог аутентифицироваться в той же базе данных MySQL, которую использует Postfix.
Полученный сервер Postfix поддерживает SMTP-AUTH, TLS и квоты (по умолчанию квота не встроена в Postfix, я покажу, как соответствующим образом исправить ваш Postfix). Пароли хранятся в базе данных в зашифрованном виде (большинство документов, которые я нашел, имели дело с паролями в виде простого текста, что представляет угрозу безопасности). Кроме того, в этом руководстве рассматривается установка Amavisd, SpamAssassin и ClamAV, чтобы электронные письма сканировались на наличие спама и вирусов. Я также покажу, как установить SquirrelMail в качестве интерфейса веб-почты, чтобы пользователи могли читать и отправлять электронные письма и менять свои пароли.
Преимущество такой «виртуальной» установки (виртуальные пользователи и домены в базе данных MySQL) состоит в том, что она гораздо более эффективна, чем установка, основанная на «реальных» системных пользователях. С этой виртуальной настройкой ваш почтовый сервер может обслуживать тысячи доменов и пользователей. Кроме того, его легче администрировать, потому что вам нужно иметь дело с базой данных MySQL только при добавлении новых пользователей/доменов или редактировании существующих. Больше никаких команд postmap для создания файлов базы данных, никакой перезагрузки Postfix и т. д. Для администрирования базы данных MySQL вы можете использовать веб-инструменты, такие как phpMyAdmin, которые также будут установлены в этом руководстве. Третье преимущество заключается в том, что пользователи имеют адрес электронной почты в качестве имени пользователя (вместо имени пользователя и адреса электронной почты), что легче понять и запомнить.
Это руководство задумано как практическое руководство; он не охватывает теоретических основ. Они рассматриваются во многих других документах в Интернете.
Этот документ предоставляется без каких-либо гарантий! Хочу сказать, что это не единственный способ настройки такой системы. Есть много способов достичь этой цели, но я выбираю именно этот. Я не даю никаких гарантий, что это сработает для вас!
1 Предварительное примечание
Это руководство основано на сервере Ubuntu 13.10 (Saucy Salamander), поэтому вам следует настроить базовую установку сервера Ubuntu 13.10, прежде чем продолжить работу с этим руководством. Система должна иметь статический IP-адрес. В этом руководстве я использую 192.168.0.100 в качестве своего IP-адреса и server1.example.com в качестве имени хоста.
Убедитесь, что вы вошли в систему как root (введите
sudo su
чтобы стать root), потому что мы должны выполнить все шаги из этого руководства как пользователь root.
Очень важно сделать /bin/sh символической ссылкой на /bin/bash...
dpkg-reconfigure dash
Использовать тире в качестве системной оболочки по умолчанию (/bin/sh)? <-- Нет
... и что вы отключите AppArmor:
/etc/init.d/apparmor stop
update-rc.d -f apparmor remove
apt-get remove apparmor apparmor-utils
2 Установите Postfix, Courier, Saslauthd, MySQL, phpMyAdmin
Чтобы установить Postfix, Courier, Saslauthd, MySQL и phpMyAdmin, мы просто запускаем
apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl phpmyadmin apache2 libapache2-mod-php5 php5 php5-mysql libpam-smbpass
Вам будет задано несколько вопросов:
Новый пароль для пользователя \root\ MySQL: <-- yourrootsqlpassword
Повторите пароль для пользователя \root\ MySQL: <-- yourrootsqlpassword
Создать каталоги для веб-администрирования? <-- Нет
Общий тип почтовой конфигурации: <-- Интернет-сайт
Системное почтовое имя: <-- server1.example.com
Требуется SSL-сертификат <-- Хорошо
Веб-сервер для перенастройки автоматически: <-- apache2
Настроить базу данных для phpmyadmin с помощью dbconfig-common? <-- Нет
3 Примените патч Quota к Postfix
Нам нужно получить исходники Postfix, исправить его с помощью патча quota, собрать новые пакеты Postfix .deb и установить эти пакеты .deb:
apt-get build-dep postfix
cd /usr/src
apt-get source postfix
(Убедитесь, что вы используете правильную версию Postfix в следующих командах. У меня установлен Postfix 2.10.2. Вы можете узнать свою версию Postfix, запустив
postconf -d | grep mail_version
Вывод должен выглядеть так:
:/usr/src#
wget http://vda.sourceforge.net/VDA/postfix-vda-v13-2.10.0.patch
cd postfix-2.10.2
patch -p1 < ../postfix-vda-v13-2.10.0.patch
Затем откройте debian/rules и измените DEB_BUILD_HARDENING с 1 на 0:
vi debian/rules
[...] export DEB_BUILD_HARDENING=0 [...] |
Если вы этого не сделаете, ваша сборка завершится ошибкой со следующими сообщениями об ошибках:
maildir.c: In function âdeliver_maildirâ:
maildir.c:974:17: error: format not a string literal and no format arguments [-Werror=format-security]
maildir.c:977:17: error: format not a string literal and no format arguments [-Werror=format-security]
maildir.c:983:17: error: format not a string literal and no format arguments [-Werror=format-security]
maildir.c:986:17: error: format not a string literal and no format arguments [-Werror=format-security]
maildir.c: In function âsql2fileâ:
maildir.c:404:25: warning: ignoring return value of âreadâ, declared with attribute warn_unused_result [-Wunused-result]
maildir.c:417:26: warning: ignoring return value of âwriteâ, declared with attribute warn_unused_result [-Wunused-result]
cc1: some warnings being treated as errors
make: *** [maildir.o] Error 1
make: Leaving directory `/usr/src/postfix-2.10.2/src/virtual'
make[1]: *** [update] Error 1
make[1]: Leaving directory `/usr/src/postfix-2.10.2'
make: *** [build] Error 2
dpkg-buildpackage: error: debian/rules build gave error exit status 2
:/usr/src/postfix-2.10.2#
Теперь мы можем собрать новые пакеты Postfix .deb:
dpkg-buildpackage
Теперь мы идем на один каталог вверх, где были созданы новые пакеты .deb:
cd ..
Команда
ls -l
показывает доступные пакеты:
:/usr/src# ls -l
total 7124
drwxr-xr-x 18 root root 4096 Apr 16 04:29 postfix-2.10.2
-rw-r--r-- 1 root root 48594 Apr 16 04:29 postfix-cdb_2.10.2-1_amd64.deb
-rw-r--r-- 1 root root 161974 Apr 16 04:29 postfix-dev_2.10.2-1_all.deb
-rw-r--r-- 1 root root 1094344 Apr 16 04:29 postfix-doc_2.10.2-1_all.deb
-rw-r--r-- 1 root root 57342 Apr 16 04:29 postfix-ldap_2.10.2-1_amd64.deb
-rw-r--r-- 1 root root 50554 Apr 16 04:29 postfix-mysql_2.10.2-1_amd64.deb
-rw-r--r-- 1 root root 50804 Apr 16 04:29 postfix-pcre_2.10.2-1_amd64.deb
-rw-r--r-- 1 root root 50756 Apr 16 04:29 postfix-pgsql_2.10.2-1_amd64.deb
-rw-r--r-- 1 root root 55701 Jun 7 2013 postfix-vda-v13-2.10.0.patch
-rw-r--r-- 1 root root 282175 Apr 16 04:28 postfix_2.10.2-1.diff.gz
-rw-r--r-- 1 root root 1522 Apr 16 04:28 postfix_2.10.2-1.dsc
-rw-r--r-- 1 root root 3899 Apr 16 04:29 postfix_2.10.2-1_amd64.changes
-rw-r--r-- 1 root root 1542368 Apr 16 04:29 postfix_2.10.2-1_amd64.deb
-rw-r--r-- 1 root root 3828326 Sep 12 2013 postfix_2.10.2.orig.tar.gz
Выберите пакеты postfix и postfix-mysql и установите их следующим образом:
dpkg -i postfix_2.10.2-1_amd64.deb postfix-mysql_2.10.2-1_amd64.deb
4 Создайте базу данных MySQL для Postfix/Courier
Теперь мы создаем базу данных с именем mail:
mysqladmin -u root -p create mail
Вам зададут этот вопрос:
Введите пароль: <-- yourrootsqlpassword
Далее переходим в оболочку MySQL:
mysql -u root -p
В оболочке MySQL мы создаем пользователя mail_admin с паролем mail_admin_password (замените его своим паролем), который имеет права SELECT, INSERT, UPDATE, DELETE в почтовой базе данных. Этот пользователь будет использоваться Postfix и Courier для подключения к почтовой базе данных:
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost' IDENTIFIED BY 'mail_admin_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost.localdomain' IDENTIFIED BY 'mail_admin_password';
FLUSH PRIVILEGES;
По-прежнему в оболочке MySQL создаем таблицы, необходимые Postfix и Courier:
USE mail;
CREATE TABLE domains (
domain varchar(50) NOT NULL,
PRIMARY KEY (domain) )
ENGINE=MyISAM;
CREATE TABLE forwardings (
source varchar(80) NOT NULL,
destination TEXT NOT NULL,
PRIMARY KEY (source) )
ENGINE=MyISAM;
CREATE TABLE users (
email varchar(80) NOT NULL,
password varchar(20) NOT NULL,
quota INT(10) DEFAULT '10485760',
PRIMARY KEY (email)
) ENGINE=MyISAM;
CREATE TABLE transport (
domain varchar(128) NOT NULL default '',
transport varchar(128) NOT NULL default '',
UNIQUE KEY domain (domain)
) ENGINE=MyISAM;
quit;
Как вы могли заметить, с quit; мы покинули оболочку MySQL и вернулись в оболочку Linux.
В таблице domains будут храниться все виртуальные домены, для которых Postfix должен получать электронные письма (например, example.com).
domain |
example.com |
Таблица forwardings предназначена для присвоения одного адреса электронной почты другому, например пересылать электронные письма для [email .
source | destination |
В таблице users хранятся все виртуальные пользователи (т. е. адреса электронной почты, поскольку адрес электронной почты и имя пользователя совпадают) и пароли (в зашифрованном виде!) и значение квоты для каждого почтового ящика ( в этом примере значение по умолчанию — 10485760 байт, что означает 10 МБ).
password | quota | |
No9.E4skNvGa. ("secret" in encrypted form) | 10485760 |
Таблица transport не является обязательной, она предназначена для опытных пользователей. Это позволяет пересылать почту для отдельных пользователей, целых доменов или всех писем на другой сервер. Например,
domain | transport |
example.com | smtp:[1.2.3.4] |
будет пересылать все электронные письма для example.com по протоколу smtp на сервер с IP-адресом 1.2.3.4 (квадратные скобки [ ] означает \не выполнять поиск записи MX DNS\ (что имеет смысл для IP-адресов...). Если вместо этого вы используете полное доменное имя (FQDN), вы не будете использовать квадрат кронштейны.).
Кстати, (я предполагаю, что IP-адрес вашей системы почтового сервера 192.168.0.100), вы можете получить доступ к phpMyAdmin через http://192.168.0.100/phpmyadmin/ в браузере и войти в систему как mail_admin. Затем вы можете посмотреть базу данных. Позже вы можете использовать phpMyAdmin для администрирования вашего почтового сервера.
5 Настроить Постфикс
Теперь мы должны указать Postfix, где он может найти всю информацию в базе данных. Поэтому нам нужно создать шесть текстовых файлов. Вы заметите, что я говорю Postfix подключаться к MySQL по IP-адресу 127.0.0.1 вместо локального хоста. Это связано с тем, что Postfix работает в chroot-тюрьме и не имеет доступа к сокету MySQL, к которому он попытается подключиться, если я скажу Postfix использовать localhost. Если я использую 127.0.0.1, Postfix использует сеть TCP для подключения к MySQL, что не является проблемой даже в тюрьме chroot (альтернативой может быть перемещение сокета MySQL в тюрьму chroot, что вызывает некоторые другие проблемы).
Убедитесь, что /etc/mysql/my.cnf содержит следующую строку:
vi /etc/mysql/my.cnf
[...] # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. bind-address = 127.0.0.1 [...] |
Если вам пришлось изменить /etc/mysql/my.cnf, перезапустите MySQL сейчас:
/etc/init.d/mysql restart
Бег
netstat -tap | grep mysql
чтобы убедиться, что MySQL прослушивает 127.0.0.1 (localhost.localdomain):
:~#
Теперь давайте создадим наши шесть текстовых файлов.
vi /etc/postfix/mysql-virtual_domains.cf
user = mail_admin password = mail_admin_password dbname = mail query = SELECT domain AS virtual FROM domains WHERE domain='%s' hosts = 127.0.0.1 |
vi /etc/postfix/mysql-virtual_forwardings.cf
user = mail_admin password = mail_admin_password dbname = mail query = SELECT destination FROM forwardings WHERE source='%s' hosts = 127.0.0.1 |
vi /etc/postfix/mysql-virtual_mailboxes.cf
user = mail_admin password = mail_admin_password dbname = mail query = SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') FROM users WHERE email='%s' hosts = 127.0.0.1 |
vi /etc/postfix/mysql-virtual_email2email.cf
user = mail_admin password = mail_admin_password dbname = mail query = SELECT email FROM users WHERE email='%s' hosts = 127.0.0.1 |
vi /etc/postfix/mysql-virtual_transports.cf
user = mail_admin password = mail_admin_password dbname = mail query = SELECT transport FROM transport WHERE domain='%s' hosts = 127.0.0.1 |
vi /etc/postfix/mysql-virtual_mailbox_limit_maps.cf
user = mail_admin password = mail_admin_password dbname = mail query = SELECT quota FROM users WHERE email='%s' hosts = 127.0.0.1 |
Затем измените разрешения и группу этих файлов:
chmod o= /etc/postfix/mysql-virtual_*.cf
chgrp postfix /etc/postfix/mysql-virtual_*.cf
Теперь мы создаем пользователя и группу с именем vmail с домашним каталогом /home/vmail. Здесь будут храниться все почтовые ящики.
groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /home/vmail -m
Затем мы делаем некоторую настройку Postfix. Убедитесь, что вы заменили server1.example.com действительным полным доменным именем, иначе ваш Postfix может работать неправильно!
postconf -e 'myhostname = server1.example.com'
postconf -e 'mydestination = server1.example.com, localhost, localhost.localdomain'
postconf -e 'mynetworks = 127.0.0.0/8'
postconf -e 'virtual_alias_domains ='
postconf -e 'virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf'
postconf -e 'virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf'
postconf -e 'virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf'
postconf -e 'virtual_mailbox_base = /home/vmail'
postconf -e 'virtual_uid_maps = static:5000'
postconf -e 'virtual_gid_maps = static:5000'
postconf -e 'smtpd_sasl_auth_enable = yes'
postconf -e 'broken_sasl_auth_clients = yes'
postconf -e 'smtpd_sasl_authenticated_header = yes'
postconf -e 'smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination'
postconf -e 'smtpd_use_tls = yes'
postconf -e 'smtpd_tls_cert_file = /etc/postfix/smtpd.cert'
postconf -e 'smtpd_tls_key_file = /etc/postfix/smtpd.key'
postconf -e 'transport_maps = proxy:mysql:/etc/postfix/mysql-virtual_transports.cf'
postconf -e 'virtual_maildir_extended = yes'
postconf -e 'virtual_mailbox_limit_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailbox_limit_maps.cf'
postconf -e 'virtual_mailbox_limit_override = yes'
postconf -e 'virtual_maildir_limit_message = "The user you are trying to reach is over quota."'
postconf -e 'virtual_overquota_bounce = yes'
postconf -e 'proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps'
После этого мы создаем SSL-сертификат, необходимый для TLS:
cd /etc/postfix
openssl req -new -outform PEM -out smtpd.cert -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM -days 365 -x509
Название страны (двухбуквенный код) [AU]: <-- Введите название вашей страны (например, \DE\).
Название штата или провинции (полное название) [Some-State]: <-- Введите ваш Название штата или провинции.
Название местности (например, город) []: <-- Введите свой город.
Название организации (например, компания) [Internet Widgits Pty Ltd]: <-- Введите название вашей организации ( например, название вашей компании).
Название организационного подразделения (например, раздела) []: <-- Введите название вашего организационного подразделения (например, \ИТ-отдел\).
Обычное название (например, ВАШ name) []: <-- Введите полное доменное имя системы (например, \server1.example.com\).
Адрес электронной почты []: <-- Введите свой адрес электронной почты.
Затем измените разрешения smtpd.key:
chmod o= /etc/postfix/smtpd.key
6 Настройте Саслаутд
Первый забег
mkdir -p /var/spool/postfix/var/run/saslauthd
Затем отредактируйте /etc/default/saslauthd. Установите для параметра START значение yes и измените строку OPTIONS=\-c -m /var/run/saslauthd\ на OPTIONS=\-c -m /var/spool/postfix/var/run/saslauthd -r\:
vi /etc/default/saslauthd
# # Settings for saslauthd daemon # Please read /usr/share/doc/sasl2-bin/README.Debian for details. # # Should saslauthd run automatically on startup? (default: no) START=yes # Description of this saslauthd instance. Recommended. # (suggestion: SASL Authentication Daemon) DESC="SASL Authentication Daemon" # Short name of this saslauthd instance. Strongly recommended. # (suggestion: saslauthd) NAME="saslauthd" # Which authentication mechanisms should saslauthd use? (default: pam) # # Available options in this Debian package: # getpwent -- use the getpwent() library function # kerberos5 -- use Kerberos 5 # pam -- use PAM # rimap -- use a remote IMAP server # shadow -- use the local shadow password file # sasldb -- use the local sasldb database file # ldap -- use LDAP (configuration is in /etc/saslauthd.conf) # # Only one option may be used at a time. See the saslauthd man page # for more information. # # Example: MECHANISMS="pam" MECHANISMS="pam" # Additional options for this mechanism. (default: none) # See the saslauthd man page for information about mech-specific options. MECH_OPTIONS="" # How many saslauthd processes should we run? (default: 5) # A value of 0 will fork a new process for each connection. THREADS=5 # Other options (default: -c -m /var/run/saslauthd) # Note: You MUST specify the -m option or saslauthd won't run! # # WARNING: DO NOT SPECIFY THE -d OPTION. # The -d option will cause saslauthd to run in the foreground instead of as # a daemon. This will PREVENT YOUR SYSTEM FROM BOOTING PROPERLY. If you wish # to run saslauthd in debug mode, please run it by hand to be safe. # # See /usr/share/doc/sasl2-bin/README.Debian for Debian-specific information. # See the saslauthd man page and the output of 'saslauthd -h' for general # information about these options. # # Example for chroot Postfix users: "-c -m /var/spool/postfix/var/run/saslauthd" # Example for non-chroot Postfix users: "-c -m /var/run/saslauthd" # # To know if your Postfix is running chroot, check /etc/postfix/master.cf. # If it has the line "smtp inet n - y - - smtpd" or "smtp inet n - - - - smtpd" # then your Postfix is running in a chroot. # If it has the line "smtp inet n - n - - smtpd" then your Postfix is NOT # running in a chroot. #OPTIONS="-c -m /var/run/saslauthd" OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r" |
Затем создайте файл /etc/pam.d/smtp. Он должен содержать только следующие две строки (обязательно заполните правильные данные базы данных):
vi /etc/pam.d/smtp
auth required pam_mysql.so user=mail_admin passwd=mail_admin_password host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1 account sufficient pam_mysql.so user=mail_admin passwd=mail_admin_password host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1 |
Затем создайте файл /etc/postfix/sasl/smtpd.conf. Это должно выглядеть так:
vi /etc/postfix/sasl/smtpd.conf
pwcheck_method: saslauthd mech_list: plain login allow_plaintext: true auxprop_plugin: sql sql_engine: mysql sql_hostnames: 127.0.0.1 sql_user: mail_admin sql_passwd: mail_admin_password sql_database: mail sql_select: select password from users where email = '%[email %r' |
Затем добавьте пользователя postfix в группу sasl (это гарантирует, что Postfix имеет разрешение на доступ к saslauthd):
adduser postfix sasl
Затем перезапустите Postfix и Saslauthd:
/etc/init.d/postfix restart
/etc/init.d/saslauthd restart
7 Настроить курьера
Теперь мы должны сообщить Courier, что он должен аутентифицироваться в нашей базе данных MySQL. Сначала отредактируйте /etc/courier/authdaemonrc и измените значение authmodulelist так, чтобы оно выглядело так:
vi /etc/courier/authdaemonrc
[...] authmodulelist="authmysql" [...] |
Затем сделайте резервную копию /etc/courier/authmysqlrc и очистите старый файл:
cp /etc/courier/authmysqlrc /etc/courier/authmysqlrc_orig
cat /dev/null > /etc/courier/authmysqlrc
Затем откройте /etc/courier/authmysqlrc и поместите в него следующие строки:
vi /etc/courier/authmysqlrc
MYSQL_SERVER localhost MYSQL_USERNAME mail_admin MYSQL_PASSWORD mail_admin_password MYSQL_PORT 0 MYSQL_DATABASE mail MYSQL_USER_TABLE users MYSQL_CRYPT_PWFIELD password #MYSQL_CLEAR_PWFIELD password MYSQL_UID_FIELD 5000 MYSQL_GID_FIELD 5000 MYSQL_LOGIN_FIELD email MYSQL_HOME_FIELD "/home/vmail" MYSQL_MAILDIR_FIELD CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') #MYSQL_NAME_FIELD MYSQL_QUOTA_FIELD quota |
Во время установки SSL-сертификаты для IMAP-SSL и POP3-SSL создаются с именем хоста localhost. Чтобы изменить это на правильное имя хоста (server1.example.com в этом руководстве), удалите сертификаты...
cd /etc/courier
rm -f /etc/courier/imapd.pem
rm -f /etc/courier/pop3d.pem
... и измените следующие два файла; замените CN=localhost на CN=server1.example.com (при необходимости вы также можете изменить другие значения):
vi /etc/courier/imapd.cnf
[...] CN=server1.example.com [...] |
vi /etc/courier/pop3d.cnf
[...] CN=server1.example.com [...] |
Затем заново создайте сертификаты...
mkimapdcert
mkpop3dcert
... и перезапустите Курьера:
/etc/init.d/courier-authdaemon restart
/etc/init.d/courier-imap restart
/etc/init.d/courier-imap-ssl restart
/etc/init.d/courier-pop restart
/etc/init.d/courier-pop-ssl restart
Запустив
telnet localhost pop3
вы можете увидеть, правильно ли работает ваш сервер POP3. Он должен вернуть +OK Привет. (Введите quit, чтобы вернуться в оболочку Linux.)
[электронная почта защищена]:/etc/courier#
8 Изменить /etc/псевдонимы
Теперь нам нужно открыть /etc/aliases. Убедитесь, что postmaster указывает на root и root на ваше собственное имя пользователя или адрес электронной почты, например. как это:
vi /etc/aliases
[...] postmaster: root root: [email [...] |
или так (если администратором является ваше собственное имя пользователя):
[...] postmaster: root root: administrator [...] |
Всякий раз, когда вы изменяете /etc/aliases, вы должны запустить
newaliases
после этого и перезапустите Postfix:
/etc/init.d/postfix restart
9 Установите amavisd-new, SpamAssassin и ClamAV
Чтобы установить amavisd-new, spamassassin и clamav, выполните следующую команду:
apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 libnet-ph-perl libnet-snpp-perl libnet-telnet-perl nomarch lzop pax
После этого мы должны настроить amavisd-new. Конфигурация разделена на несколько файлов, которые находятся в каталоге /etc/amavis/conf.d. Взгляните на каждый из них, чтобы ознакомиться с конфигурацией. Большинство настроек в порядке, однако мы должны изменить три файла:
Сначала мы должны включить ClamAV и SpamAssassin в /etc/amavis/conf.d/15-content_filter_mode, раскомментировав строки @bypass_virus_checks_maps и @bypass_spam_checks_maps:
vi /etc/amavis/conf.d/15-content_filter_mode
Файл должен выглядеть так:
use strict; # You can modify this file to re-enable SPAM checking through spamassassin # and to re-enable antivirus checking. # # Default antivirus checking mode # Please note, that anti-virus checking is DISABLED by # default. # If You wish to enable it, please uncomment the following lines: @bypass_virus_checks_maps = ( \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re); # # Default SPAM checking mode # Please note, that anti-spam checking is DISABLED by # default. # If You wish to enable it, please uncomment the following lines: @bypass_spam_checks_maps = ( \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re); 1; # ensure a defined return |
Затем вам следует взглянуть на настройки спама и действия для спам-/вирусных сообщений в файле /etc/amavis/conf.d/20-debian_defaults. Нет необходимости что-либо менять, если настройки по умолчанию вас устраивают. Файл содержит много пояснений, поэтому здесь нет необходимости объяснять настройки:
vi /etc/amavis/conf.d/20-debian_defaults
[...] $QUARANTINEDIR = "$MYHOME/virusmails"; $quarantine_subdir_levels = 1; # enable quarantine dir hashing $log_recip_templ = undef; # disable by-recipient level-0 log entries $DO_SYSLOG = 1; # log via syslogd (preferred) $syslog_ident = 'amavis'; # syslog ident tag, prepended to all messages $syslog_facility = 'mail'; $syslog_priority = 'debug'; # switch to info to drop debug output, etc $enable_db = 1; # enable use of BerkeleyDB/libdb (SNMP and nanny) $enable_global_cache = 1; # enable use of libdb-based cache if $enable_db=1 $inet_socket_port = 10024; # default listening socket $sa_spam_subject_tag = '***SPAM*** '; $sa_tag_level_deflt = 2.0; # add spam info headers if at, or above that level $sa_tag2_level_deflt = 6.31; # add 'spam detected' headers at that level $sa_kill_level_deflt = 6.31; # triggers spam evasive actions $sa_dsn_cutoff_level = 10; # spam level beyond which a DSN is not sent [...] $final_virus_destiny = D_DISCARD; # (data not lost, see virus quarantine) $final_banned_destiny = D_BOUNCE; # D_REJECT when front-end MTA $final_spam_destiny = D_BOUNCE; $final_bad_header_destiny = D_PASS; # False-positive prone (for spam) [...] |
Наконец, отредактируйте /etc/amavis/conf.d/50-user и добавьте строку $pax=pax; посередине:
vi /etc/amavis/conf.d/50-user
use strict; # # Place your configuration directives here. They will override those in # earlier files. # # See /usr/share/doc/amavisd-new/ for documentation and examples of # the directives you can use in this file # $pax='pax'; #------------ Do not modify anything below this line ------------- 1; # ensure a defined return |
После этого выполните следующие команды, чтобы добавить пользователя clamav в группу amavis и перезапустить amavisd-new и ClamAV:
adduser clamav amavis
/etc/init.d/amavis restart
/etc/init.d/clamav-freshclam restart
/etc/init.d/clamav-daemon restart
Теперь нам нужно настроить Postfix для передачи входящей электронной почты через amavisd-new:
postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
postconf -e 'receive_override_options = no_address_mappings'
После этого добавьте следующие строки в /etc/postfix/master.cf:
vi /etc/postfix/master.cf
[...] amavis unix - - - - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes 127.0.0.1:10025 inet n - - - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks=127.0.0.0/8 -o strict_rfc821_envelopes=yes -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks |
Затем перезапустите Постфикс:
/etc/init.d/postfix restart
Теперь беги
netstat -tap
и вы должны увидеть, что Postfix (master) прослушивает порты 25 (smtp) и 10025, а amavisd-new — порт 10024:
:/etc/courier#
10 Установите Razor, Pyzor и DCC и настройте SpamAssassin
Razor, Pyzor и DCC — это спам-фильтры, использующие сеть совместной фильтрации. Чтобы установить Razor и Pyzor, запустите
apt-get install razor pyzor
DCC недоступен в репозиториях Ubuntu 13.10, поэтому мы устанавливаем его следующим образом:
cd /tmp
wget http://www.dcc-servers.net/dcc/source/dcc-dccproc.tar.Z
tar xzvf dcc-dccproc.tar.Z
cd dcc-dccproc-1.3.1.154
./configure --with-uid=amavis
make
make install
chown -R amavis:amavis /var/dcc
ln -s /var/dcc/libexec/dccifd /usr/local/bin/dccifd
Теперь мы должны указать SpamAssassin использовать эти три программы. Отредактируйте /etc/spamassassin/local.cf и добавьте в него следующие строки:
vi /etc/spamassassin/local.cf
[...] #dcc use_dcc 1 dcc_path /usr/local/bin/dccproc #pyzor use_pyzor 1 pyzor_path /usr/bin/pyzor #razor use_razor2 1 razor_config /etc/razor/razor-agent.conf #bayes use_bayes 1 use_bayes_rules 1 bayes_auto_learn 1 |
Затем мы должны включить плагин DCC в SpamAssassin. Откройте файл /etc/spamassassin/v310.pre и раскомментируйте строку loadplugin Mail::SpamAssassin::Plugin::DCC:
vi /etc/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
Он не должен показывать никаких ошибок.
После этого перезапустите amavisd-new:
/etc/init.d/amavis restart
Теперь мы обновляем наши наборы правил SpamAssassin следующим образом:
sa-update --no-gpg
Мы создаем задание cron, чтобы наборы правил регулярно обновлялись. Бег
crontab -e
чтобы открыть редактор заданий cron. Создайте следующее задание cron:
23 4 */2 * * /usr/bin/sa-update --no-gpg &> /dev/null |
Это будет обновлять наборы правил каждый второй день в 4:23.