====== Пример почтового сервера с несколькими внутренними доменами ======
~~TOC wide~~
|WAN|-|-|v|-|-|-|-|-|-|-|.|WAN{border-color:silver;background-color:silver;}=**Интернет**
| | | | | |!@4| | | | | | | |!@1|
| |F|~|~|~|#|~|~|~|~|~|~|~|#|~|~|~|~|~|~|7|
|SMTP||Input|-@2|System|-@8|Output|-@8|Switch| |Input=**[[#Входной сервер|Вход]]**|Output=**[[#Выходной сервер|Выход]]**|System=**[[#Системный сервер|Системный ]]**|SMTP{border-color:#a9c}=Сервер SMTP\\ **[[#Postfix]]**|Switch=**[[#Переключающий сервер|Переключатель]]**| |:|
| |L|~|~|~|#|~|~|~|#|~|~|~|~|~|~|~|#|~|~|J|
| | | | | |! | | | |!@4| | | | | | | |!@1|
| |F|~|~|~|#|~|~|~|#|~|~|7| | | | |!|
|Dovecot| | |! | | | BCC| |:| | | | |!@4|BCC=**[[#Ящик для хранения копий писем|Копии писем]]**|Dovecot{border-color:#a9c}=Сервер IMAP\\ **[[#Dovecot]]**
| |L|~|~|~|#|~|~|~|~|~|~|J| | | | |!|
| | | | | |!@4 | | | | | | | | | | | |!|
|LAN|-|-|^|-|-|-|-|-|-|-|-|-|-|-|'|LAN{border-color:silver;background-color:silver;}=**Локальная сеть**
====== Postfix ======
Основная статья о [[postfix:postfix|Postfix]]
В данном примере использована [[postfix:postfix#Работа с несколькими экземплярами|работа с несколькими экземплярами Postfix]], далее приведены команды, которые нужно выполнить для работы в этом режиме:
postmulti -e init
postmulti -I postfix-i -G in -e create
postmulti -i postfix-i -e enable
postmulti -I postfix-o -G out -e create
postmulti -i postfix-o -e enable
postmulti -I postfix-s -G switch -e create
postmulti -i postfix-s -e enable
Нужно создать символические ссылки на ''/etc/postfix/dynamicmaps.cf'':
ln -s /etc/postfix/dynamicmaps.cf /etc/postfix-i
ln -s /etc/postfix/dynamicmaps.cf /etc/postfix-o
ln -s /etc/postfix/dynamicmaps.cf /etc/postfix-s
===== virtual_alias_maps =====
FIXME
virtual_alias_maps = hash:/etc/postfix-i/virtual ldap:/etc/postfix/ldap-users-1.cf ldap:/etc/postfix/ldap-groups-1.cf ldap:/etc/postfix/ldap-users-2.cf ldap:/etc/postfix/ldap-groups-2.cf
server_host = localhost
bind = yes
version = 3
# query_filter = (&(!(l=disabled)) (|(mail=%s)(maildrop=%s))(objectclass=mailUser))
search_base = ou=users,dc=sub1,dc=domain
query_filter = (&(|(mail=%s)(maildrop=%s))(objectclass=mailUser))
result_attribute = maildrop
server_host = localhost
search_base = ou=groups,dc=sub1,dc=domain
query_filter = (&(|(mail=%s)(mailRoutingAddress=%s))(objectclass=mailGroup))
special_result_attribute = member
result_attribute = maildrop
server_host = localhost
bind = yes
version = 3
search_base = ou=users,dc=sub2,dc=domain
# query_filter = (&(!(l=disabled)) (|(mail=%s)(maildrop=%s))(objectclass=mailUser))
query_filter = (&(|(mail=%s)(maildrop=%s))(objectclass=mailUser))
result_attribute = maildrop
server_host = localhost
search_base = ou=groups,dc=sub1,dc=domain
query_filter = (&(|(mail=%s)(mailRoutingAddress=%s))(objectclass=mailGroup))
special_result_attribute = member
result_attribute = maildrop
===== Системный сервер =====
Папка: ''/etc/postfix''
Сервер решает задачи доставки почты локальных (системный) пользователей, и [[#Ящик для хранения копий писем|копий писем]] всех пользователей с помощью [[#Dovecot|Dovecot]].
==== main.cf ====
smtpd_banner = $myhostname ESMTP $mail_name
biff = no
append_dot_mydomain = no
readme_directory = no
myorigin = localhost
myhostname = localhost.localdomain
mydestination = localhost
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
relayhost =
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = 127.0.0.1
default_transport = error
relay_transport = error
multi_instance_enable = yes
multi_instance_wrapper = ${command_directory}/postmulti -p --
multi_instance_directories = /etc/postfix-i /etc/postfix-o /etc/postfix-s
virtual_mailbox_domains = localhost.localdomain
virtual_transport = lmtp:unix:private/dovecot-lmtp
==== transport ====
Описание транспортов.
Этот файл используются во всех экземплярах сервера
localhost.localdomain :127.0.0.1
.localhost.localdomain :127.0.0.1
sub1.domain.ru smtp:smtp.sub1.domain.ru
sub2.domain.ru smtp:smtp.sub2.domain.ru
Компиляция:
postmap /etc/postfix/transport
===== Входной сервер =====
Для проверки почты используется [[amavisd-new:amavisd-new|AMaViSd-new]], настройка файла ''master.cf'' описана в разделе [[postfix:postfix#AMaViSd-new|AMaViSd-new]]
Более подробно параметры безопасности описаны в главе [[postfix:postfix#Безопасность|Безопасность]]
Папка: ''/etc/postfix/postfix-i''
==== main.cf ====
unknown_local_recipient_reject_code = 550
readme_directory = no
inet_protocols = ipv4
recipient_delimiter = +
multi_instance_enable = yes
multi_instance_group = in
multi_instance_name = postfix-i
data_directory=/var/lib/postfix-i
queue_directory = /var/spool/postfix-i
mynetworks = 127.0.0.0/8
myhostname = ИМЯ_ХОСТА
smtpd_proxy_ehlo = ИМЯ_СЕРВЕРА
smtpd_banner = $myhostname ESMTP
inet_interfaces = ВНЕШНИЙ_АДРЕС ВНУТРЕННИЙ_АДРЕС
mydestination = ПОЧТОВЫЙ_ДОМЕН_1 ПОЧТОВЫЙ_ДОМЕН_2
content_filter=smtp-amavis:[127.0.0.1]:10024
virtual_alias_maps = hash:/etc/postfix-i/virtual
relayhost =
disable_vrfy_command = yes
show_user_unknown_table_name = no
smtpd_helo_required = yes
smtpd_helo_restrictions=
permit_mynetworks,
permit_sasl_authenticated,
reject_invalid_hostname,
reject_non_fqdn_hostname,
reject_invalid_helo_hostname,
reject_unknown_helo_hostname
smtpd_sender_restrictions=
reject_non_fqdn_sender,
reject_unknown_sender_domain,
reject_unlisted_sender,
permit_mynetworks,
permit_sasl_authenticated
smtpd_recipient_restrictions=
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
reject_unlisted_recipient,
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination
reject_invalid_hostname
smtpd_data_restrictions=
reject_unauth_pipelining,
reject_multi_recipient_bounce
smtpd_etrn_restrictions=
permit_mynetworks,
permit_sasl_authenticated,
reject
message_size_limit = 30720000
virtual_alias_maps = hash:/etc/postfix-i/virtual ldap:/etc/postfix/ldap-users-1.cf ldap:/etc/postfix/ldap-groups-1.cf ldap:/etc/postfix/ldap-users-2.cf ldap:/etc/postfix/ldap-groups-2.cf
always_bcc = bcc@localhost.localdomain
receive_override_options = no_address_mappings
transport_maps = hash:/etc/postfix/transport
:!: Имя заданное в ''smtpd_proxy_ehlo'' должно разрешаться внешними DNS серверами
:!: В строке ''inet_interfaces = ВНЕШНИЙ_АДРЕС ВНУТРЕННИЙ_АДРЕС'' нужно указать специальный ''ВНУТРЕННИЙ_АДРЕС'' с которого входящая почта будет отправятся в локальную сеть.
Например можно использовать адрес ''127.0.0.2'', вот пример его описания для ''/etc/network/interfaces'':
auto lo:0
iface lo:0 inet static
address 127.0.0.2
Добавление псевдонима "на ходу":
ifconfig lo:0 127.0.0.2 up
В переменой ''virtual_alias_maps'' определен список источников для разрешение почтовых адресов (т.е. для получения соответствия адреса пользователя во внешних доменах с адресом во внутренних)
:!: В качестве [[LDAP:LDAP|LDAP]] сервера специально указан ''localhost'', т.к. хорошо иметь на одном компьютере с почтовым сервером и [[LDAP:LDAP|LDAP]] сервер, на котором находятся реплики внутренних серверов.
Сделано это для того, чтобы при временном отсутствии связи разрешение почтовых адресов происходило правильно. \\ Пример настройки: [[openldap:openldap#Подчиненный сервер для нескольких доменов|Подчиненный сервер для нескольких доменов]]
==== virtual ====
Список соответствия пользователей
Поскольку существует два внутренних домена, почта внешнего пользователя должна доставляться пользователю в нужный внутренний домен.
test: test@domain.ru
test1: test1@sub1.domain.ru
test2: test2@sub2.domain.ru
Компиляция:
postalias /etc/postfix-i/virtual
===== Выходной сервер =====
Маскарад домена
Папка: ''/etc/postfix/postfix-o''
==== main.cf ====
unknown_local_recipient_reject_code = 550
smtpd_banner = $myhostname ESMTP
readme_directory = no
inet_protocols = ipv4
recipient_delimiter = +
multi_instance_enable = yes
multi_instance_group = out
multi_instance_name = postfix-o
queue_directory = /var/spool/postfix-o
data_directory = /var/lib/postfix-o
relayhost =
mydestination = ПОЧТОВЫЙ_ДОМЕН_1 ПОЧТОВЫЙ_ДОМЕН_2
myhostname = ИМЯ_СЕРВЕРА
mynetworks = ВНУТРЕННЯЯ_СЕТЬ_1, ВНУТРЕННЯЯ_СЕТЬ_2
inet_interfaces = ВНУТРЕННИЙ_АДРЕС
smtp_bind_address = ВНЕШНИЙ_АДРЕС
smtp_helo_name = $myhostname
smtp_generic_maps = hash:/etc/postfix-o/generic
receive_override_options = no_address_mappings
always_bcc = bcc@localhost.localdomain
transport_maps = hash:/etc/postfix/transport
receive_override_options =
delay_warning_time = 4h
==== master.cf ====
Меняем стандартный порт ''smtp'' на ''587''
587 inet n - - - - smtpd
==== generic ====
[[postfix:postfix#Маскарад адресов|Маскарад адресов]]
@sub2.domain.ru @domain.ru
@sub2.domain.ru @domain.ru
Компиляция:
postmap /etc/postfix-o/generic
===== Переключающий сервер =====
Принимает почту от из внутренней сети и перенаправляет ее на другие внутренние серверы или отравляет на внешние серверы через [[#Выходной сервер|Выходной сервер]], фактически это режим [[http://ru.wikipedia.org/wiki/Smart_host|Smart host]]
Папка: /etc/postfix/postfix-s
==== main.cf ====
unknown_local_recipient_reject_code = 550
smtpd_banner = $myhostname ESMTP (s)
readme_directory = no
inet_protocols = ipv4
recipient_delimiter = +
multi_instance_enable = yes
multi_instance_group = switch
multi_instance_name = postfix-s
queue_directory = /var/spool/postfix-s
data_directory = /var/lib/postfix-s
relayhost = ВНУТРЕННИЙ_АДРЕС:587
mydestination = ПОЧТОВЫЙ_ДОМЕН_1 ПОЧТОВЫЙ_ДОМЕН_2
myhostname = ИМЯ_СЕРВЕРА
mynetworks = ВНУТРЕННЯЯ_СЕТЬ_1, ВНУТРЕННЯЯ_СЕТЬ_2
inet_interfaces = ВНУТРЕННИЙ_АДРЕС
smtp_helo_name = $myhostname
receive_override_options = no_address_mappings
transport_maps = hash:/etc/postfix/transport
receive_override_options =
====== Dovecot ======
FIXME
Основная статья о [[dovecot:dovecot|Dovecot]]
===== Ящик для хранения копий писем =====
В примере используется адрес: ''bcc@localhost.localdomain''
[[postfix:postfix#Копирование всей почты|Postfix: Копирование всей почты]]
===== dovecot.conf =====
!include_try /usr/share/dovecot/protocols.d/*.protocol
!include conf.d/*.conf
!include_try local.conf
protocols = imap pop3 lmtp
===== users =====
Файл с описанием пользователей
[[dovecot:dovecot#Создание пароля|Создание пароля]]
bcc:{PLAIN}PASSWORD..:3000:3000::/home/dovecot/BCC::userdb_mail=maildir:~/
===== 10-auth.conf =====
disable_plaintext_auth = no
auth_username_format = %Ln
auth_mechanisms = plain
!include auth-passwdfile.conf.ext
===== 10-director.conf =====
service director {
unix_listener login/director {
}
fifo_listener login/proxy-notify {
}
unix_listener director-userdb {
}
inet_listener {
}
}
service imap-login {
}
service pop3-login {
}
protocol lmtp {
}
===== 10-master.conf =====
service imap-login {
service_count = 1
inet_listener imap {
port = 143
}
}
service pop3-login {
service_count = 1
inet_listener pop3 {
port = 110
}
}
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
group = postfix
mode = 0666
user = postfix
}
}
service imap {
process_limit = 10
}
service pop3 {
process_limit = 10
}
service auth {
unix_listener auth-master {
mode = 0666
}
unix_listener auth-userdb {
mode = 0666
user = vmail
group = mail
}
unix_listener /var/spool/postfix/private/auth {
mode = 0666
}
service auth-worker {
}
service dict {
unix_listener dict {
}
}
===== 15-lda.conf =====
postmaster_address = root@localhost.localdomain
hostname = mail.domain.ru
protocol lda {
}
===== 15-mailboxes.conf =====
namespace inbox {
mailbox Drafts {
special_use = \Drafts
auto = create
}
mailbox Junk {
special_use = \Junk
auto = create
}
mailbox Trash {
special_use = \Trash
auto = create
}
mailbox Sent {
special_use = \Sent
auto = create
}
mailbox "Sent Messages" {
special_use = \Sent
}
}
===== 20-lmtp.conf =====
protocol lmtp {
mail_plugins = $mail_plugins sieve
}
===== auth-passwdfile.conf.ext =====
passdb {
driver = passwd-file
args = scheme=CRYPT username_format=%u /etc/dovecot/users
}
userdb {
driver = passwd-file
args = username_format=%u /etc/dovecot/users
}
====== Ссылки ======
[[http://www.postfix.org/STANDARD_CONFIGURATION_README.html|Postfix Standard Configuration Examples]]
[[http://www.postfix.org/MULTI_INSTANCE_README.html|Managing multiple Postfix instances on a single host]]
[[http://vova33.blogspot.ru/2014/03/postfix.html|Системное и сетевое администрирование: postfix - повышаем безопасность]]
{{tag>Examples Linux Debian Email}}