2013-08-19 9 views
5

Mam ten błąd 554 Relay access denied podczas próby wysłania wiadomości e-mail z mojego klienta programu Outlook.Linux Postfix/dovecot 554 Odmowa dostępu do przekaźnika

Potrafię czytać przychodzące wiadomości e-mail, ale nie mogę ich wysyłać.

Jeśli łączę się z usługą localhost telnet 25, mogę wysyłać zewnętrzne wiadomości e-mail, ale z klientem programu Outlook to nie działa.

Oto mój Postfix i Dovecot config:

postconf -n

alias_database = hash:/etc/aliases 
alias_maps = hash:/etc/aliases 
append_dot_mydomain = no 
biff = no 
config_directory = /etc/postfix 
inet_interfaces = all 
mailbox_size_limit = 0 
mydestination = localhost 
myhostname = mail.mydomain.com 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 
myorigin = /etc/mailname 
readme_directory = no 
recipient_delimiter = + 
relayhost = 
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) 
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination 
smtpd_sasl_auth_enable = yes 
smtpd_sasl_path = private/auth 
smtpd_sasl_type = dovecot 
smtpd_tls_auth_only = yes 
smtpd_tls_cert_file = /etc/ssl/certs/dovecot.pem 
smtpd_tls_key_file = /etc/ssl/private/dovecot.pem 
smtpd_use_tls = yes 
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf 
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf 
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf 
virtual_transport = lmtp:unix:private/dovecot-lmtp 

doveconf -n

# 2.1.7: /etc/dovecot/dovecot.conf 
# OS: Linux 3.9.3-x86_64-linode33 x86_64 Ubuntu 13.04 ext3 
auth_mechanisms = plain login 
mail_location = maildir:/var/mail/vhosts/%d/%n 
mail_privileged_group = mail 
namespace inbox { 
    inbox = yes 
    location = 
    mailbox Drafts { 
    special_use = \Drafts 
    } 
    mailbox Junk { 
    special_use = \Junk 
    } 
    mailbox Sent { 
    special_use = \Sent 
    } 
    mailbox "Sent Messages" { 
    special_use = \Sent 
    } 
    mailbox Trash { 
    special_use = \Trash 
    } 
    prefix = 
} 
passdb { 
    args = /etc/dovecot/dovecot-sql.conf.ext 
    driver = sql 
} 
passdb { 
    args = /etc/dovecot/dovecot-sql.conf.ext 
    driver = sql 
} 
protocols = imap pop3 lmtp 
service auth-worker { 
    user = vmail 
} 
service auth { 
    unix_listener /var/spool/postfix/private/auth { 
    group = postfix 
    mode = 0666 
    user = postfix 
    } 
    unix_listener auth-userdb { 
    mode = 0600 
    user = vmail 
    } 
    user = dovecot 
} 
service imap-login { 
    inet_listener imap { 
    port = 0 
    } 
} 
service lmtp { 
    unix_listener /var/spool/postfix/private/dovecot-lmtp { 
    group = postfix 
    mode = 0600 
    user = postfix 
    } 
} 
service pop3-login { 
    inet_listener pop3 { 
    port = 0 
    } 
} 
ssl = required 
ssl_cert = </etc/dovecot/dovecot.pem 
ssl_key = </etc/dovecot/private/dovecot.pem 
userdb { 
    args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n 
    driver = static 
} 
userdb { 
    args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n 
    driver = static 
} 

Wszelkie myśli?

+0

gdzie jest Twój 'klient Outlook' z podłączeniem? Czy korzystasz z uwierzytelniania? Masz tylko localhost w 'mynetworks', możesz chcieć dodać, że komputery sieciowe powinny mieć możliwość wysyłania wiadomości z tego miejsca. – mata

+0

jest na moim komputerze domowym. Tak, używam ssl. moja sieć ? Więc powinienem dodać mój komputer domowy inet ip? –

+0

Nie, nie mam na myśli ssl (szyfrowanie), ale uwierzytelnianie (czy skonfigurowałeś program do uwierzytelniania użytkownika podczas wysyłania wiadomości przez smtp przez postfiks?). 'mynetwork' umożliwia dostęp do przekaźnika bez uwierzytelniania z sieci lokalnych, jeśli twój serwer jest gdzieś w Internecie, powinieneś lepiej użyć smtp_auth. – mata

Odpowiedz

5

Jeśli używasz wersji postfix wyższej niż 2,10, to trzeba dodać opcję smtpd_relay_restrictions jak opisano here:

 
# With Postfix 2.10 and later, the mail relay policy is 
# preferably specified under smtpd_relay_restrictions. 
/etc/postfix/main.cf: 
    smtpd_relay_restrictions = 
    permit_mynetworks 
    permit_sasl_authenticated 
    reject_unauth_destination 

# Older configurations combine relay control and spam control under 
# smtpd_recipient_restrictions. To use this example with Postfix ≥ 
# 2.10 specify "smtpd_relay_restrictions=". 
/etc/postfix/main.cf: 
    smtpd_recipient_restrictions = 
    permit_mynetworks 
    permit_sasl_authenticated 
    reject_unauth_destination 
     ...other rules... 

Po tym, każdy sasl uwierzytelniony użytkownik powinien mieć możliwość wysyłania wiadomości przez serwer za pomocą smtp.

+1

to nie działa dla mnie. Dostaję ten sam błąd. – neckTwi

0

Dla mojego postfix 2.6.6 na Amazon AWS EC2 okazało się, że miałem złą konfigurację "mydestination" i "relay_domains" w main.cf. poprawne wartości (te, które pracowały dla mnie), były:

mydestination = $myhostname, $mydomain, localhost relay_domains = $mydestination

+0

Moja nazwa domeny to 'necktwi.com'. Zmieniono nazwę serwera na 'ec2', więc myhostname =' ec2.necktwi.com' i mojadomena = 'necktwi.com'. ale pojawia się ten sam błąd – neckTwi