
Установка с нуля почтового сервера (на примере Ubuntu 16.04 LTS)
Установка пакетов
Обновляем систему
sudo apt-get update
sudo apt-get upgrade
Устанавливаем нужные пакеты
sudo apt-get install postfix dovecot-common dovecot-imapd mysql-server mysql-client postfix-mysql dovecot-mysql sasl2-bin spamassassin
В процессе установки MySQL задаем пароль root в MySQL: sqlrootpass
В процессе установки Postfix выбираем тип конфигурации «no configuration» (без конфигурации)
Настройка MySQL
mysql -u root -p
и создаем базу данных, в которой будут храниться учетные записи почтовых аккаунтов
CREATE DATABASE mail;
USE mail;
Внимание! Далее будет использоваться пользователь mail_admin и его пароль mail_admin_password для доступа к базе данных почтовых аккаунтов в MySQL. Вместо mail_admin и mail_admin_password Вы можете задать свои значения.
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost' IDENTIFIED BY 'mail_admin_password';
GRANT ALL PRIVILEGES ON mail.* TO 'username'@'xxx.xxx.xxx.xxx' IDENTIFIED BY 'password';
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost.localdomain' IDENTIFIED BY 'mail_admin_password';
FLUSH PRIVILEGES;
создаем таблицу доменов
CREATE TABLE domains ( domain varchar(50) NOT NULL, PRIMARY KEY (domain) );
Создаем таблицу алиасов.
CREATE TABLE forwardings ( source varchar(80) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source) );
Создаем таблицу для пользователей
CREATE TABLE users ( user varchar(80) NOT NULL, email varchar(80) NOT NULL, password varchar(20) NOT NULL, PRIMARY KEY (email) );
CREATE TABLE transport ( domain varchar(128) NOT NULL default '', transport varchar(128) NOT NULL default '', UNIQUE KEY domain (domain) );
quit
Создание пользователей
Создаем группу virtual и пользователя virtual, входящего в эту группу.
sudo groupadd -g 5000 virtual
sudo useradd -g virtual -u 5000 virtual
Создание недостающих папок
Создадим каталог, где будут размещаться почтовые ящики:
sudo mkdir /var/spool/mail/dimanao.org
сменим имя и группу владельца созданной директории на virtual:virtual
sudo chown virtual:virtual /var/spool/mail/dimanao.org
дадим владельцу и его группе полные права на каталог, а другим все запретим
sudo chmod 770 /var/spool/mail/dimanao.org
Создаем папку для настроечных файлов обращения к mysql
sudo mkdir /etc/postfix/sql
Конфигурация Postfix
Создаем файлы обращения к базе данных
Создаем конфигурационный файл для доступа к почтовым доменам в базе данных MySQL /etc/postfix/sql/mysql-virtual_domains.cf
user = mail_admin
password = mail_admin_password
dbname = mail
query = SELECT domain FROM domains WHERE domain = '%s'
hosts = 127.0.0.1
Создаем конфигурационный файл для определения автоматической пересылки писем с ящика на ящик /etc/postfix/sql/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
Создаем конфигурационный файл для доступа к почтовым аккаунтам в базе данных MySQL /etc/postfix/sql/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
Создаем конфигурационный файл для виртуального отображения почты /etc/postfix/sql/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
/etc/postfix/sql/mysql_sender_login_maps.cf
user = mail_admin
password = mail_admin_password
dbname = mail
query = SELECT email FROM users WHERE email = '%s'
hosts = 127.0.0.1
Владельцем данных конфигурационных файлов должен быть root, группой владельца — postfix
sudo chown -R root:postfix /etc/postfix/sql
Конфигурационный файл главного модуля main.cf
nano /etc/postfix/main.cf
Пишем туда следующее:
#Так наш сервер будет представляться при отправке и получении почты
smtpd_banner = $myhostname ESMTP (Ubuntu)
#Отключаем использование comsat
biff = no
#Запрещаем автоматически дополнять неполное доменное имя в адресе письма
append_dot_mydomain = no
#Указываем имя нашего хоста
myhostname = dimanao.org
# Указываем файл с псевдонимами почтовых ящиков
alias_maps = hash:/etc/postfix/aliases
#Указываем, для каких доменов будем принимать почту
mydestination = localhost
relayhost=
mynetworks = 127.0.0.0/8,
192.168.0.0/24,
192.168.1.0/24
# Не будем ограничивать размер почтовых ящиков
mailbox_size_limit = 0
recipient_delimiter = +
#Указываем прослушивание на всех сетевых интерфейсах
inet_interfaces = all
#Указываем обязательность использование клиентами команды helo
smtpd_helo_required = yes
#Описываем доступ доменам, почтовым ящикам и т.д.
virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/mysql-virtual_domains.cf
#virtual_alias_maps = proxy:mysql:/etc/postfix/sql/mysql-virtual_forwardings.cf
virtual_alias_maps =
proxy:mysql:/etc/postfix/sql/mysql-virtual_forwardings.cf,
mysql:/etc/postfix/sql/mysql-virtual_email2email.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/sql/mysql-virtual_mailboxes.cf
virtual_mailbox_base = /var/spool/mail
virtual_minimum_uid = 100
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
home_mailbox = Maildir/
local_recipient_maps = $virtual_mailbox_maps
#Указываем каталог очереди для Postfix
queue_directory = /var/spool/postfix
#Описываем авторизацию по SMTP для клиентов не из доверенной зоны
smtpd_sasl_type = dovecot
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
#broken_sasl_auth_clients = yes
# запрещаем проверку отправителем существование адреса получателя
# на этапе передачи заголовка
disable_vrfy_command = yes
# разрешаем дополнительные проверки пока отправитель
# передает RCPT TO: и MAIL FROM: заголовки. Для детализации mail.log
smtpd_delay_reject = yes
# требуем от отправителя представиться
# (на том, как себя представляет передающий комп,
# основаны многие эффективные проверки "на вшивость"
# автоматических рассылок от зомби и троянов)
smtpd_helo_required = yes
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination
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
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/dovecot/dimanao_com.key
smtpd_tls_cert_file = /etc/dovecot/dimanao_com.cert
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 1s
tls_random_source = dev:/dev/urandom
Редактируем конфигурационный файл Postfix master.cf
В файл /etc/postfix/master.cf добавляем следующие строки
dovecot unix - n n - - pipe flags=DRhu user=virtual:virtual argv=/usr/lib/dovecot/deliver -d ${recipient}
submission inet n - - - - smtpd
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/auth
-o smtpd_sasl_security_options=noanonymous
-o smtpd_sasl_local_domain=$myhostname
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o smtpd_sender_login_maps=mysql:/etc/postfix/sql/mysql_sender_login_maps.cf
-o smtpd_sender_restrictions=reject_sender_login_mismatch
-o smtpd_recipient_restrictions=reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_sasl_authenticated,reject
smtps inet n - n - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
Остальные файлы
Задаем сообщение, которое будет выводить Postfix в случае, если отправитель будет представляться именем нашего сервера
Создаем файл /etc/postfix/helo.list
dimanao.org 550 Don't use my hostname
прохешируем
sudo postmap /etc/postfix/helo.list
Задаем сообщение, которое будет выводить Postfix в случае, если отправитель извне будет говорить, что он из нашей сети
Создаем файл /etc/postfix/ext_sender
dimanao.org 450 Do not use my domain in your envelope sender
прохешируем
sudo postmap /etc/postfix/ext_sender
Настраиваем демон saslauthd для взаимодействия с Postfix
sudo mkdir -p /var/spool/postfix/var/run/saslauthd
Редактируем /etc/default/saslauthd. Необходимо проверить, чтобы были закомментированы все строки, и написать следующее:
START=yes
DESC="SASL Authentication Daemon"
NAME="saslauthd"
MECHANISMS="pam"
MECH_OPTIONS=""
THREADS=5
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"
Настраиваем pam-аутентификацию
Редактируем /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=user 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=user passwdcolumn=password crypt=1
Настраиваем Postfix для взаимодействия с saslauthd
Редактируем файл /etc/postfix/sasl/smtpd.conf Пишем туда следующее:
pwcheck_method: saslauthd
mech_list: plain login
allow_plaintext: true
auxprop_plugin: 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 user = '%u'
Владельцем данных файлов должен быть root
sudo chown root /etc/pam.d/smtp /etc/postfix/sasl/smtpd.conf
Добавляем пользователя postfix в группу sasl
sudo adduser postfix sasl
Конфигурируем Dovecot
Файл /etc/dovecot/dovecot.conf Нужно убедится в том, что все строки закомментированы и добавить следующее
!include_try /usr/share/dovecot/protocols.d/*.protocol
#Разрешаем авторизацию в plaintext
disable_plaintext_auth = no
# Журнал будем писать в файл /var/log/dovecot.err
log_path = /var/log/dovecot.err
# Формат даты и времени для регистрируемых событий
log_timestamp = "%Y-%m-%d %H:%M:%S "
#Включаем SSL
ssl = yes
# Порядок следования сертификатов имеет большое значение: сначала *.key, затем *.cert.
ssl_key =< /etc/dovecot/dimanao_com.key
ssl_cert =< /etc/dovecot/dimanao_com.cert
#Строка приветствия при ответе сервера
login_greeting = Dovecot ready.
#Описываем тип (maildir) и местонахождения почтовых ящиков (/var/spool/mail/%d/%n) %d - имя сервера, %n - имя пользователя
mail_location = maildir:/var/spool/mail/%d/%n
#Задаем идентификатор пользователя и группы, с которыми будет работать dovecot
mail_uid = 5000
mail_gid = 5000
mail_privileged_group = mail
valid_chroot_dirs = /var/spool/mail/
#Настраиваем вывод отладочных сообщений
auth_verbose = yes
auth_debug = yes
auth_debug_passwords = yes
#Типы допустимых вариантов аутентификации
auth_mechanisms = plain login digest-md5
#Задаем параметры аутентификации
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf
}
service auth {
unix_listener auth-master {
mode = 0660
user = virtual
group = virtual
}
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}
service imap-login {
inet_listener imap {
port = 0
}
inet_listener imaps {
port = 993
ssl = yes
}
}
Настраиваем параметры соединения с базой данных MySQL. Редактируем /etc/dovecot/dovecot-sql.conf. Пишем туда следующее:
driver = mysql
connect = host=127.0.0.1 dbname=mail user=mail_admin password=mail_admin_password
default_pass_scheme = CRYPT
password_query = SELECT email AS user , password FROM users WHERE (user = '%u') or (email = '%u');
Проверяем конфигурацию Dovecot
dovecot -a
Создадим в базе данных MySQL почтовый домен и пользователя? и алиас
mysql -u root -p
USE mail;
INSERT INTO domains (domain) VALUES ('dimanao.org');
INSERT INTO users (user, email, password) VALUES ('user', 'user@dimanao.org', ENCRYPT('user_password'));
INSERT INTO forwardings(source, destination) VALUES ('root', 'user@dimanao.org');
quit
Создадим сертификат и ключ для SSL
cd /etc/dovecot
sudo openssl req -new -outform PEM -out dimanao_com.cert -newkey rsa:2048 -nodes -keyout dimanao_com.key -keyform PEM -days 3650 -x509
В итоге в каталоге /etc/dovecot будет создан сертификат dimanao_com.cert и ключ dimanao_com.key
Владельцем ключа должен быть root
sudo chown root /etc/dovecot/dimanao_com.key
Перезапускаем saslauthd, dovecot и postfix
sudo service saslauthd restart
sudo service dovecot restart
sudo service postfix restart
Настриваем Spamassassin
Создаём группу spamd
groupadd spamd
Создаём папку
mkdir /var/log/spamassassin
Передаём права на каталог
chown spamd:spamd /var/log/spamassassin
Открываем конфигурационный файл Spamassassin:
nano /etc/default/spamassassin
Для активации фильтра нужно найти строку:
ENABLED=0
И изменить ее значение:
ENABLED=1
Чтобы получать новейшие правила фильтрации спама, нужно включить автоматическое обновление правил; для этого ищем строку:
CRON=0
И изменим ее значение:
CRON=1
Теперь создаём переменную SAHOME, а в качестве ее значения зададим домашний каталог Spamassassin:
SAHOME="/var/log/spamassassin/"
Найдём переменную OPTIONS и изменим ее следующим образом:
OPTIONS="--create-prefs --max-children 5 --username spamd \
-H ${SAHOME} -s ${SAHOME}spamd.log"
Данная переменная задает пользователя, который будет запускать Spamassassin (в данном случае это spamd), а также добавляет домашний каталог, создает лог-файл и ограничивает количество дочерних процессов, которые может породить Spamassassin.
Запускаем Spamassassin
service spamassassin start
Присоединяем Spamassassin к Postfix
nano /etc/postfix/master.cf
Найдем в нем строку:
smtp inet n - - - - smtpd
и добавим:
-o content_filter=spamassassin
Чтобы настроить дополнительный фильтр контента, добавим следующую строку в конец файла:
spamassassin unix - n n - - pipe
user=spamd argv=/usr/bin/spamc -f -e
/usr/sbin/sendmail -oi -f ${sender} ${recipient}
Перезапускаем Postfix
service postfix restart
Чтобы использовать Spamassassin по максимуму, нужно создать правила.
Откроем стандартный файл правил SpamAssassin:
nano /etc/spamassassin/local.cf
Чтобы добавить заголовки в спам, нужно раскомментировать или добавить строку:
rewrite_header Subject [*****SPAM*****]
После проведения различных тестов Spamassassin дает оценку каждому сообщению. Следующая строка будет отмечать сообщения как спам, если оценка фильтра превышает значение, указанное в правиле.
required_score 5.0
Чтобы использовать для проверки почты теорему Байеса, раскомментируем или добавим строки:
use_bayes 1
bayes_auto_learn 1
Внеся все вышеперечисленные строки, сохраняем файл и перезапускаем спам-фильтр.
service spamassassin restart
Закрываемся от китайского спама
В /etc/postfix/main.cf добавляем
smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/sender_access
В /etc/postfix/sender_access
# Заблокировать всю почту с домена и поддоменов
qq.com REJECT
# Заблокировать пользователя spam с любого домена
spam@ REJECT
# Заблокировать адрес
spam@qq.com REJECT NO SPAM
Далее, обязательно
postmap /etc/postfix/sender_access
service postfix reload
Подключаем header_checks
nano /etc/postfix/main.cf
Добавляем строки
header_checks = pcre:/etc/postfix/header_checks
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
reject_invalid_helo_hostname,
reject_non_fqdn_helo_hostname,
reject_non_fqdn_sender,
reject_unknown_sender_domain
invalid_hostname_reject_code = 550
non_fqdn_reject_code = 550
unknown_address_reject_code = 550
unknown_client_reject_code = 550
unknown_hostname_reject_code = 550
unverified_recipient_reject_code = 550
unverified_sender_reject_code = 550
На всякий случай установим плагин для Postfix
apt-get install postfix-pcre
Создаём файл и наполняем следующим:
nano /etc/postfix/header_checks
#Content-Type/Disposition Blocks
/^Content-(Disposition|Type):\s+.+?(?:file)?name="?.+?\.(386|ad[ept]|app|as[dpx]|ba[st]|bin|btm|cab|cb[lt]|cgi|chm|cil|cla(ss)?|cmd|cp[el]|crt|cs[chs]|cvp|dll|dot|drv|em(ai)?l|ex[_e]|exe?=|fon|fxp|hlp|ht[ar]|in[fips]|isp|jar|jse?|keyreg|ksh|lib|lnk|md[abetw]|mht(m|ml)?|mp3|ms[ciopt]|nte|nws|obj|ocx|ops|ov.|pcd|pgm|pif|p[lm]|pot|pps|prg|reg|sc[rt]|sh[bs]?|slb|smm|sw[ft]|sys|url|vb[esx]?|vir|vmx|vxd|wm[dsz]|ws[cfh]|xl.|xms|\{[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}\})\b/ REJECT ".$2" file attachment types not allowed
/^Content-(Disposition|Type):\s+.+?(file)?name="?.+?\.com(\.\S{2,4})?(\?=)?"?(;|$)/ REJECT ".com" file attachment types not allowed
/^Content-(Disposition|Type):\s+.*?message\/partial\b/ REJECT
/^Content-(Disposition|Type):\s+.*?(file)?name="?.*?(your_details|application|document|screensaver|movie)\.zip/ REJECT
/^Subject: \*\*\*\*\*SPAM\*\*\*\*\*/ REJECT Spam
IF/^Content-Type:/
/multipart\/related;.*type=\"multipart\/alternative\";.*boundary=\"====_ABC1234567890DEF_====\".*$/ REJECT Possible you have a virus Nimda. Try resend your message.
/multipart.*"----[A-F0-9]+_Outlook_Express_message_boundary"/i REJECT Possible you have a viruss Sircam. Try resend your message.
ENDIF
/^ *.*name="account-details.zip/ REJECT We think your message contain a virus MyTob. Please remove or rename your attachment account-details.zip.
/^ *.*name.*(website|details|try|updated-password|account-password|account-details|password)\.zip/ REJECT We think your message contain avirus MyTob. Please remove or rename your attachment $1.zip.
#Date Blocks
IF /^Date:/
/.{60,}$/ REJECT You have invalid Date Format. Possible you have bugget Outlook?
ENDIF
#X-Mailer Blocks
IF/^X-Mailer:/
/ Virtual MailSender; www.vpro.ru/ OK
/ 0001/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Avalanche/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Crescent Internet Tool/ REJECT Your email had spam-like header contents. (X-Mailer)
/ DiffondiCool/ REJECT Your email had spam-like header contents. (X-Mailer)
/ E-Mail Delivery Agent/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Emailer Platinum/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Entity/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Extractor/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Floodgate/ REJECT Your email had spam-like header contents. (X-Mailer)
/ GOTO Software Sarbacane/ REJECT Your email had spam-like header contents. (X-Mailer)
/ MailWorkz/ REJECT Your email had spam-like header contents. (X-Mailer)
/ MassE-Mail/ REJECT Your email had spam-like header contents. (X-Mailer)
/ MaxBulk.Mailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ News Breaker Pro/ REJECT Your email had spam-like header contents. (X-Mailer)
/ SmartMailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ StormPort/ REJECT Your email had spam-like header contents. (X-Mailer)
/ SuperMail-2/ REJECT Your email had spam-like header contents. (X-Mailer)
/ RAdvanced Direct Remailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Advanced Mass Sender/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Spammer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Bomber/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Mega-Mailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ SuperMail/ REJECT Your email had spam-like header contents. (X-Mailer)
/ FastMailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ PObox/ REJECT Your email had spam-like header contents. (X-Mailer)
/ MMailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Ligra Mailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Dynamic Opt-In Emailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Group Spamer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Mail Sender/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Mailloop/ REJECT Your email had spam-like header contents. (X-Mailer)
/ PersMail/ REJECT Your email had spam-like header contents. (X-Mailer)
/ LK SendI/ REJECT Your email had spam-like header contents. (X-Mailer)
/ WC Mail/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Virtual MailSender/ REJECT Your email had spam-like header contents. (X-Mailer)
/ ZUBA ZUB/ REJECT Your email had spam-like header contents. (X-Mailer)
/ MailList Express/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Caretop/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Mailer Signature/ REJECT Your email had spam-like header contents. (X-Mailer)
/ FiG/ REJECT Your email had spam-like header contents. (X-Mailer)
/ PG-MAILINGLIST/ REJECT Your email had spam-like header contents. (X-Mailer)
/ advcomtest/ REJECT Your email had spam-like header contents. (X-Mailer)
/ ailerv/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Gailerj/ REJECT Your email had spam-like header contents. (X-Mailer)
/ User$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ \.\.\.\.\.\.\. / REJECT Your email had spam-like header contents. (X-Mailer)
/ sklsgwd/ REJECT Your email had spam-like header contents. (X-Mailer)
/ yo yo mail/ REJECT Your email had spam-like header contents. (X-Mailer)
/ ZanziMailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ smsmtp/ REJECT Your email had spam-like header contents. (X-Mailer)
/ BulkMailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ diffondi/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Virtual MailSender/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Version 5.0 / REJECT Your email had spam-like header contents. (X-Mailer)
/ NetMasters/ REJECT Your email had spam-like header contents. (X-Mailer)
/ nethack/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Dipost/ REJECT Your email had spam-like header contents. (X-Mailer)
/ (ACE ContactManager|CyberCreek Avalanche)/ REJECT Your email had spam-like header contents. (X-Mailer)
/ (Achi-Kochi Mail|E-mail Magnet|Mailcast)/ REJECT Your email had spam-like header contents. (X-Mailer)
/ (Group Mail|Aristotle Mail|WorldMerge)/ REJECT Your email had spam-like header contents. (X-Mailer)
/ (Extractor Pro|Floodgate Pro|MultiMailer)/ REJECT Your email had spam-like header contents. (X-Mailer)
/ (Ellipse Bulk Emailer|RamoMail|MultiMailer)/ REJECT Your email had spam-like header contents. (X-Mailer)
/ (Emailer Platinum.*Internet Marketing)/ REJECT Your email had spam-like header contents. (X-Mailer)
/ E-Magazine/ REJECT Your email had spam-like header contents. (X-Mailer)
/ ExclamationSoft/ REJECT Your email had spam-like header contents. (X-Mailer)
/ IM2K/ REJECT Your email had spam-like header contents. (X-Mailer)
/ PostMaster General/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Advanced Mass Sender/ REJECT Your email had spam-like header contents. (X-Mailer)
/ EZ Version/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Email Collector/ REJECT Your email had spam-like header contents. (X-Mailer)
/ SBZ systems/ REJECT Your email had spam-like header contents. (X-Mailer)
/ The Red Spider/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Dynamic Opt-In Emailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ IM2000 Version 1.01/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Prospect Mailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Inet_Mail_Out/ REJECT Your email had spam-like header contents. (X-Mailer)
/ MailKing/ REJECT Your email had spam-like header contents. (X-Mailer)
/ David/ REJECT Your email had spam-like header contents. (X-Mailer)
/ EzyMassMailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Oshirase-Mailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ The Red Spider/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Mega-Mailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ FletMail/i REJECT Your email had spam-like header contents. (X-Mailer)
/ Floodgate/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Extractor/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Fusion/ REJECT Your email had spam-like header contents. (X-Mailer)
/ MassE-Mail/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Quick Shot/ REJECT Your email had spam-like header contents. (X-Mailer)
/ NetMailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ WorldMerge/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Powermailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ homosexual/ REJECT Your email had spam-like header contents. (X-Mailer)
/ PSS Bulk Mailer.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ ccMail Link.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ IXO-Mail.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ MMailer.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ K-ML.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ GoldMine.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ MAGIC.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ bomber.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ expeditor.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Brooklyn North.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Broadcast.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ DMailer.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Extractor.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ EMailing List Pro .*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Fusion.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ News Breaker .*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ dbMail.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Unity.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ PG-MAILINGLIST PRO .*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Dynamic.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Splio.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Sarbacane.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ sMailing.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Broadc@st.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ WorkZ.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ ABMailer.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ QuickSender .*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/.* over 2182 or.$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ SpeedMail_.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
ENDIF
#Other Headers Blocks
/^X-Unsent: 1/ REJECT Possible you have a virus Nimbda. Try resend your message.
# These are headers used to track some spam messages.
/^Bel-Tracking: .*/ REJECT Confirmed spam. Go away.
/^Hel-Tracking: .*/ REJECT Confirmed spam. Go away.
/^Kel-Tracking: .*/ REJECT Confirmed spam. Go away.
/^BIC-Tracking: .*/ REJECT Confirmed spam. Go away.
/^Lid-Tracking: .*/ REJECT Confirmed spam. Go away.
/^X-Mailer: Avalanche/ REJECT
/^Disposition-Notification-To:/ IGNORE
Перезапускаем Postfix и Spamassassin
service spamassassin restart
service postfix restart
Настройки Thunderbird
imap порт 993 имя пользователя user1 SSL/TLS обычный пароль
smtp порт 465 имя пользователя user1 SSL/TLS обычный пароль
mail serverUbuntu
Почтовый сервер на базе Postfix + Dovecot + Spamassassin
27.08.2017
*nix, Admin, Web
Комментарии к записи Почтовый сервер на базе Postfix + Dovecot + Spamassassin отключены
dimanao
Установка с нуля почтового сервера (на примере Ubuntu 16.04 LTS)
Установка пакетов
Обновляем систему
Устанавливаем нужные пакеты
В процессе установки MySQL задаем пароль root в MySQL: sqlrootpass
В процессе установки Postfix выбираем тип конфигурации «no configuration» (без конфигурации)
Настройка MySQL
и создаем базу данных, в которой будут храниться учетные записи почтовых аккаунтов
Внимание! Далее будет использоваться пользователь mail_admin и его пароль mail_admin_password для доступа к базе данных почтовых аккаунтов в MySQL. Вместо mail_admin и mail_admin_password Вы можете задать свои значения.
создаем таблицу доменов
Создаем таблицу алиасов.
Создаем таблицу для пользователей
Создание пользователей
Создаем группу virtual и пользователя virtual, входящего в эту группу.
Создание недостающих папок
Создадим каталог, где будут размещаться почтовые ящики:
сменим имя и группу владельца созданной директории на virtual:virtual
дадим владельцу и его группе полные права на каталог, а другим все запретим
Создаем папку для настроечных файлов обращения к mysql
Конфигурация Postfix
Создаем файлы обращения к базе данных
Создаем конфигурационный файл для доступа к почтовым доменам в базе данных MySQL /etc/postfix/sql/mysql-virtual_domains.cf
Создаем конфигурационный файл для определения автоматической пересылки писем с ящика на ящик /etc/postfix/sql/mysql-virtual_forwardings.cf
Создаем конфигурационный файл для доступа к почтовым аккаунтам в базе данных MySQL /etc/postfix/sql/mysql-virtual_mailboxes.cf
Создаем конфигурационный файл для виртуального отображения почты /etc/postfix/sql/mysql-virtual_email2email.cf
/etc/postfix/sql/mysql_sender_login_maps.cf
Владельцем данных конфигурационных файлов должен быть root, группой владельца — postfix
Конфигурационный файл главного модуля main.cf
Пишем туда следующее:
Редактируем конфигурационный файл Postfix master.cf
В файл /etc/postfix/master.cf добавляем следующие строки
Остальные файлы
Задаем сообщение, которое будет выводить Postfix в случае, если отправитель будет представляться именем нашего сервера
Создаем файл /etc/postfix/helo.list
прохешируем
Задаем сообщение, которое будет выводить Postfix в случае, если отправитель извне будет говорить, что он из нашей сети
Создаем файл /etc/postfix/ext_sender
прохешируем
Настраиваем демон saslauthd для взаимодействия с Postfix
Редактируем /etc/default/saslauthd. Необходимо проверить, чтобы были закомментированы все строки, и написать следующее:
Настраиваем pam-аутентификацию
Редактируем /etc/pam.d/smtp. Пишем туда следующее:
Настраиваем Postfix для взаимодействия с saslauthd
Редактируем файл /etc/postfix/sasl/smtpd.conf Пишем туда следующее:
Владельцем данных файлов должен быть root
Добавляем пользователя postfix в группу sasl
Конфигурируем Dovecot
Файл /etc/dovecot/dovecot.conf Нужно убедится в том, что все строки закомментированы и добавить следующее
Настраиваем параметры соединения с базой данных MySQL. Редактируем /etc/dovecot/dovecot-sql.conf. Пишем туда следующее:
Проверяем конфигурацию Dovecot
Создадим в базе данных MySQL почтовый домен и пользователя? и алиас
Создадим сертификат и ключ для SSL
В итоге в каталоге /etc/dovecot будет создан сертификат dimanao_com.cert и ключ dimanao_com.key
Владельцем ключа должен быть root
Перезапускаем saslauthd, dovecot и postfix
Настриваем Spamassassin
Создаём группу spamd
Создаём папку
Передаём права на каталог
Открываем конфигурационный файл Spamassassin:
Для активации фильтра нужно найти строку:
И изменить ее значение:
Чтобы получать новейшие правила фильтрации спама, нужно включить автоматическое обновление правил; для этого ищем строку:
И изменим ее значение:
Теперь создаём переменную SAHOME, а в качестве ее значения зададим домашний каталог Spamassassin:
Найдём переменную OPTIONS и изменим ее следующим образом:
Данная переменная задает пользователя, который будет запускать Spamassassin (в данном случае это spamd), а также добавляет домашний каталог, создает лог-файл и ограничивает количество дочерних процессов, которые может породить Spamassassin.
Запускаем Spamassassin
Присоединяем Spamassassin к Postfix
Найдем в нем строку:
и добавим:
Чтобы настроить дополнительный фильтр контента, добавим следующую строку в конец файла:
Перезапускаем Postfix
Чтобы использовать Spamassassin по максимуму, нужно создать правила.
Откроем стандартный файл правил SpamAssassin:
Чтобы добавить заголовки в спам, нужно раскомментировать или добавить строку:
После проведения различных тестов Spamassassin дает оценку каждому сообщению. Следующая строка будет отмечать сообщения как спам, если оценка фильтра превышает значение, указанное в правиле.
Чтобы использовать для проверки почты теорему Байеса, раскомментируем или добавим строки:
Внеся все вышеперечисленные строки, сохраняем файл и перезапускаем спам-фильтр.
Закрываемся от китайского спама
В /etc/postfix/main.cf добавляем
В /etc/postfix/sender_access
Далее, обязательно
Подключаем header_checks
Добавляем строки
На всякий случай установим плагин для Postfix
Создаём файл и наполняем следующим:
Перезапускаем Postfix и Spamassassin
Настройки Thunderbird
imap порт 993 имя пользователя user1 SSL/TLS обычный пароль
smtp порт 465 имя пользователя user1 SSL/TLS обычный пароль
mail serverUbuntu