Настройка postfix

Postfix, по отзывам, очень надежный почтовик, понятная конфигурация, активно развивается. Решил поставить. В связке с dovecot.

Доходчиво описан принцип работы тут:

http://onix.opennet.ru/content/view/23/26/ , схема несколько неполная, в тексте написано больше чем нарисовано на схеме.
http://www.opennet.ru/docs/RUS/postfix_zones/#n34
полезная документация на русском - http://freesource.info/wiki/Dokumentacija/Postfix?v=1d3p& http://www.postfix.ru/
обсуждение вопросов спама http://habrahabr.ru/post/101628/

Настроил в связке с dovecot, раздающим почту пользователям(pop, imap). Postfix у меня выполянет роль почтовго сервера для нескольких доменов. Пользователи postfix - виртуальные пользователи, никак не связанные с системными учетными записями.
Конфигурация задается в файлах main.cf и master.cf. В main.cf нужно указывать только параметры, которые будут отличаться от заданных по умолчанию. Команда postconf -d выводит значения конфигурационных параметров, заданных по умолчанию, postconf -n - значения конфигурационных параметров, отличающихся от заданных по умолчанию, postconf - все конфигурационные параметры, postconf name_of_parameter выводит текущее значение параметра "name_of_parametr". Посмотреть все существующие параметры с описаниями можно с помощью команды man 5 postconf. Формат конфиг файла - все что начинается не с начала строки, считается продолжением предыдущей. # - комментарии.

В конфиг файле имеются ссылки на карты ( map ) ." Карты – это файлы и базы данных, которые Postfix использует для по
иска информации. Карты могут иметь разное назначение, но у них есть
общий признак: левая сторона (left hand side, LHS), называемая клю
чом, и правая сторона (right hand side, RHS), называемая значением." Чтобы определить, какие форматы карт поддерживает
Postfix, запускается команда postconf m. Это форматы btree, cdb, cidr, environ, hash, ldap, mysql, nis, pcre, proxy, regexp, sdbm, static, tcp, unix.
Индексированные карты, с которыми postfix работает быстро, это, например, hash, btree, dbm. Линейные карты (PCRE, regexp, CIDR и обычные файлы) читаются как файлы сверху вниз до первого совпадения, поэтому порядок расположения ключ-значение важен. Базы данных (MySQL, PostgreSQL, LDAP). Индексированные карты создаются из файлов с помощью команды postmap, postalias, newaliases, например,
postmap hash:/usr/local/etc/postfix/helo.reject
см. Postfix.book с.71

Задача:
Настроить почтовый сервер на обслуживание почтовых ящиков для установленых доменов. Пользователи являются виртуальными пользователями и не связаны с системными. Для приема-отправки почты пользователями предусмотрена sasl-авторизация и tls шифрование. При отправке почты пользователями проверяется соответствие адреса получателя требованиям fqdn. При приеме почты выставляется задержка при подключении 30с; отбрасывается почта если клиент торопится передавать команды до того как сервер подтвердит такую возможность; от клиента требуется HELO ; если неавторизованный клиент представляется в HELO адресами, обслуживаемыми этим сервером или отправитель принадлежит доменам, обслуживаемым этим сервером, то такая почта отбрасывается; запрещена отправка почты неавторизованным пользователям на почтовые ящики, обслуживаемые другими серверами; отбрасывается почта если домен отправителя или получателя не определяется; отбрасывается почта если адрес отправителя записан не в соответствии fqdn; отбрасывается почта если адрес получателя не существует.

Файл main.cf ###########################################

# Main configuration file for postfix begun on 08-12-12
# Based on config file rfom server2 ( Debian )
######################
alias_maps = hash:/usr/local/etc/postfix/aliases
# myhostname -как представляться в качестве клиента ( helo/ehlo )
# mydomain -по умолчанию - доменная часть myhostname
# myorigin - домен, добавляемый в исходящие сообщения
# mydestination - домен, в который адресуется почта
myhostname = mail.mydomain.com
mydomain = mydomain.com
myorigin = mydomain.com
mydestination = localhost
#
mynetworks = 127.0.0.1
mailbox_size_limit = 100000000
#
smtpd_helo_required = yes # требовать использование helo/ehlo
#smtpd_delay_reject = no # отключение "задержки в применении restriction-ов до поступления команды 'rcpt to:'"
#
smtpd_soft_error_limit = 5 # Если клиент вызывает ошибки и общее количество ошибок в теку
smtpd_hard_error_limit = 10 # щем SMTP сеансе меньше или равно значению параметра smtpd_
#smtpd_error_sleep_time = 1s # soft_error_limit, то каждая ошибка приводит к задержке на значе
# ние smtpd_error_sleep_time.
# Если клиент вызывает ошибки и общее количество ошибок в SMTP
# сеансе превышает значение smtpd_soft_error_limit, то каждая ошиб
# ка вызывает дополнительную задержку на количество секунд, рав
# ное числу ошибок сверх значения параметра smtpd_soft_error_limit.
# Если количество ошибок клиента превышает значение smtpd_hard_
# error_limit, то Postfix завершает сеанс.
#
unverified_recipient_reject_code = 550 # код ошибки в случае несуществующего получателя ( default 450 )
smtpd_sender_login_maps = hash:/usr/local/etc/postfix/valid_envelop_senders # карта соответствия логина пользователя и
# # отправителя корверта ( mail from: )
#smtpd_client_restrictions = reject_unauth_pipelining # перенес в smtpd_recipient_restrictions
#
# ограничения на соединение и данные конверта
smtpd_recipient_restrictions = reject_non_fqdn_recipient, # запрет адреса получателя с нарушением fqdn
reject_non_fqdn_sender, # запрет адреса отправителя с нарушением fqdn
reject_unknown_sender_domain, # запрет неизвестного домена отправителя
reject_unknown_recipient_domain, # запрет неизвестного домена получателя
permit_mynetworks, # разрешение почте для хостов из mynetworks
reject_authenticated_sender_login_mismatch, # запрет при несоответствии логина данным из
# /usr/local/etc/postfix/valid_envelop_senders
permit_sasl_authenticated, # разрешение прошедшим sasl authentication
reject_unauth_destination, # запрет отправки почты на чужие сервера
reject_unauth_pipelining, # запрет торопящимся передавать команды esmtp
check_helo_access hash:/usr/local/etc/postfix/helo_reject, # проверка информации из helo
check_sender_access hash:/usr/local/etc/postfix/sender_reject, # проверка информации из mail from:
reject_unverified_recipient, # запрет почты на несуществующие адреса
sleep 30 # пауза 30с
# reject_non_fqdn_helo_hostname,
# reject_invalid_helo_hostname,
# reject_unknown_helo_hostname
#
smtpd_data_restrictions = # ограничения на передаваемые данные
reject_multi_recipient_bounce # запрет многоадресной доставки с пустым именем отправителя
#
address_verify_map = btree:$data_directory/verify_cache # где хранить кэш верификации адресов
#
virtual_mailbox_domains = mydomain0.com # виртуальные домены
mydomain1.com
mydomain2.com
mydomain3.com
#
virtual_mailbox_base = /home/vmail # префикс путей для данных из virtual_mailbox_maps
virtual_mailbox_maps = hash:/usr/local/etc/postfix/vmailbox # перечень пользователей в доменах
# и путей к их почтовым ящикам
# если путь заканчивается / ,
# то формат почтового ящика - maildir
#virtual_minimum_uid = 100
virtual_uid_maps = static:9999
virtual_gid_maps = static:9999
virtual_alias_maps = hash:/usr/local/etc/postfix/valiases # алиасы для виртуальных доменов
#
home_mailbox = Maildir/
# sasl autentification с помощью dovecot
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous, noactive, nodictionary
broken_sasl_auth_clients = yes
#
# параметры TLS
smtpd_tls_security_level = may
#smtpd_tls_auth_only = yes
smtpd_tls_loglevel = 1
smtpd_tls_cert_file = /usr/local/etc/ssl/postfix/certs/cert.pem
smtpd_tls_key_file = /usr/local/etc/ssl/postfix/private/key.pem
#smtpd_tls_protocols = !SSLv2
#

http://maks-ik.ru/main/article/29
https://www.google.com/search?q=exec+9%3C%3E%2Fdev%2Ftcp%2F%24mailserver...
http://linuxshellaccount.blogspot.com/2008/04/using-bash-to-access-netwo...
http://serverfault.com/questions/38919/send-an-email-with-an-attached-fi...
http://unix.stackexchange.com/questions/116010/meaning-of-bash-i-dev-tcp...

Изменения начиная с postfix 2.10

Начиная с версии 2.10 изменилась конфигурация relay control

With Postfix versions before 2.10, the rules for relay permission and spam blocking were combined under smtpd_recipient_restrictions, resulting in error-prone configuration. As of Postfix 2.10, relay permission rules are preferably implemented with smtpd_relay_restrictions, so that a permissive spam blocking policy under smtpd_recipient_restrictions will no longer result in a permissive mail relay policy.

For backwards compatibility, sites that migrate from Postfix versions before 2.10 can set smtpd_relay_restrictions to the empty value, and use smtpd_recipient_restrictions exactly as before.

IMPORTANT: Either the smtpd_relay_restrictions or the smtpd_recipient_restrictions parameter must specify at least one of the following restrictions. Otherwise Postfix will refuse to receive mail:
reject, reject_unauth_destination
defer, defer_if_permit, defer_unauth_destination

Т.о., в простейшем случае добавляем в конфиг пустой параметр

smtpd_relay_restrictions =

Чтобы легче разобраться, см установки по умолчанию "postconf -d" output

http://www.postfix.org/SMTPD_ACCESS_README.html

http://www.postfix.org/postconf.5.html#smtpd_recipient_restrictions

 

Статья и обсуждение postfix на LF

Отправить комментарий

CAPTCHA
Чтобы убедиться в том что Вы не робот, ответьте, пожалуйста, на вопрос
Fill in the blank