Установка и настройка Postfix из портов во freeBSD

Установка и настройка Postfix из портов во freeBSD

Postfix создавался как альтернатива Sendmail и он быстро работает, легок в администрировании, и безопасный.

Для начала установить нужно SpamAssassin, поставлю я его из портов:

# cd /usr/ports/mail/p5-Mail-SpamAssassin
# make all install clean

В меню установки я отключаю “SPAMC” и выбираю “GNUPG“, “MYSQL“, “RAZOR”.

Создам нового юзера “vscan”

# pw groupadd vscan
# pw useradd -n vscan -c Amavisd\ User -d /var/amavisd -g vscan -m
# passwd vscan

Затем вводим 2 раз пасс.

Создам файлик и отредактирую его:

# ee /usr/local/etc/mail/spamassassin/local.cf
use_bayes 1
bayes_store_module Mail::SpamAssassin::BayesStore::MySQL
bayes_sql_dsn DBI:mysql:maia
bayes_sql_username vscan
bayes_sql_password vscan_password
auto_whitelist_factory Mail::SpamAssassin::SQLBasedAddrList
user_awl_dsn DBI:mysql:maia
user_awl_sql_username vscan
user_awl_sql_password vscan_password
bayes_auto_expire 0

# Change 192.168.1.* to your actual internal/external address(es).
internal_networks 192.168.1.0/24
trusted_networks 192.168.1/24

Настраиваем отчеты для RAZOR

# su - vscan
# razor-admin -discover
# razor-admin -create
# razor-admin -register -l -user=username@domain.tld -pass=some_password
# exit

Замечание!!!! Пользователь о котором я говорил выше, должен уже созданным пользователем, ящик которого вы проверяете. Это нужно системе razor2 для идентификации и отправки отчетов о спаме.

Установка и настройка Postfix из портов во freeBSD

# cd /usr/ports/mail/postfix
# make install clean

В меню параметров выбираем  “DOVECOT“, “TLS“, “BDB“, “MySQL“ и “VDA”. НЕ ЗАБЫВАЕМ ОБ ЭТОМ!
После установки постфикса, вылетит строка с надписью «Would you like to activate Postfix in (хотите ли вы активировать Postfix в) /etc/mail/mailer.conf [n]?», пишем «y» и жмем «Enter».

Теперь, чтобы избежать путаницы с другими приложениями, которые используют постфиксный синтаксис сделаем быструю символическую ссылку:

# ln -s /usr/local/etc/postfix /etc/postfix

Добавляем в автозапуск:

# echo 'postfix_enable="YES" ' >> /etc/rc.conf

Создам файлик и отредактирую его:

# ee /etc/periodic.conf

Добавим в файл следующие строки.

daily_clean_hoststat_enable="NO"
daily_status_mail_rejects_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO"

Создаю безопасный SMTP SSL сертификат:

# mkdir -p /etc/ssl/postfix
# cd /etc/ssl/postfix
# openssl req -new -x509 -nodes -out smtpd.pem -keyout smtpd.pem -days 3650
# chmod 640 /etc/ssl/postfix/smtpd.pem
# chgrp -R postfix /etc/ssl/postfix

После чего начнем редактирование конфигурации:

# ee /usr/local/etc/postfix/main.cf
...
#ALIAS DATABASE
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

#Учтите что это размер сообщения целиком, а не только его вложения
message_size_limit = 10240000

# SOFT BOUNCE
#
# The soft_bounce parameter provides a limited safety net for
# testing.  When soft_bounce is enabled, mail will remain queued that
# would otherwise bounce. This parameter disables locally-generated
# bounces, and prevents the SMTP server from rejecting mail permanently
# (by changing 5xx replies into 4xx replies). However, soft_bounce
# is no cure for address rewriting mistakes or mail routing mistakes.
#
soft_bounce = no

# SASL CONFIG
#
broken_sasl_auth_clients = yes
smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks
smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
# Пришлось убрать, не у всех хостов есть
#  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname,
# Убрал так как не работают
#  reject_rbl_client list.dsbl.org,
#  reject_rbl_client bl.spamcop.net,
#  reject_rbl_client sbl-xbl.spamhaus.org
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

# TLS CONFIG
#
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/ssl/postfix/smtpd.pem
smtpd_tls_cert_file = /etc/ssl/postfix/smtpd.pem
smtpd_tls_CAfile = /etc/ssl/postfix/smtpd.pem
smtpd_tls_loglevel = 0
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom    

# MySQL Configuration
#
virtual_alias_maps = proxy:mysql:/usr/local/etc/postfix/mysql_virtual_alias_maps.cf
virtual_gid_maps = static:125
virtual_mailbox_base = /usr/local/virtual
virtual_mailbox_domains = proxy:mysql:/usr/local/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_limit = 51200000
virtual_mailbox_maps = proxy:mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 125
virtual_transport = virtual
virtual_uid_maps = static:125    

# Additional for quota support
# vda patch в портах FreeBSD по умолчанию накладывается
# Установка и настройка Postfix из портов во freeBSD
# Do we use Courier maildir++ quotas?
# Default: no
virtual_maildir_extended = yes
#virtual_mailbox_limit_inbox = yes

virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = proxy:mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
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
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, this user has overdrawn their diskspace quota. Please try again later.
virtual_overquota_bounce = yes
...
#Строку ниже заремил (прим переводчика)
#myhostname = host.domain.tld
...
#Строку ниже заремил (прим переводчика)
#mydomain = domain.tld
...
#Строку ниже заремил (прим переводчика), перестала отправляться локальная почта
#mydestination = localhost.$mydomain, localhost
...
relay_domains = proxy:mysql:/usr/local/etc/postfix/mysql_relay_domains_maps.cf
...

Отредактирую файлик master.cf:

# ee /usr/local/etc/postfix/master.cf
...
smtps inet n - n - - smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
...

Создаю и после этого редактирую файл mysql_virtual_alias_maps.cf:

# ee /usr/local/etc/postfix/mysql_virtual_alias_maps.cf
user = postfix
password = postfix_sql_password
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'

Создаю и после этого редактирую файл mysql_virtual_domains_maps.cf:

# ee /usr/local/etc/postfix/mysql_virtual_domains_maps.cf
user = postfix
password = postfix_sql_password
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '0' and active = '1'

Создаю и после этого редактирую файл /mysql_virtual_mailbox_maps.cf:

# ee /usr/local/etc/postfix/mysql_virtual_mailbox_maps.cf
user = postfix
password = postfix_sql_password
hosts = localhost
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'

Создаю и после этого редактирую файл mysql_virtual_mailbox_limit_maps.cf:

# ee /usr/local/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
user = postfix
password = postfix_sql_password
hosts = localhost
dbname = postfix
query = SELECT quota FROM mailbox WHERE username='%s'

Создаю и после этого редактирую файл mysql_relay_domains_maps.cf:

# ee /usr/local/etc/postfix/mysql_relay_domains_maps.cf
user = postfix
password = postfix_sql_password
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '1'

Обеспечиваем полную безопасность файликов с пасами:

# chmod 640 /usr/local/etc/postfix/mysql_*
# chgrp postfix /usr/local/etc/postfix/mysql_*

Редактируем файл /etc/aliases

Меняем root на свой почтовый адрес для доставки системных сообщений.
root: you@your-domain.tld

Создаем файл aliases.db

# ee /usr/bin/newaliases

Создаем папку для вирт почтовых ящиков

# mkdir /usr/local/virtual
# chown -R postfix:postfix /usr/local/virtual
# chmod -R 700 /usr/local/virtual

Установка и настройка Postfix из портов во freeBSD выполнена на 100%. Очень хороший FTP сервис, я советую именно его.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.