У меня есть сервер postfix, настроенный на запрос имени пользователя и пароля при отправке электронной почты, однако я хотел бы добавить исключение, которое позволит отправлять почту без какой-либо аутентификации, если она направлена на определенный домен.
Кажется, я не могу найти никакой документации, как этого добиться или возможно ли это.
Мой main.cf:
smtpd_banner = $myhostname ESMTP $mail_name
biff = no
append_dot_mydomain = no
readme_directory = /usr/share/doc/postfix
smtpd_tls_cert_file = /etc/ssl/certs/server.crt
smtpd_tls_key_file = /etc/ssl/private/server.key
smtpd_use_tls = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
myhostname = ****.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination =
relayhost =
mynetworks = 127.0.0.0/8
recipient_delimiter = +
inet_interfaces = all
html_directory = /usr/share/doc/postfix/html
virtual_alias_domains =
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf
virtual_mailbox_base = /home/vmail
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
transport_maps = proxy:mysql:/etc/postfix/mysql-virtual_transports.cf
virtual_create_maildirsize = yes
virtual_maildir_extended = yes
virtual_mailbox_limit_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = "The user you are trying to reach is over quota."
virtual_overquota_bounce = yes
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $
content_filter = amavis:[127.0.0.1]:10024
receive_override_options = no_address_mappings
message_size_limit = 1024000000
virtual_mailbox_limit = 1073741824
smtpd_milters = inet:localhost:8892
Это можно сделать, добавив чек получателя в свой smtpd_recipient_restrictions
так что это будет выглядеть примерно так в main.cf
:
smtpd_recipient_restrictions =
permit_mynetworks,
check_recipient_access hash:/etc/postfix/access.recipients,
permit_sasl_authenticated,
reject_unauth_destination
Вам также необходимо создать файл, указанный в качестве аргумента для check_recipient_access
Правило, вот это /etc/postfix/access.recipients
.
Это должно выглядеть так (если example.com
были доменом получателя, который вы хотите разрешить):
example.com OK
И каждый раз, когда вы вносите изменения в этот файл, вам нужно запускать команду:
postmap /etc/postfix/access.recipients
Я совершенно уверен, что это невозможно. Причина в том, что после того, как клиент отправит HELO / EHLO, сервер попросит клиента пройти аутентификацию, прежде чем позволить клиенту выдавать любые другие команды.