Dies ist eine ziemlich lange Frage mit einer langen Liste von Dingen, die ich versucht habe, und Mühen, also haben Sie bitte Geduld mit mir. Die Zusammenfassung lautet wie folgt.
- Ich kann E-Mails von Ubuntu über Office 365 mit Postfix weiterleiten. Die Konfiguration funktioniert.
- Es funktioniert nur als einer der Benutzer; genauer gesagt ist der Benutzer, der sich gegenüber Office365 authentifiziert, der einzige gültige "von"
Weitere Einzelheiten folgen. Ich habe eine Maschine in der Cloud von Amazon, auf der ich eine Reihe von Jobs ausführe und mir Statusmeldungen per E-Mail zusenden lassen möchte. Ich verwende Office365 bei der Arbeit, daher möchte ich E-Mails über Office365 weiterleiten. Ich bin mit Postfix am besten vertraut, daher habe ich das als MTA verwendet.
Die Konfiguration ist ubuntu 12.04LTS
: Ich habe Postfix und Mail-Utils installiert.
Für dieses Beispiel nehmen wir an, dass meine Firma " company.com
" heißt und die betreffende Maschine (über eine elastische IP und einen DNS-Eintrag) " plaything.company.com
" heißt. Der Hostname ist auf " " eingestellt plaything.company.com
, also/etc/mailname
Auf Plaything habe ich die folgenden Benutzer registriert alpha
: bravo
, , und charlie
.
Ich habe die folgenden Konfigurationsdateien.
alias_database = hash:/etc/aliases alias_maps = hash:/usw./Aliase append_dot_mydomain = nein biff = nein Konfigurationsverzeichnis = /etc/postfix inet_interfaces = alle inet_protocols = ipv4 Mailbox_size_limit = 0 meinziel = plaything.company.com, localhost.company.com, , localhost meinhostname = plaything.company.com meineNetzwerke = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 myorigin = /etc/mailname readme_directory = nein Empfängertrennzeichen = + Relayhost = [smtp.office365.com]:587 sender_canonical_maps = Hash:/etc/postfix/sender_canonical smtp_sasl_auth_enable = ja smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = nicht anonym smtp_sasl_tls_security_options = nicht anonym smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache smtp_use_tls = ja smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtpd_use_tls = ja
Als die Maschine aufgerufen wurde, plaything.company.com
habe ich alle erforderlichen DNS-Einträge registriert, damit office365 erkennt, dass sie mir gehört , und mir erlaubt, einen Benutzer mit dem Namen office365 plaything.company.com
zu erstellen .[email protected]
In Office365 habe ich [email protected]
eine weitere E-Mail-Adresse eingerichtet [email protected]
: .
Dann habe ich folgendes sender_canonical gemacht
[email geschützt] [email geschützt]
Ich habe eine sasl_passwd-Datei erstellt, die lautet:
smtp.office365.com [email protected]:123456password123456
sagen wir einfach, das Passwort für [email protected]
ist1234...456
Melden Sie sich mit all diesen Einstellungen als alpha
und an.
mail[email geschützt] Kopiere: Betreff: Test prüfen
und das Ganze funktioniert wunderbar. E-Mails werden per Postfix verschickt, TLS funktioniert einwandfrei, authentifiziert als daemon@...
und[email geschützt]in Office365 erhält eine E-Mail-Nachricht.
bravo
Das Problem tritt auf, wenn Sie am Computer angemeldet sind .
Absender ist [email protected]
und office365 sagt:
Status=abgewiesen (Host smtp.office365.com[132.245.12.25] sagte: 550 5.7.1 Der Client hat keine Berechtigung zum Senden als dieser Absender (als Antwort auf das Ende des DATA-Befehls))
Dies liegt daran, dass ich versuche, E-Mails als zu senden bravo@...
und mich bei Office365 als zu authentifizieren daemon@...
. Der Grund dafür alpha@...
ist, dass ich in Office365 [email protected]
eine andere E-Mail-Adresse eingerichtet habe [email protected]
: .
InPostfix-Relay zu Office365,Meilen Ericksonbeantwortet die Frage folgendermaßen:
Senden Sie keine E-Mails an Office365 als Benutzer aus Ihrer von Office365 gehosteten E-Mail-Domäne. Verwenden Sie stattdessen eine Subdomäne, z. B.[email geschützt]anstatt[email geschützt]. Es würde nicht schaden, einen SPF-Eintrag für services.mydomain.com oder was auch immer Sie verwenden möchten, einzurichten.
Authentifizieren Sie sich nicht gegenüber mail.messaging.microsoft.com als Office365-Benutzer. Stellen Sie einfach eine Verbindung über Port 25 her und liefern Sie die E-Mail an Ihre Domäne, wie es jeder fremde SMTP-Agent tun würde.
OK, ich habe Nr. 1 erledigt, ich habe diese Einträge im DNS, aber zum größten Teil sind sie nicht relevant, sobald Office365 erkennt, dass ich der Besitzer der Domäne bin.
Hier sind diese Aufzeichnungen:
CNAME-Einträge: - msoid.plaything.company.com - autodiscover.plaything.company.com
MX-Eintrag: - plaything.company.com (plaything-company-com.mail.protection.outlook.com)
TXT-Eintrag: - plaything.company.com (v=spf1 include:spf.protection.outlook.com -all)
Ich habe Nr. 2 ausprobiert, aber egal, was ich mache, Office365 bricht die Verbindung einfach mit der Meldung „nicht authentifiziert“ ab. Ich kann sogar ein einfaches Telnet an Port 25 ausprobieren und versuchen, eine Nachricht zu senden, aber es funktioniert nicht.
250 BY2PR01CA007.outlook.office365.com Hello [54.221.245.236]
530 5.7.1 Client was not authenticated
Connection closed by foreign host.
Gibt es da draußen jemanden, der eine solche Konfiguration zum Laufen bringt, bei der mehrere Benutzer auf einem Linux-Rechner E-Mails mit Postfix über Office365 weiterleiten können? Es muss da draußen jemanden geben, der das macht und mir sagen kann, was mit meinem Setup nicht stimmt ...
Antwort1
Ich glaube, du musst einen Schritt zurücktreten :)
plaything
Wenn Sie als angemeldet sind bravo
, müssen dann wirklich alle von plaything gesendeten E-Mails als gesendet werden [email protected]
? Wenn nicht, senden Sie einfach alle E-Mails als [email protected]
, siehePostfix auf Hosts ohne echten Internet-Hostnamen.
Wenn Sie dies nicht anwenden können, dann benötigen SieAbsenderabhängige SASL-Zuordnungen. Dadurch wird Ihr Setup etwas komplexer, daher würde ich wirklich versuchen, dies zu vermeiden.
Zu guter Letzt: Wenn plaything
Sie E-Mails als senden möchten [email protected]
, müssen Sie die Einstellung anpassen myhostname
und/oder myorigin
entfernen relayhost
. In diesem Fall plaything
würden alle E-Mails direkt zugestellt, mit allen Vor- und Nachteilen wie der Reputation des Mailservers usw.