Я работаю над несколькими серверами (9 Linux Suse 11 и Linux Suse 12). 7/9 (электронная почта работает) (все в одной сети) могут отправлять электронную почту, как сценарий ниже, мне нужно отправить электронное письмо из сценария оболочки в внешний домен.
mailx -a /opt/script/log/status.log -S smtp=[..].net -r
"test@gmail.com" -s "$HOSTNAME critical_subject " -v "mymail@gmail.com" << EOF
Critical Status found during the Monitoring and Control Operation. Please
check the Attach Log.
EOF
в результате я получил это:
Resolving host [..] . . . done.
Connecting to [..]:smtp . . . connected.
220 [..] ESMTP Wed, 02 Aug 2017 09:42:58 +0200
>>> HELO a.b.c
250 a.b.c.Hello [..]
>>> MAIL FROM:<test@gmail.com>
250 OK
>>> RCPT TO:<mymail@gmail.com>
550 relay is not permitted on this host.
smtp-server: 550 relay is not permitted on this host.
"/root/dead.letter" 102/5133
. . . message not sent.
любое предложение? какую информацию я могу предоставить?
main.cf
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
data_directory = /var/lib/postfix
mail_owner = postfix
# REJECTING MAIL FOR UNKNOWN LOCAL USERS
unknown_local_recipient_reject_code = 550
smtpd_banner = $myhostname ESMTP
debug_peer_level = 2
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
ddd $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
setgid_group = maildrop
html_directory = /usr/share/doc/packages/postfix-doc/html
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/packages/postfix-doc/samples
readme_directory = /usr/share/doc/packages/postfix-doc/README_FILES
biff = no
content_filter =
delay_warning_time = 1h
disable_dns_lookups = no
disable_mime_output_conversion = no
disable_vrfy_command = yes
inet_interfaces = localhost
inet_protocols = all
masquerade_classes = envelope_sender, header_sender, header_recipient
masquerade_domains =
masquerade_exceptions = root
mydestination = $myhostname, localhost.$mydomain
myhostname = domain.domain.net
mynetworks_style = subnet
mynetworks= [list of ip in subnet form]
relayhost = relay_adress
alias_maps = hash:/etc/aliases
canonical_maps = hash:/etc/postfix/canonical
relocated_maps = hash:/etc/postfix/relocated
sender_canonical_maps = hash:/etc/postfix/sender_canonical
transport_maps = hash:/etc/postfix/transport
mail_spool_directory = /var/mail
message_strip_characters = \0
defer_transports =
mailbox_command =
mailbox_transport =
mailbox_size_limit = 0
message_size_limit = 0
strict_8bitmime = no
strict_rfc821_envelopes = no
smtpd_delay_reject = yes
smtpd_helo_required = no
smtpd_client_restrictions =
smtpd_helo_restrictions =
smtpd_sender_restrictions = hash:/etc/postfix/access
smtpd_recipient_restrictions = permit_mynetworks,reject_unauth_destination
############################################################
# SASL stuff
############################################################
smtp_sasl_auth_enable = no
smtp_sasl_security_options =
smtp_sasl_password_maps =
smtpd_sasl_auth_enable = no
############################################################
# TLS stuff
############################################################
relay_clientcerts =
smtp_use_tls = no
smtp_enforce_tls = no
smtp_tls_CAfile =
smtp_tls_CApath =
smtp_tls_cert_file =
smtp_tls_key_file =
smtp_tls_session_cache_database =
smtpd_use_tls = no
smtpd_tls_CAfile =
smtpd_tls_CApath =
smtpd_tls_cert_file =
smtpd_tls_key_file =
smtpd_tls_ask_ccert = no
smtpd_tls_received_header = no
############################################################
# Start MySQL from postfixwiki.org
############################################################
relay_domains = $mydestination, hash:/etc/postfix/relay
virtual_alias_domains = hash:/etc/postfix/virtual
virtual_alias_maps = hash:/etc/postfix/virtual
ОБНОВИТЬ: По какой-то причине я не могу отправлять электронную почту с этого хоста. Итак, я пытаюсь использовать одну из 7 рабочих машин, чтобы отправить электронное письмо. Добавлен в "сломанный" список ip-адресов mynetworks и realy_host в качестве адреса рабочего устройства, которое я хочу использовать в качестве реле. В релейном я добавил в свои сети адрес сломанного. Не сработало
ОБНОВЛЕНИЕ2: Это была проблема SMTP клиентского клиента. Закрою вопрос.
Поскольку эта ошибка появляется после RCPT TO:
, соответствующий параметр конфигурации Postfix либо smtpd_recipient_restrictions
или smtpd_relay_restrictions
, в зависимости от этого:
В версиях Postfix до 2.10 правила разрешения ретрансляции и блокировки спама были объединены в
smtpd_recipient_restrictions
, что приводит к подверженной ошибкам конфигурации. Начиная с Postfix 2.10, правила разрешения ретрансляции предпочтительно реализованы сsmtpd_relay_restrictions
, так что разрешающая политика блокировки спама подsmtpd_recipient_restrictions
больше не приведет к разрешающей политике ретрансляции почты.
У вас есть
smtpd_recipient_restrictions = permit_mynetworks,reject_unauth_destination
и как не присутствующий, ваш smtpd_relay_restrictions
попадает в значение по умолчанию:
smtpd_relay_restrictions =
permit_mynetworks, permit_sasl_authenticated, defer_unauth_destination
Поскольку ваш сценарий не аутентифицируется с помощью SASL, это должно быть разрешено permit_mynetworks
, т.е. он должен быть указан в mynetworks
. Вы не указали его в своей конфигурации, но можете проверить это с помощью postconf | grep "mynetworks = "
. Поскольку вы подключаетесь к внешнему интерфейсу вместо localhost (smtp=[..].net
), он должен включать внешний IP.
Это может повлиять на значение по умолчанию mynetworks
, вызывая различия между вашими серверами:
Уточнить
mynetworks_style = subnet
когда Postfix должен «доверять» удаленным SMTP-клиентам в тех же IP-подсетях, что и локальная машина. В Linux это работает правильно только с интерфейсами, указанными вifconfig
команда.
Поэтому может быть лучше указать mynetworks
параметр вручную, например
mynetworks = 127.0.0.0/8 198.51.100.10/32