2015-03-24 7 views
0

Я пытаюсь отправить электронную почту через удаленный vm, запущенный postfix в качестве сервера smtp.Postfix SMTP на удаленных серверах Ответ 554 Релейный доступ запрещен для rcpt (получатель). Работает нормально на локальном сервере smtp

При отправке rcpt со значением 554 - Relay access denied факсом возникает ошибка.

(554, b'5.7.1 <[email protected]>: Relay access denied') 

Я понимаю, что это отрицание электронной почты я пытающаяся установить в качестве получателя, но я не понимаю, почему.


сама розетка устанавливается в порядке, и я могу отправить mail CMD перед а к попытке rcpt.


Окружающая среда Детали:

Хост машина:

Windows 7 машина/Язык: Python 3.

Гость VM:

Контейнер для докеров (Ubuntu) VM работает postfix, ssh - с адресом, назначенным dhcp, 10.35.50.166.


Это python код работает:

(на хост-машины):

import smtplib 
server = smtplib.SMTP(host='10.35.50.166', port=8025) 

server.mail('[email protected]') 
(250, b'2.1.0 Ok') 

server.rcpt('[email protected]') 
(554, b'5.7.1 <[email protected]>: Relay access denied') 

Запуск из гостевой машины, ошибка не происходит:

import smtplib 
server = smtplib.SMTP(host='localhost', port=8025) 

server.mail('[email protected]') 
(250, b'2.1.0 Ok') 

server.rcpt('[email protected]') 
(250, b'2.1.5 Ok') 
+0

24 марта 22:57:38 04305ce1d661 постфикса/smtpd [25121]: NOQUEUE: отклонить: RCPT от неизвестной [172.17.42.1]: 554 5.7.1 <[email protected]>: доступ реле отказано; from = <[email protected]> to = <[email protected]> proto = SMTP – eclewlow

ответ

2

конфигурации по умолчанию Postfix»на Ubuntu позволяет получить доступ реле только на локальном интерфейсе (то есть локальный) , При подключении к другим интерфейсам (сеть VM) требуется проверка подлинности SMTP.

Таким образом, вы можете либо добавить аутентификацию к вашему SMTP-вызову, либо добавить свой IP-адрес хоста в разрешенные сети ретрансляции.

для того чтобы достигнуть позже, найти строку в /etc/postfix/main.cf файл, который читает

mynetworks = 127.0.0.0/8 

и изменить его на

127.0.0.0/8,10.0.0.0/8 

Затем перезагрузите постфикс с

sudo postfix reload 

Edit: В качестве альтернативы вы можете установить mynetworks_style s Эттинг к

mynetworks_style = subnet 

См BASIC CONFIGURATION README

+0

Проработал 3 часа, перейдя в проблему, которая была точно такой же, как и та, что была. Спасибо за помощь! – JackTheKnife

0

В файле main.cf на постфиксном сервере будет ошибка конфигурации, которая не позволила вашей локальной сети разрешить ретрансляцию.

Ваша потребность что-то вроде

Localnetworks = 0.0.0.0/24 (сеть или IP является гостевой машины)

0

Выпуск фиксирован. Это конфигурация, которую я использую сейчас. Проблема была с директивой mynetworks благодаря itchee.

# See /usr/share/postfix/main.cf.dist for a commented, more complete version 


# Debian specific: Specifying a file name will cause the first 
# line of that file to be used as the name. The Debian default 
# is /etc/mailname. 
#myorigin = /etc/mailname 

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) 
biff = no 

# appending .domain is the MUA's job. 
append_dot_mydomain = no 

# Uncomment the next line to generate "delayed mail" warnings 
#delay_warning_time = 4h 

readme_directory = no 

# TLS parameters 
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem 
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.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 

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for 
# information on enabling SSL in the smtp client. 

myhostname = localhost 
#myorigin = $mydomain 
#relayhost = $mydomain 


alias_maps = hash:/etc/aliases 
alias_database = hash:/etc/aliases 
mydestination = localdomain, localhost, localhost.localdomain, localhost 

relayhost = 

#mynetworks = 127.0.0.0/8 [::]/128 [::ffff:127.0.0.0]/104 [::1]/128 

mynetworks = 127.0.0.0/8 10.0.0.0/8 172.0.0.0/8 [::]/128 [::ffff:127.0.0.0]/104 [::1]/128 


mailbox_size_limit = 0 
recipient_delimiter = + 


#inet_interfaces = localhost 
+1

Привет eclewlow, Добро пожаловать в сеть обмена стеками! Поскольку это был ответ itchee, который помог вам решить вашу проблему, вы должны принять их ответ, чтобы дать им кредит и сообщить другим, что ваша проблема решена. Для получения дополнительной информации см. [Как работает прием ответа?] (Https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work). Кроме того: это скорее системное администрирование, чем вопрос, связанный с программированием, поэтому он не соответствует теме StackOverflow. Ошибка сервера имеет более [3 000 тегов вопросов Postfix] (http://serverfault.com/questions/tagged/postfix?sort=newest). –

Смежные вопросы