3. Установка Postfix - Установка связки Postfix, MySQL, SpamAssassin, Maia в FreeBSD.

3. Установка Postfix - Установка связки Postfix, MySQL, SpamAssassin, Maia в FreeBSD.

назад Оглавление вперед

Postfix безусловный фаворит среди MTA (программ для передачи почты), он используется многими администраторами почтовых серверов. Его отличает простота использования и стабильность работы. Более подробно узнать о программе вы можете на сайте http://www.postfix.org/. Данное руководство описывает установку версии 2.5.1_2,1.

Установим Postfix из портов:

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

Не забудьте выбрать в меню параметры “DOVECOT“, “TLS“, “BDB“, “MySQL“ и “VDA”.

Замечание:

По окончании установки Postfix, будет выведен вопрос:
Would you like to activate Postfix in (хотите ли вы активировать Postfix в) /etc/mail/mailer.conf [n]?
Нажмите “y” и завершите установку программы.

Остановим Sendmail:

#/etc/rc.d/sendmail forcestop

Если этой командой не удалось остановить Sendmail, попробуйте вручную найти и убить PID. Или воспользуйтесь следующей командой.

#sh
#for i in `ps auxwww|grep sendmail|awk '{print $2}'`;do kill $i;done && exit

Отредактируем /etc/rc.conf для отключения Sendmail и запуска Postfix при загрузке:

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

sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
postfix_enable="YES"

Создадим и отредактируем файл /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

Отредактируем файл /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
#
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
...

Отредактируем файл /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
...

Создадим и отредактируем файл /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'

Создадим и отредактируем файл /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'

Создадим и отредактируем файл /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'

Создадим и отредактируем файл /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'

Создадим и отредактируем файл /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_*

Обновим базу соответствия транспорта

#postmap /usr/local/etc/postfix/transport

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

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

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

#/usr/bin/newaliases

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

#mkdir /usr/local/virtual
#chown -R postfix:postfix /usr/local/virtual
#chmod -R 700 /usr/local/virtual
назад Оглавление вперед