Настройка почты · 3 min read · Dec 31, 2025

Виртуальный хостинг с Virtualmin на CentOS 5.1 - Страница 3

Конфигурация

Настройка Postfix

Введение

Мы будем настраивать postfix с следующими функциями:

  • Виртуальный хостинг
  • Профилактика UCE
  • Антивирус
  • SMTP-аутентификация
  • TLS
  • RBL
  • SPF
  • Смягчение атак

Добавление учетных записей и доменов будет настроено через virtualmin, хотя это также можно сделать вручную. Настройка разработана с учетом экономии ресурсов, поэтому она должна работать на машинах, которые не перегружены, позволяя использовать ресурсы более эффективно. Чтобы сделать это экономичным по ресурсам, мы не используем внешние базы данных для хранения информации о виртуальных пользователях, как это делают большинство других инструкций, а также используем milters для проверки спама и вирусов вместо запуска amavisd-new.

Основы

Для начала мы настроим основные параметры, такие как имя хоста, происхождение почты, сети, директорию кэша хеш-карт. Все эти параметры конфигурации должны быть добавлены в /etc/postfix/main.cf, если не указано иное. Примеры файлов конфигурации доступны для загрузки в конце этой страницы.

command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
mydomain = example.com
myorigin = $mydomain
mynetworks = 127.0.0.0/8
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
canonical_maps = hash:/etc/postfix/canonical
sender_canonical_maps = hash:/etc/postfix/canonical
recipient_canonical_maps = hash:/etc/postfix/canonical
virtual_alias_maps = hash:/etc/postfix/virtual
mail_spool_directory = /var/spool/mail

Maildir

Мы будем использовать значительно улучшенный формат maildir вместо стандартного формата mbox:

home_mailbox = Maildir/

SASL

Для выполнения SMTP-аутентификации мы будем использовать SASL, однако мы не будем использовать Cyrus SASL, так как это требует запуска демона saslauthd, вместо этого мы будем использовать dovecot sasl, так как мы будем запускать dovecot для IMAP и POP3, убивая двух зайцев одним выстрелом.

smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes

TLS

Нам нужен TLS, чтобы гарантировать, что пароли в открытом виде не передаются по сети во время SMTP-аутентификации, серверы, поддерживающие TLS, также могут общаться с этим сервером по защищенному соединению.

Инструкции по созданию вашего сертификата сервера, подписанного cacert.org, можно найти здесь.

  • Установите случайный источник TLS:
tls_random_source = dev:/dev/urandom
  • Включите серверный TLS:
smtpd_use_tls = yes
smtpd_tls_key_file = /etc/pki/postfix/key.pem
smtpd_tls_cert_file = /etc/pki/postfix/server.pem
smtpd_tls_CAfile = /etc/pki/postfix/root.crt
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
smtpd_tls_session_cache_database = btree:/var/spool/postfix/smtpd_tls_cache
  • Включите клиентский TLS:
smtp_use_tls = yes
smtp_tls_key_file = /etc/pki/postfix/key.pem
smtp_tls_cert_file = /etc/pki/postfix/server.pem
smtp_tls_CAfile = /etc/pki/postfix/root.crt
smtp_tls_session_cache_database = btree:/var/spool/postfix/smtp_tls_cache
smtp_tls_note_starttls_offer = yes

Профилактика спама

  • Требовать действительный EHLO / HELO:
smtpd_helo_required = yes
  • Предотвратить атаки по сбору адресов электронной почты:
disable_vrfy_command = yes
  • Изменить коды отклонения на постоянные (по умолчанию postfix выдает коды ошибок 4xx, что подразумевает временную ошибку, нам нужны 5xx для постоянных ошибок):
unverified_recipient_reject_code = 550
unverified_sender_reject_code = 550
unknown_local_recipient_reject_code = 550
  • Настроить проверку адреса отправителя:
address_verify_map = btree:/var/spool/postfix/verify
smtpd_sender_restrictions = hash:/etc/postfix/sender_access
  • Создайте /etc/postfix/sender_access и добавьте:
#пример /etc/postfix/sender_access содержит часто подделываемые домены
aol.com     reject_unverified_sender
hotmail.com reject_unverified_sender
yahoo.com reject_unverified_sender
gmail.com reject_unverified_sender
bigfoot.com reject_unverified_sender
  • Смягчите атаки от зомби и сломанных клиентов:
smtpd_error_sleep_time = 5s
smtpd_soft_error_limit = 10
smtpd_hard_error_limit = 20
  • Разрешите пайплайнинг только от аутентифицированных клиентов:
smtpd_data_restrictions = reject_unauth_pipelining
  • Установите postfix-policyd-spf-perl и включите поддержку SPF:
wget http://www.openspf.org/blobs/postfix-policyd-spf-perl-2.005.tar.gz  
tar xzvf postfix-policyd-spf-perl-2.005.tar.gz  
cd postfix-policyd-spf-perl-2.005  
cp postfix-policyd-spf-perl /etc/postfix/

Добавьте это в /etc/postfix/master.cf:

spfpolicy unix  -       n       n       -       -       spawn user=nobody argv=/usr/bin/perl /etc/postfix/postfix-policyd-spf-perl
  • Добавьте поддержку DKIM:

Инструкции по добавлению поддержки DKIM можно найти здесь.

  • Добавьте поддержку domainkeys:

Инструкции по добавлению поддержки domainkeys можно найти здесь.

  • Чтобы все это работало, зависит от параметра smtpd_recipient_restrictions, поэтому мы устанавливаем его ниже:
smtpd_recipient_restrictions =
        permit_mynetworks
        permit_sasl_authenticated
        reject_unauth_destination
        check_recipient_access hash:/etc/postfix/access
        reject_unknown_recipient_domain
        reject_unknown_sender_domain
        reject_unverified_recipient
        reject_non_fqdn_recipient
        reject_non_fqdn_sender
        reject_invalid_hostname
        reject_rbl_client list.dsbl.org
        reject_rbl_client zen.spamhaus.org
        reject_rbl_client l1.spews.dnsbl.sorbs.net
        reject_rbl_client combined.njabl.org
        reject_rbl_client bl.spamcop.net
        reject_rhsbl_sender dsn.rfc-ignorant.org
        reject_rhsbl_sender bogusmx.rfc-ignorant.org
        reject_rhsbl_sender rhsbl.sorbs.net
        reject_rhsbl_client dsn.rfc-ignorant.org
        reject_rhsbl_client bogusmx.rfc-ignorant.org
        reject_rhsbl_client rhsbl.sorbs.net
        check_policy_service unix:private/spfpolicy

Milters [SpamAssassin & ClamAV]

Для вашей классификации спама с использованием spamassassin и проверки вирусов с использованием clamav мы будем использовать интерфейс milter postfix вместо использования ресурсоемкого демона amavisd-new. Это очень эффективный способ, так как нам даже не нужно запускать clamd, milter clamav сам выполняет сканирование.

smtpd_milters = unix:/var/clamav/clmilter.socket unix:/var/run/spamass.sock
non_smtpd_milters = unix:/var/clamav/clmilter.socket unix:/var/run/spamass.sock

Создание файлов БД

postmap /etc/postfix/canonical  
postmap /etc/postfix/access  
postmap /etc/postfix/virtual  
postmap /etc/postfix/sender_access

Примеры файлов конфигурации

  • main.cf
  • master.cf
  • canonical
  • virtual
Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.