Mail-Server PostFix konfigurieren ...

Hairfeti

Mitglied
Thread Starter
Dabei seit
08.11.2003
Beiträge
464
Reaktionspunkte
0
PostFix kochen ...

Stellt sich natürlich zunächst mal die Frage ... wozu eigentlich einen Mail-Server in Gang setzen wenn man doch der einzige Mensch ist der an diesem oder jenem Computer sitzt und arbeitet?

Da will ich nicht widersprechen, aber wir fragen ja hier nicht nach dem "Warum" sondern nach dem "Wie" und es sollte schon jeder selbst entscheiden ob er vorhandene Ressourcen nutzen möchte oder wie Brachland einfach unbeachtet lassen will.

Wozu kann man den Mail-Server verwenden?

Man kann das Mail-System intern auf einem Rechner mit mehreren Benutzern einsetzen. Auch kann ein Rechner in einem Netzwerk für viele weitere Computer der Mail-Server sein. Weiterhin könnte ein Rechner im Netzwerk als Web-Server konfiguriert sein, dazu benutzt dieser auch PHP und MySQL um Webseiten darzustellen. PHP ist eine sehr komfortabele Möglichkeit den Web-Content dynamisch darzustellen, also HTML-Dokumente zu automatisieren. Dazu arbeitet PHP als Script-Programm im Hintergrund, vom Nutzer unbemerkt. Viele Scripte enthalten Code-Variablen um Post per E-Mail zu versenden wie auch in diesem Forum. Und dazu muß eben ein Mail-Server präsent sein. Und außerdem ist da noch der kleine Mann im Ohr der immer sagt: "Das schaffst du ja doch nicht". Und dem wollen wir eben heute auch zeigen was wir drauf haben.

Gut. Wo fangen wir jetzt an? Das haben wir bereits beim letzten Mal getan in dem wir den Mail-Server einschalteten. Er startet nun jedes mal automatisch wenn der Computer das Betriebssystem "hochfährt".

Schauen wir uns nun mal an was PostFix gerade tut. Dazu benutzen wir das Terminal und öffnen diesmal 2 Fenster. Eines um Befehle einzugeben und das andere um zu beobachten was passiert. In Fenster 1 geben wir folgendes ein:

@root>tail -f /var/log/mail.log

Da sollte sich nun das Unix-Programm "tail" mit der Log-Datei des Mail-Servers melden. "tail" ist ein Live-Interpreter, er zeigt genau das an was im Moment gerade stattfindet. So kann man Programmabläufe Schritt für Schritt mitverfolgen und Fehlerquellen schneller aufspüren.

Welche Nachrichten ihr jetzt vorfinden werdet ist systembedingt. Bei einer Standard-Installation des Systems ist das Ergebnis anders als wenn das zusätzliche BSD-System und die X-Tools installiert wurden.

Auf jeden Fall erhaltet ihr eine Log-Meldung die in etwa so lautet:

Nov 15 16:27:32 localhost postfix/script: starting the Postfix mail system

Nov 15 16:27:32 localhost postfix/master: daemon started --- version 2.0.10

Nov 15 16:27:32 localhost postfix/master: Postfix mail system aborted, domainname localhost

Das bedeutet daß sich der Mail-Server abgeschaltet hat weil er seine Arbeit unter diesen Umständen nicht ausführen kann. "localhost" ist seiner Meinung nach kein geeigneter Domainname mit dem sich Mail verschicken lassen.

Das müssen wir jetzt ändern und geben im zweiten Fenster des Terminal folgendes ein:

@root>cd /etc/postfix/

@root>pico main.cf

Wir suchen uns folgende Zeilen heraus die am Ende des Dokumentes zu finden sind:

inet_interfaces = localhost

mydomain_fallback = localhost

Dort tauschen wir "localhost" durch unseren Domainnamen aus und speichern das ganze wieder ab.

Nun müßt ihr euch die Datei "Aliases" anschauen die im selben Verzeichnis liegt und dort eintragen welcher User des Systems eine E-Mail erhalten soll wenn Ausnahmezustände eintreffen. Das sind Fehlermeldungen, Crashs und Programmabläufe die von der Normalität abweichen. Standard-User für solche Angelegenheiten ist der Root. Wenn dieser jedoch mal aus irgend einem Grund deaktiviert wird, erhält niemand eine Mail und somit kann auch niemand etwaige System-Crashs nachvollziehen.

Es ist also von Vorteil daß man die Post des User Root hier jemand anderem zuteilt der immer am Computer arbeitet. Daher suchen wir uns hier diese Zeile raus:


und tragen ein Alias für den Root ein, in dem Falle klaus. Somit erhält nun Klaus all diese Mail die dem Root gehören.

Nun wo wir die Datei "Aliases" geändert und abgespeichert haben, müssen wir diese noch systemtauglich machen. Das tut man mit dem Programm "newaliases" welches sich im Verzeichnis "/usr/bin/" befindet. Das Programm ist so konzipiert daß es bei Aufruf die Aliases-Datei aktualisiert und für den Mail-Server verfügbar macht.

@root>/usr/bin/newaliases

Mit den Einstellungen wären wir damit fertig und wir brauchen nur noch den Mail-Server neu starten. Dazu geben wir ein:

@root>/usr/sbin/postfix stop

@root>/usr/sbin/postfix start

Dabei kann man in Fenster 1 beobachten was passiert und man sollte jetzt feststellen daß PostFix ohne Fehlermeldung startet. Es wird zwar nun immernoch in der Meldezeile nach dem Datum "localhost" angezeigt, das wird auch so bleiben weil laut der Netinfo-Datenbank des Systems die Domain immer noch "localhost" heißt. Das sollte man auch nicht ändern, denn es ist nicht erforderlich.

Nun testen wir mal was wir fabriziert haben. Dazu benutzen wir das Programm "mail" im Terminal.

@root>mail klaus

Test-Mail

Nachricht hier schreiben ...

CTRL-Taste + d drücken um die Nachricht abzuschicken.

Nun sehen wir in Fenster 1 wie PostFix arbeitet. PostFix ist so eingestellt daß es jede Mail sofort an den Empfänger schickt, so soll es ja auch sein, keiner will ja lange auf Post warten. Für Leute die aber erst die Mail sammeln möchten und gebündelt abschicken wollen, kann man das im Startupscript des Mail-Servers "/System/Library/StartupItems/Postfix/Postfix" einstellen. Mit den richtigen Befehlswerten kann man den Mail-Server so anweisen die Post beispielsweise 3 Stunden zu sammeln und dann abzusenden.

User Klaus wird sofort über seine Post informiert sobald er sein Terminal das erste Mal öffnet. Wenn man die Mail gelesen hat erstellt PostFix ein Dokument im User-Verzeichnis namens "mbox". Dort werden jegliche Art von Mail des Users abgespeichert so daß man sich diese später noch einmal anschauen kann.

Was intern auf dem Rechner funktioniert, sollte nun auch nach außerhalb gelten. Dazu müßt ihr allerdings bereits eine Internet-Verbindung oder eine Standleitung wie DSL hergestellt haben. PostFix kann sich mit diesen Einstellungen nicht allein von eurem Rechner aus ins Internet einwählen und kann auch keine Mail aus dem Internet abrufen, da wir erstens keine wirkliche Domain besitzen die in entfernten DNS-Servern eingetragen ist und zweitens weil wir nur den Mail-Server konfiguriert haben und keinen Postabhol-Dienst wie "procmail". Das ist wieder eine andere Geschichte die ich nicht vorhabe zu erklären, da die meisten unter uns sich sicherlich keinen eigenen Domainnamen zulegen werden sondern mit einer Atrappe arbeiten werden. Was für uns also wichtig ist, das Mail abgeschickt werden kann. Abholen der Mail erfolgt über euren Provider mit eurem bevorzugten Mail-Client in der Grafischen Benutzer-Oberfläche des Systems.

Also schicken wir mal was nach draußen, das solltet vorzugsweise zunächst mal noch ihr selbst sein:

@root>mail klaus@bärbel.de

Test-Mail

Test-Nachricht

Und wieder mit ctrl + d abschicken.

Nach einigen Sekunden sollten wir diese Mail in unserem Postfach haben. Schaut euch mal die Mail mit erweiterten Headern an, so könnt ihr den Weg der Nachricht ganz genau nachvollziehen. Jeder Server wird dabei genauestens unter die Lupe genommen. Unter anderem sollte auch euer Domainname darunter auftauchen.

Postfix ist sehr schlau programmiert. Es sucht sich Domainname, DNS und IP-Adressen im Internet selbst heraus und befördert die Mail auf dem schnellsten Wege zum Empfänger. Schicken wir also eine E-Mail an lümmel@compuserve.de, so sucht sich PostFix einen geeigneten anderen Mail-Server mit guter Verbindung aus und läßt die Mail einfach über diesen weiterleiten. (Relaying)

Klappt das beim ersten Mal nicht weil der Server dieses Verfahren der Weiterleitung nicht unterstützt, wird weiter gesucht bis ein geeigneter Server gefunden ist.

So wird z.B. "mx.compuserve.de" benutzt um eine Mail von meinem Rechner über meinen Provider an den Empfänger zu senden. Wenn der Empfänger allerdings nicht existiert, kann die E-Mail so nicht mehr zurückkommen. Weil, meinen Domainamen gibt es ja in Wirklichkeit nicht.

Kaffe-Pause ...

Wer von euch schon einen lauffähigen Webserver mit PHP eingerichtet hat, wird sich nun sicherlich freuen. PostFix tut seine Arbeit auch hier problemlos verrichten, ohne daß man die Einstellungen der Dateien "httpd.conf und php.ini" ändern müßte. "Sendmail" kann als Standard-Mailserver in jeglichen Einstellungen bestehen bleiben. Ein Shell-Script sorgt dafür daß bei Aufruf von "sendmail" das Programm "postfix" gestartet wird.

Sollte jemand unter euch die Ausgangs-Ports bis 1024 gesperrt haben weil er sich selbst nichts gönnt oder an dem Allgemeinen Hackersyndrom leidet, muß dieses abgeändert werden. Ausgangs-Ports müssen alle zur Verfügung stehen damit dieser und andere Dienste funktionieren können über die wir noch sprechen werden. Postfix sucht sich selbst den geeigneten Ausgang um mit DNS-Diensten und anderen in Kontakt zu treten. Deshalb ist das Öffnen der Ports 110 und 143 nicht ausreichend.

Das dürfte zunächst einmal die Grund-Funktionen des Mail-Servers in Gang gesetzt haben. Fragen und Hinweise bitte direkt hier vor Ort stellen und bitte nicht woanders posten, damit das Thema hier behandelt werden kann, danke.
Eine genaue Regelung werde ich noch mit dem Webmaster des Forums besprechen, ist wohl besser ehe hier Posts unnötig hin und hergeschoben werden müssen.

MfG Rüdiger
 
Zuletzt bearbeitet:
Hallo Hairfeti,

Ich habe mein System entsprechend deiner Anleitung konfiguriert. Leider funktioniert das Mailversenden bis her nur an eine Adresse. Bei meiner T-Online Adresse erhalte ich immer TimeOuts. Bei einer anderen Adresse erhalte ich die Fehlermeldung:

Dec 25 15:04:45 localhost postfix/smtp[713]: 0A5CF73789: to=<adresse.domain.de>, relay=mail.domain.de[xxx.xxx.xxx.xxx], delay=6, status=bounced (host mail.domain.de[xxx.xxx.xxx.xxx] said: 553 5.1.8 <www@usersdomain.local>... Domain of sender address www@usersdomain.local does not exist (in reply to MAIL FROM command))

(Die IP-Adressen in den []-Klammern ich wieder rausgenommen. Meinen Domainnamen und die Email Adresse hab ich abgeändert.)
Ein paar Sekunden später zeigt er an, daß die Mail geschickt wurde: status=sent (mailbox)
Mein System hängt als DMZ-Host in meinem Netzwerk. Es ist nach außenhin mit allen Ports offen.

Hast du noch eine Idee, was ich machen könnte, damit es korrekt funktioniert?

Du hast auch noch geschrieben, daß man die AdminTools von MacOS X Server hernehmen kann um Mail zu konfigurieren. Leider kann man nur einen MacOS X Server damit administrieren, bei Clients funktioniert das ganze nicht. Die Tools laufen allerdings auf dem Client. Und bevor ich mit jetzt noch den Server zuleg, schaff ich das lieber alles im Terminal ;-)

Weihnachtliche Grüße
sunni
 
Zuletzt bearbeitet:
hallo hairfeti,

erstmal: danke für den interessanten Beitrag.
getestet hab ichs noch nicht, werd ich aber demnächst machen.

ein/zwei Fragen hab ich aber jetzt schon:

1. Würde es nicht reichen, zum Versenden von mails den Port 25 zu öffnen ? und zwar nur von innen nach außen? Unter sendmail war das so. Der port 110 ist doch der Port für pop - oder ? und 143 imap, soweit ich weiss

2. der postfix müsste doch (wenn es so eingestellt ist) auch einen Verbindungsaufbau ins Internet antriggern (autoconnect in ppp oder pppoE bzw. am router)

3. weisst du evtl. wie man den postfix von panther kickt und mit dem dinosaurier sendmail weiterarbeitet ? - Das würde mich mal echt interessieren :D

lass Dir´s gut geh´n
 
postfix

hallo,

bin auf ein problem gestossen beim versenden von emails über postfix.
das versenden der mails an den selben rechner funktioniert, aber wenn ich eine email an meinen linux compi verschicken möchte klappts leider nicht.
auch nicht vom linux auf den mac (internes netzwerk mit router als DHCP-server).
ich vermute, dass der fehler irgendwo in der main.cf oder access datei liegt.

main.cf:

mydomain=local
myhostname=powermacG3.local


access:

# sample access file
10.0.1 RELAY
spammer@yahoo.com REJECT javascript:smilie('carro')
192.168.1 RELAY


danke im voraus :)
 
hallo pengu,

du brauchst einen Domainnamen der im Internet aufgelöst wird, um mails versenden zu können.
Für mails an ... @t-online.de brauchts noch nen Eintrag in der transports.

Um mails von anderen rechnern empfangen zu können musst Du Änderungen in dern main.cf vornehmen, wenn der Rechner im selben LAN ist.

mynetworks_style = subnet
müsste reichen

Um Mails aus dem internet empfangen zu können musst Du die master.cf ändern.
 
Zuletzt bearbeitet:
postfix

juhui !!

es funktioniert clap

vielleicht kann mir jemand noch einen tip geben wie man SSL zum laufen bringt und richtig konfiguriert.
 
kommt darauf an, was du machen willst
ssh ist vorkonfiguriert
nur root-zugriff geht nicht automatisch

du musst in Sharing entfernte Anmeldung aktivieren, damit du per ssh auf den mac kommst
 
Zuletzt bearbeitet:
postfix mit SSL

@ maceis, du hast wohl meine frage nicht richtig gelesen.

vielleicht kann mir jemand noch einen tip geben wie man SSL zum laufen bringt und richtig konfiguriert.

SSL statt ssh

http://www.oreilly.de/catalog/mcosxhksger/chapter/ch07.html
runterblättern zu:
Hack #81 Einrichten von IMAP- und POP-Mail-Servern

dort hat es eine beschreibung wie man ein SSL zertifikat erstellt. vielleicht muss ich noch ein wenig ausprobieren... aber nicht mehr heute :)
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben Unten