2013-08-19 18 views
5

Ich habe diesen Fehler 554 Relay access denied beim Versuch, E-Mail von meinem Outlook-Client zu senden.Linux Postfix/Dovecot 554 Relay Zugriff verweigert

Ich kann eingehende Mails lesen, kann aber nicht senden.

Wenn ich mit telnet localhost 25 verbinden kann ich externe E-Mails senden, aber mit Outlook-Client funktioniert es nicht.

Hier ist mein Postfix und 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 
} 

Irgendwelche Gedanken?

+0

wo Ihr 'Outlook-Client' Verbinden von? Verwenden Sie Authentifizierung? Sie haben nur localhost in 'mynetworks', möchten vielleicht hinzufügen, dass die Netzwerkcomputer von dort Mails versenden dürfen. – mata

+0

es ist bei meinem Computer zu Hause. Ja, ich benutze SSL. Mein Netzwerk ? Also sollte ich meinen Heimcomputer inet IP hinzufügen? –

+0

Nein, ich meine nicht SSL (Verschlüsselung), sondern Authentifizierung (haben Sie Outlook eingerichtet, um Ihren Benutzer zu authentifizieren, wenn Sie Nachrichten über SMTP per Postfix versenden?). 'mynetwork' ermöglicht den Relay-Zugang ohne Authentifizierung von lokalen Netzwerken. Wenn sich Ihr Server irgendwo im Internet befindet, sollten Sie besser smtp_auth verwenden. – mata

Antwort

5

Wenn Sie ein Postfix-Version neuer verwenden dann 2,10, dann müssen Sie die smtpd_relay_restrictions Option hinzufügen, wie here beschrieben:

 
# 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... 

Danach wird jeder sasl authentifizierten Benutzer sollten in der Lage sein, E-Mails senden durch der Server mit SMTP.

+1

das hat nicht für mich funktioniert. Ich bekomme denselben Fehler. – neckTwi

0

Für mein Postfix 2.6.6 auf Amazon AWS EC2 stellte sich heraus, dass ich in main.cf die Einstellungen "mydestination" und "relay_domains" falsch konfiguriert hatte. Korrekte Werte (diejenigen, die für mich gearbeitet), waren:

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

+0

Mein Domain Name ist 'necktwi.com'. Ich habe den Server in 'ec2' umbenannt, also myhostname =' ec2.necktwi.com' und mydomain = 'necktwi.com'. Trotzdem bekomme ich den gleichen Fehler – neckTwi