Postfix настройка · 8 min read · Jan 08, 2026
Виртуальные пользователи и домены с Postfix, Courier, MySQL и SquirrelMail (Fedora 12 x86_64) - Страница 5
13 Установите Razor, Pyzor и DCC и настройте SpamAssassin
Razor, Pyzor и DCC — это спам-фильтры, которые используют сеть совместной фильтрации. Чтобы установить Razor и Pyzor, выполните
yum install perl-Razor-Agent pyzorЗатем инициализируйте оба сервиса:
chmod -R a+rX /usr/share/doc/pyzor-0.5.0 /usr/bin/pyzor /usr/bin/pyzord
chmod -R a+rX /usr/lib/python2.6/site-packages/pyzor
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.116
./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 Уведомления о превышении квоты
Если вы хотите получать уведомления обо всех учетных записях электронной почты, которые превышают квоту, создайте файл /usr/local/sbin/quota_notify:
cd /usr/local/sbin/
vi quota_notify| #!/usr/bin/perl -w # Автор <[email protected]> # # Этот скрипт предполагает, что virtual_mailbox_base определен # в файле main.cf Postfix. Эта директория предполагается как содержащая # директории, которые сами содержат почтовые директории ваших виртуальных пользователей. # Например: # # -----------/ # | # | # home/vmail/domains/ # | | # | | # example.com/ foo.com/ # | # | # ----------------- # | | | # | | | # user1/ user2/ user3/ # | # | # maildirsize # use strict; 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; #get virtual mailbox base from postfix config open(PCF, "< $POSTFIX_CF") or die $!; my $mboxBase; while ( |
Убедитесь, что вы настроили переменные вверху (особенно адрес электронной почты [email protected]).
Мы должны сделать файл исполняемым:
chmod 755 quota_notifyЗапустите
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 ::1...
Connected to localhost.
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 ~]# mailx [email protected]
Subject: Welcome <– ENTER
Welcome! Have fun with your new mail account. <– ENTER
<– CTRL+D
EOT
[root@server1 ~]#
Get new posts in your inbox
No spam. Unsubscribe anytime.