Postfix настройка · 6 min read · Sep 29, 2025
Виртуальные пользователи и домены с Postfix, Courier, MySQL и SquirrelMail (CentOS 5.3 x86_64) - Страница 4
13 Установка Razor, Pyzor и DCC и настройка SpamAssassin
Razor, Pyzor и DCC — это спам-фильтры, которые используют сеть совместной фильтрации. Чтобы установить Razor, выполните
yum install perl-Razor-Agent razor-agentsPyzor недоступен в репозиториях CentOS 5.3, но мы можем установить пакет Pyzor для RHEL 5 вместо этого (это пакет noarch, т.е. он работает на x86_64 и i386):
rpm -ivh ftp://ftp.pbone.net/mirror/download.fedora.redhat.com/pub/fedora/epel/5/i386/pyzor-0.4.0-11.el5.noarch.rpm(Вы можете использовать поиск RPM на http://rpm.pbone.net/, чтобы найти текущую версию, если вышеуказанная ссылка больше не работает.)
Затем инициализируйте оба сервиса:
chmod -R a+rX /usr/share/doc/pyzor-0.4.0 /usr/bin/pyzor /usr/bin/pyzord
chmod -R a+rX /usr/lib/python2.4/site-packages/pyzor
mkdir /var/spool/amavisd
chown amavis:amavis /var/spool/amavisd
su -m amavis -c 'pyzor --homedir /var/spool/amavisd discover'
su -m amavis -c 'razor-admin -home=/var/spool/amavisd -create'
su -m amavis -c 'razor-admin -home=/var/spool/amavisd -register'Затем мы устанавливаем DCC следующим образом:
cd /tmp
wget http://www.dcc-servers.net/dcc/source/dcc-dccproc.tar.Z
tar xzvf dcc-dccproc.tar.Z
cd dcc-dccproc-1.3.103
./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/mail/spamassassin/local.cf так, чтобы он выглядел следующим образом:
vi /etc/mail/spamassassin/local.cf| # Эти значения могут быть переопределены редактированием ~/.spamassassin/user_prefs.cf # (см. spamassassin(1) для подробностей) # Это должны быть безопасные предположения и позволять простую визуальную фильтрацию # без риска потери электронных писем. #required_hits 5 #report_safe 0 #rewrite_header Subject [SPAM] # 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 /var/spool/amavisd/razor-agent.conf #bayes use_bayes 1 use_bayes_rules 1 bayes_auto_learn 1 |
Затем мы должны включить плагин DCC в SpamAssassin. Откройте /etc/mail/spamassassin/v310.pre и раскомментируйте строку loadplugin Mail::SpamAssassin::Plugin::DCC:
vi /etc/mail/spamassassin/v310.pre| [...] # DCC - выполнять проверки сообщений DCC. # # DCC отключен здесь, потому что он не является открытым исходным кодом. См. лицензию DCC # для получения дополнительной информации. # loadplugin Mail::SpamAssassin::Plugin::DCC [...] |
Вы можете проверить свою конфигурацию SpamAssassin, выполнив:
spamassassin --lintНе должно быть никаких ошибок.
Запустите
/etc/init.d/amavisd restartпосле этого.
Теперь мы обновляем наши правила SpamAssassin следующим образом:
sa-update --no-gpgМы создаем задание cron, чтобы правила обновлялись регулярно. Запустите
crontab -eчтобы открыть редактор заданий cron. Создайте следующее задание cron:
| 23 4 */2 * * /usr/bin/sa-update --no-gpg &> /dev/null |
Это обновит правила каждые два дня в 4:23.
14 Уведомления о превышении квоты
Если вы хотите получать уведомления обо всех учетных записях электронной почты, которые превышают квоту, сделайте следующее:
cd /usr/local/sbin/
wget http://puuhis.net/vhcs/quota.txt
mv quota.txt quota_notify
chmod 755 quota_notifyОткройте /usr/local/sbin/quota_notify и отредактируйте переменные вверху. Дальше в файле (ближе к концу) есть две строки, в которые вы должны добавить знак % ( $lusers{$luser}%):
vi /usr/local/sbin/quota_notify| [...] my $POSTFIX_CF = "/etc/postfix/main.cf"; my $MAILPROG = "/usr/sbin/sendmail -t"; my $WARNPERCENT = 80; my @POSTMASTERS = ('[email protected]'); my $CONAME = 'Моя компания'; my $COADDR = '[email protected]'; my $SUADDR = '[email protected]'; my $MAIL_REPORT = 1; my $MAIL_WARNING = 1; [...] print "Subject: WARNING: Ваш почтовый ящик заполнен на $lusers{$luser}%.\n"; [...] print "Ваш почтовый ящик: $luser заполнен на $lusers{$luser}%.\n\n"; [...] |
Запустите
crontab -eчтобы создать задание cron для этого скрипта:
| 0 0 * * * /usr/local/sbin/quota_notify &> /dev/null |
15 Тестирование Postfix
Чтобы проверить, готов ли Postfix к SMTP-AUTH и TLS, выполните
telnet localhost 25После того как вы установили соединение с вашим почтовым сервером Postfix, введите
ehlo localhostЕсли вы видите строки
*250-STARTTLS *и
*250-AUTH PLAIN* LOGIN* *всё в порядке.
[root@server1 sbin]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 server1.example.com ESMTP Postfix
ehlo localhost
250-server1.example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.
[root@server1 sbin]#Введите
quitчтобы вернуться в оболочку системы.
16 Заполнение базы данных и тестирование
Чтобы заполнить базу данных, вы можете использовать оболочку MySQL:
mysql -u root -pUSE mail;По крайней мере, вам нужно создать записи в таблицах domains и users:
INSERT INTO `domains` (`domain`) VALUES ('example.com');
INSERT INTO `users` (`email`, `password`, `quota`) VALUES ('[email protected]', ENCRYPT('secret'), 10485760);(Пожалуйста, убедитесь, что вы используете синтаксис ENCRYPT во втором операторе INSERT, чтобы зашифровать пароль!)
Если вы хотите сделать записи в других двух таблицах, это будет выглядеть так:
INSERT INTO `forwardings` (`source`, `destination`) VALUES ('[email protected]', '[email protected]');
INSERT INTO `transport` (`domain`, `transport`) VALUES ('example.com', 'smtp:mail.example.com');Чтобы выйти из оболочки MySQL, введите
quit;Для большинства людей проще, если у них есть графический интерфейс для MySQL; поэтому вы также можете использовать phpMyAdmin (в этом примере по адресу http://192.168.0.100/phpmyadmin/ или http://server1.example.com/phpmyadmin/) для администрирования базы данных mail. Снова, когда вы создаете пользователя, убедитесь, что вы используете функцию ENCRYPT для шифрования пароля:
Я не думаю, что мне нужно дальше объяснять таблицы доменов и пользователей.
Таблица переадресации может иметь записи, подобные следующим:
| source | destination | |
| [email protected] | [email protected] | Перенаправляет электронные письма для [email protected] на [email protected] |
| @example.com | [email protected] | Создает учетную запись Catch-All для [email protected]. Все электронные письма на example.com будут приходить на [email protected], за исключением тех, которые существуют в таблице пользователей (т.е. если [email protected] существует в таблице пользователей, письма на [email protected] все равно будут приходить на [email protected]). |
| @example.com | @anotherdomain.tld | Это перенаправляет все электронные письма на example.com на того же пользователя на anotherdomain.tld. Например, письма на [email protected] будут перенаправлены на [email protected]. |
| [email protected] | [email protected], [email protected] | Перенаправляет электронные письма для [email protected] на два или более адресов электронной почты. Все указанные адреса электронной почты под получателем получают копию письма. |
Таблица транспорта может иметь записи, подобные этим:
| domain | transport | |
| example.com | : | Доставляет электронные письма для example.com локально. Это как если бы эта запись вообще не существовала в этой таблице. |
| example.com | smtp:mail.anotherdomain.tld | Доставляет все электронные письма для example.com через smtp на сервер mail.anotherdomain.com. |
| example.com | smtp:mail.anotherdomain.tld:2025 | Доставляет все электронные письма для example.com через smtp на сервер mail.anotherdomain.com, но на порту 2025, а не 25, который является стандартным портом для smtp. |
| example.com | smtp:[1.2.3.4]
smtp:[1.2.3.4]:2025
smtp:[mail.anotherdomain.tld] | Квадратные скобки предотвращают выполнение Postfix поиска записи MX DNS для адреса в квадратных скобках. Имеет смысл для IP-адресов. | | .example.com | smtp:mail.anotherdomain.tld | Почта для любого поддомена example.com доставляется на mail.anotherdomain.tld. | | * | smtp:mail.anotherdomain.tld | Все электронные письма доставляются на mail.anotherdomain.tld. | | [email protected] | smtp:mail.anotherdomain.tld | Электронные письма для [email protected] доставляются на mail.anotherdomain.tld. |
Смотрите
man transportдля получения дополнительной информации.
Пожалуйста, имейте в виду, что порядок записей в таблице транспорта важен! Записи будут следовать сверху вниз.
Важно: Postfix использует механизм кэширования для транспортов, поэтому может пройти некоторое время, прежде чем изменения в таблице транспорта вступят в силу. Если вы хотите, чтобы они вступили в силу немедленно, выполните
postfix reloadпосле того, как вы внесли изменения в таблицу транспорта.
17 Отправка приветственного письма для создания Maildir
Когда вы создаете новую учетную запись электронной почты и пытаетесь получить электронные письма из нее (с помощью POP3/IMAP), вы, вероятно, получите сообщения об ошибках, говорящие о том, что Maildir не существует. Maildir создается автоматически, когда первое электронное письмо приходит для новой учетной записи. Поэтому хорошей идеей будет отправить приветственное письмо на новую учетную запись.
Сначала мы устанавливаем пакет mailx:
yum install mailxЧтобы отправить приветственное письмо на [email protected], мы делаем это:
mailx [email protected]Вам будет предложено ввести тему. Введите тему (например, Приветствие), затем нажмите ENTER, а в следующей строке введите ваше сообщение. Когда сообщение будет готово, снова нажмите ENTER, чтобы перейти на новую строку, затем нажмите CTRL+D:
[root@server1 sbin]# mailx [email protected]
Subject: Welcome <– ENTER
Welcome! Have fun with your new mail account. <– ENTER
<– CTRL+D
Cc: <– ENTER
[root@server1 sbin]#
Get new posts in your inbox
No spam. Unsubscribe anytime.