Eigener Mailserver - Wie vorgehen?

[...] dann kann man dir wohl zur erfolgreichen Einrichtung gratulieren! :D
Langsam :). Fertig ist das Ding noch lange nicht. Es werden noch Weiterleitungen gebraucht, ne grafische Oberfläche zur Konfiguration derselben (*) und sicher noch andere Sachen wie Statistikauswertung.

(*) Momentan ist Confixx im Einsatz, aber da das proprietär ist, weiß ich noch nicht, was man als Alternative benutzen kann. Aber das wird sich zeigen.

MfG Dalai
 
Wenn du da was sinnvolles gefunden hast, dann teile uns das hier mal mit. Die bisherigen freien Lösungen, die ich kenne, sind leider eher bescheiden. Ein schönes Statistiktool würde mich daher auch sehr interessieren.
 
Ich komme mal wieder nicht weiter. Problemstellung ist wie folgt. Es gibt einen Nutzer wartung im System, alle anderen Nutzer existieren nur im LDAP; für den Problembericht greife ich mir jetzt mal administrator raus. Das Verschicken der Mails an wartung@domain.biz und administrator@domain.biz klappt einwandfrei.

Nun zum eigentlichen Problem: die Mailadressen, die bisher existieren und genutzt werden, sind nach dem Schema vorname.nachname@domain.biz aufgebaut und nicht nur vorname@domain.biz. Im LDAP existieren aber nur Konten, die dem jeweiligen Vornamen des Nutzers entsprechen (macht die Anmeldung im Samba einfacher). Daher habe ich versucht, den vollen Namen im Gecos-Feld für den Nutzer wartung (/etc/passwd) und für administrator (LDAP) zu ändern - und zwar in den sinnlosen Namen k.wartung bzw. k.administrator - in der Hoffnung, Postfix würde darauf zurückgreifen - leider Fehlanzeige. Mails an diese Namen werden nicht zugestellt.

Aliase sind zwar eine Idee, aber gelten die auch für ausgehende Mails, so dass eben nicht vorname@domain.biz im Absender steht sondern vorname.nachname@domain.biz? Hat jemand einen Tip, wo ich ansetzen muss?

MfG Dalai
 
Zuletzt bearbeitet:
Ich werfe mal ein paar Links in den Thread (auch wenn er schon ein wenig älter ist):

www.x-fish.org - Mailserver daheim: Postfix

www.x-fish.org - http://www.x-fish.org/blog/100831/Mailserver_daheim:_dovecot_und_fetchmail/

Mailserver daheim: Senderabhängige Authentifizierung

www.x-fish.org - Roundcube: IMAP Error: Empty startup greeting

Ich habe mir Ende 2010 einen Mailserver daheim in einer VM aufgesetzt. Diese wird von Linux oder Windows aus betrieben. Als Client entweder Webmail (Roundcube) oder Thunderbird dank IMAP. Funktioniert sehr gut und zuverlässig.

Kleinere Zusätze wie SpamAssassin und die Filterung per Procmail erleichtern die Verwaltung der Datenflut. :)

Abgeschickt werden die Mails über mehrere »richtige« Mailserver von Anbietern (GMX, Google, eigener Provider der Website, etc.) -> daher die senderabhängige Authentifizierung.

Grüße, Martin
 
[...] (auch wenn er schon ein wenig älter ist) [...]
Auch wenn der Thread im Moment eingeschlafen aussieht (oder sogar ist), so bin ich immernoch am Thema dran. Ich bin leider noch nicht dazu gekommen, eine Statusmeldung zu geben, weil noch ein paar Dinge geklärt werden müssen. Ich werde mich in jedem Fall wieder melden, bevor die Kiste produktiv geht.

MfG Dalai
 
Zuletzt bearbeitet:
Update

Der Mailserver ist inzwischen aufs Produktivsystem umgezogen, aber vorerst weiterhin mit einer Testdomain, so dass keine Beeinflussung stattfindet. Im Zuge der Umstellung haben sich ein paar Fragen ergeben, die ich hier stellen möchte, um das System besser zu verstehen:
  • Wie unterscheidet ein Mailserver - hier konkret Postfix - ob ein Client oder ein Server eine Mail bei ihm abliefern will?

    Hintergrund der Frage ist folgende Sachlage: Der Server ist - soweit ich das anhand der Postfix-Config beurteilen kann - so eingestellt, dass er Authentifizierung verlangt. Soweit so gut. Wenn aber ein anderer Mailserver eine Mail bei uns abliefern will, muss der sich ja nicht authentifizieren - oder muss er das doch, und wenn ja, wie?

  • Aus voriger Frage ergibt sich eine weitere ähnlich gelagerte: Kann man verhindern, dass der SMTP von außen zum Verschicken von Mails durch einen Client benutzt wird? Oder anders ausgedrückt: Kann man das Verschicken von Mails auf das interne Netz beschränken?

    Hintergrund: Es existieren einige Benutzerkonten mit einfachen und kurzen Benutzernamen, die nur mit einem einfachen Passwort ausgestattet sind. Nun haben wir uns gefragt, welche Möglichkeiten der Missbrauchsvorbeugung (also dass jemand von außen diese Benutzername/Passwort-Kombination errät) es gibt. Klar, die naheliegendste ist natürlich, ein komplizierteres Passwort zu verwenden ;), aber ich möchte erstmal die Möglichkeiten sammeln.

  • Wie und womit kann man den eigenen Server darauf testen, ob er ein offenes Relay ist? Ich hab einige auf dieser Webseite gelistete Testseiten ausprobiert und alle (funktionierenden) kommen zu dem Ergebnis, alle Versuche abgelehnt zu haben; /var/log/mail.log bestätigt das. Trotzdem bleibt natürlich eine Unsicherheit.

MfG Dalai
 
Also Grundsätzlich unterscheidet ein Mailserver erstmal nicht wirklich zwischen einem Mailclient und einem anderen Server. Im Prinzip stellt man das durch die Konfiguration so sicher, dass der Versand an nicht lokale Empfänger nur möglich ist, wenn der Client authentifiziert ist.

Gegen schlechte Passwörter hilft alles nicht lange. Mit den main.cf Parametern 'smtpd_soft_error_limit', 'smtpd_hard_error_limit', 'smtpd_error_sleep_time', 'smtpd_client_connection_count_limit' und 'smtpd_client_connection_rate_limit' sollte man auf jeden Fall Bruteforce-Angriffe verlangsamen können.
 
Durch mydomain, myhostname, mydestination und mynetworks unterscheidet der Mailserver was von extern oder was von intern kommt und natürlich anhand der Absende- und Empfangsadresse in der mail.
Dadurch kommt entweder ein relaying oder nicht zustande.
Was der Mailserver eben ablehnt oder nicht.
Da ist keine Unsicherheit wenn alles richtig definiert ist.

Wenn sich alles im normalen Rahmen abspielt missbraucht auch niemand einen account.
Als Auswertetool hat sich mailgraph ganz gut bewährt, dort kann man eventuell Ausreisser sehen und dann entsprechend handeln.

Ich sehe viel weniger die Gefahr, dass ein Mailserver übernommen wird, als dass ein anderes Programm wie ein Webserver mit php oder ein Javaprozess zum Mailversand missbraucht wird. Mailserver selbst sind schon so lange am Markt, dass hier nur ganz selten wieder Sicherheitslücken auftauchen.

lg
__tom
 
Also Grundsätzlich unterscheidet ein Mailserver erstmal nicht wirklich zwischen einem Mailclient und einem anderen Server. Im Prinzip stellt man das durch die Konfiguration so sicher, dass der Versand an nicht lokale Empfänger nur möglich ist, wenn der Client authentifiziert ist.

Durch mydomain, myhostname, mydestination und mynetworks unterscheidet der Mailserver was von extern oder was von intern kommt und natürlich anhand der Absende- und Empfangsadresse in der mail.
Dadurch kommt entweder ein relaying oder nicht zustande.
Was der Mailserver eben ablehnt oder nicht.
Ah, verstehe. Es ist also nur dann eine Authentifizierung nötig, wenn der Client/Server an eine Domain ungleich $mydomain/$mydestination versenden will. Und da ein externer Mailserver höchst selten selbst Mails vom eigenen Mailserver aus versenden sondern nur abliefern will, braucht es keine Auth. Danke für die gute und einleuchtenden Erklärung *great*.


tomturbo schrieb:
Da ist keine Unsicherheit wenn alles richtig definiert ist.
Ich nehme schon an, dass die wesentlichen Parameter richtig definiert sind. Um es konkreter zu machen, hier nochmal eine überarbeitete main.cf:
Code:
#
smtpd_banner =          $myhostname ESMTP
biff =                  no
append_at_myorigin =    yes
append_dot_mydomain =   no

alias_maps =            hash:/etc/aliases
alias_database =        hash:/etc/aliases
 
# Falls kanonische Namen verwendet werden sollen!
sender_canonical_maps =        hash:/etc/postfix/canonical

myorigin =              /etc/mailname
myhostname =            mail.domain.biz
mydomain =              domain.biz
mydestination =         $myhostname, $mydomain, localhost.$mydomain, localhost
mynetworks =            127.0.0.0/8 192.168.1.0/24 192.168.115.0/24
#mynetworks =           127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128


# Größe der Mailboxen: 100 MiB
mailbox_size_limit =		104857600

message_size_limit =            10485760
# Größe der Mails: 10 MiB

strict_rfc821_envelopes =       yes
recipient_delimiter =           +
inet_interfaces =               all
disable_vrfy_command =          yes

# TLS-SSL! Optional falls SSL benutzt werden soll 
smtp_tls_note_starttls_offer =  yes
smtpd_use_tls =                 yes
smtpd_tls_security_level =      may
smtpd_tls_key_file =            /etc/ssl/private/mailcert.key
smtpd_tls_cert_file =           /etc/ssl/certs/mailcert.pem
#smtpd_tls_CAfile =              /etc/ssl/datei.ca-bundle
smtpd_tls_loglevel =            1
smtp_tls_loglevel =             1
#smtpd_tls_received_header =     no

# SMTPD 
smtpd_helo_required =           yes
smtpd_recipient_limit =         100

#
smtpd_sasl_auth_enable =        yes
smtpd_sasl_auth2_enable =       yes
smtpd_sasl_security_options =   noanonymous
smtpd_sasl_local_domain =	mail.domain.biz
broken_sasl_auth_clients =      yes
smtpd_sasl_path = smtpd

# SMTP
#smtp_host_lookup =              dns,native
# oben auskommentiert lassen, da T-Online Mails sonst gebounct werden!!!
#
smtp_sasl_auth_enable =         no
smtp_always_send_ehlo =         yes
smtp_helo_timeout =             150s
smtp_skip_4xx_greeting =        no
smtp_skip_5xx_greeting =        no
smtp_rcpt_timeout =             40s

## SPAM Abwehr! Optional
mime_header_checks=pcre:/etc/postfix/header_check
#header_checks = pcre:/etc/postfix/check_header
#body_checks = pcre:/etc/postfix/check_body
smtpd_client_restrictions = permit_inet_interfaces,
    permit_mynetworks,
    permit
smtpd_helo_restrictions = permit_mynetworks,
    reject_invalid_hostname,
    reject_unauth_pipelining,
    permit
smtpd_sender_restrictions = permit_sasl_authenticated,
    permit_mynetworks,
    reject_invalid_hostname,
    reject_unknown_sender_domain,
    reject_unknown_address,
    reject_rhsbl_sender dsn.rfc-ignorant.org,
    permit
smtpd_recipient_restrictions = permit_sasl_authenticated,
    permit_mynetworks,
    reject_invalid_hostname,
    reject_non_fqdn_sender,
    reject_non_fqdn_recipient,
    reject_unknown_sender_domain,
    reject_unknown_recipient_domain,
    reject_unauth_pipelining,
    #
    # reihenfolge nicht ändern - wegen spf
    reject_unauth_destination,
    check_policy_service unix:private/spfcheck,
    # reihenfolge nicht ändern - wegen spf
    #
    reject_rhsbl_sender dsn.rfc-ignorant.org,
    # check_client_access hash:/etc/postfix/polw_client_whitelist,
    # check_recipient_access hash:/etc/postfix/polw_recipient_whitelist,
    check_policy_service inet:127.0.0.1:12525
    #
policy_time_limit = 3600
spfcheck_time_limit = 3600
    #
    ######################################################################
    #
# content_filter =        scan:[127.0.0.1]:10025
home_mailbox =          Mail/
mailbox_command =       /usr/bin/procmail -t

# The number of errors a remote SMTP client is allowed to make without delivering mail
# before the Postfix SMTP server slows down all its responses. 
smtpd_soft_error_limit = 5

# The maximal number of errors a remote SMTP client is allowed to make without delivering mail.
# The Postfix SMTP server disconnects when the limit is exceeded.
smtpd_hard_error_limit = 12

# With Postfix version 2.1 and later: the SMTP server response delay after a client has
# made more than $smtpd_soft_error_limit errors, and fewer than $smtpd_hard_error_limit
# errors, without delivering mail. 
smtpd_error_sleep_time = 2s

# The maximal number of connection attempts any client is allowed to make to this
# service per time unit.
# The time unit is specified with the anvil_rate_time_unit configuration parameter.
smtpd_client_connection_rate_limit = 10

# How many simultaneous connections any client is allowed to make to this service.
# By default, the limit is set to half the default process limit value. 
# smtpd_client_connection_count_limit = 50

# The maximal time a message is queued before it is sent back as undeliverable. 
maximal_queue_lifetime = 3d

# The maximal time a bounce message is queued before it is considered undeliverable.
# By default, this is the same as the queue life time for regular mail.
bounce_queue_lifetime = 3d

tomturbo schrieb:
Wenn sich alles im normalen Rahmen abspielt missbraucht auch niemand einen account.
Nunja, der "normale Rahmen" könnte ja auch ein Spinner sein, der auf existierende Accounts prüft. Die fraglichen Benutzernamen und Passwörter sind nur je 3 Zeichen lang und bestehen nur aus Buchstaben. Und genau daraus ergibt sich für mich eine gewisse Unsicherheit.

tomturbo schrieb:
Als Auswertetool hat sich mailgraph ganz gut bewährt, dort kann man eventuell Ausreisser sehen und dann entsprechend handeln.
Im Moment bleiben wir bei den (mitgelieferten) Munin-Plugins, auch wenn man dort nicht die Anzahl der gesendeten/empfangenen Mails getrennt (nur "delivered") sowie keine Anzahl der Bounces (nur "rejected" nach Fehlercodes getrennt) einsehen kann. Sollten wir mehr brauchen, kann man das noch einarbeiten.

tomturbo schrieb:
Ich sehe viel weniger die Gefahr, dass ein Mailserver übernommen wird, als dass ein anderes Programm wie ein Webserver mit php oder ein Javaprozess zum Mailversand missbraucht wird.
Einen Webserver gibt's natürlich in der Firma, aber nach außen sind (bei fertigem Mailserver) genau 2 Ports offen: SSH (nicht auf 22) und SMTP (25), sonst ist alles dicht. Insofern könnte höchstens intern irgendwas missbraucht werden, aber da auf dem Webserver noch keine für die tägliche Arbeit notwendigen Sachen laufen, müsste da schon jemand hergehen und ein eigenes Skript oder gar einen eigenen Webserver mitbringen; die Wahrscheinlichkeit halte ich für gering ;).

BoMbY schrieb:
Gegen schlechte Passwörter hilft alles nicht lange.
Ja, deswegen denken wir schon darüber nach, ob wir die Passwörter ändern (länger und mit zusätzlichen Ziffern). Mal schauen.

BoMbY schrieb:
Mit den main.cf Parametern 'smtpd_soft_error_limit', 'smtpd_hard_error_limit', 'smtpd_error_sleep_time', 'smtpd_client_connection_count_limit' und 'smtpd_client_connection_rate_limit' sollte man auf jeden Fall Bruteforce-Angriffe verlangsamen können.
Danke für die Info, ich hab's mit eingearbeitet :).

MfG Dalai
 
Update

Seit vergangenem Freitag ist der Server live, inkl. offiziellem SSL-Zertifikat, MX & Reverse MX und nunmehr ohne rfc-ignorant.org :-/. Ein Problem, das sich noch aufgetan hatte und zu massig Meldungen mit "authentication failure" führte (aber trotzdem alles funktionierte), habe ich zwischenzeitlich auch lösen können. Da ich schreibfaul bin, verweise ich mal zu Ubuntuusers, wo ich nachfragte, und schließlich doch (mal wieder ;)) selbst die Ursache und eine mögliche Lösung fand.

MfG Dalai
 
Es werden noch Weiterleitungen gebraucht, ne grafische Oberfläche zur Konfiguration derselben (*) [...]
Hier haben wir uns vorerst für Webmin entschieden, in dem wir einen separaten Nutzer angelegt haben, der ausschließlich auf die Postfix-Konfiguration Zugriff hat. Dieser Zugriff gilt zwar vollumfänglich für das ganze Postfix-Modul, und das hat gestern auch schon zum kurzzeitigen Lahmlegen des Postfix geführt, weil Cheffe auf den "Postfix beenden"-Button drückte ;D, aber andererseits war das ein schönes Lehrstück dafür, wie man dieses Modul besser nicht bedienen sollte, wenn man noch Mails verschicken können will ;). Wenn jemand eine Idee hat, was besser für diesen Zweck geeignet ist, die aber nicht zuviel Aufwand bedeutet (und für normale Mitarbeiter zu bedienen ist), bitte Bescheid geben.

[...] und sicher noch andere Sachen wie Statistikauswertung.
Hierfür habe ich noch zwei weitere Plugins für Munin geschrieben, die die Mailgröße (Summe ein-/ausgehend sowie größte einzelne Mail ein-/ausgehend) und die Größe der Mailboxen erfasst. In Verbindung mit den Plugins, die Munin (oder Postfix) schon beilagen, reicht das erstmal aus, um zu erfassen und zu überwachen, wenn etwas aus dem Ruder läuft.

MfG Dalai
 
Ich verwende für all meine postfix-Installationen postfixadmin.
Das ist allerdings eine Multidomain Datenbanklösung.

Ansonsten kann ich nur sagen. Der Editor ist immer noch das beste, wenn es sich um eine überschaubare Anzahl an Benutzern handelt.

Es sollte immer nur der Postfixadmin darin rumfummeln und nicht irgend welche Leute mit Halbwissen in der Hierachie .....
Ist aber denen schwer beizubringen, ich weiß.

lg
__tom
 
Ich verwende für all meine postfix-Installationen postfixadmin.
Den hab ich mir ebenfalls angeschaut, aber für diesen Zweck als unpassend einsortiert. Webmin war eh schon drauf wegen der anderen Dienste, von daher bot sich das an. Und: ja, Webmin wird sparsam eingesetzt, es wird hauptsächlich zum Angucken benutzt, nur selten fürs Verändern von Einstellungen.

Ansonsten kann ich nur sagen. Der Editor ist immer noch das beste, wenn es sich um eine überschaubare Anzahl an Benutzern handelt.
Meinst du einen bestimmten Editor? Oder meintest du "irgendein Editor"? Ich selbst verwende natürlich einen Editor (mcedit) zum Einstellen so ziemlich aller Dienste, sofern möglich. Mal in ein Webinterface reinzuschauen, hat aber schon was ;).

Es sollte immer nur der Postfixadmin darin rumfummeln und nicht irgend welche Leute mit Halbwissen in der Hierachie .....
Es geht schlicht nur darum, dass ein Mitarbeiter (und der Chef) Aliase - und damit den/die Empfänger einer Mail - verändern können, falls irgendein Mitarbeiter krank wird, Urlaub hat oder anderweitig vertreten wird. Und das soll auch dann möglich sein, wenn der Admin gerade mal nicht erreichbar ist. Keine Sorge, das Passwort für diesen Webmin-Nutzer haben nur die nötigen Personen und Webmin ist so eingestellt, dass alle Dateiänderungen protokolliert werden, sodass man im Zweifel nachvollziehen kann, was verändert wurde. Zusätzlich wird natürlich (unabhängig davon) täglich das /etc gesichert.

MfG Dalai
 
Sind für Postfixadmin nicht auch Virtual User und eine Datenbank erforderlich? Habe ich jedenfalls so am laufen.

Würde auch nicht empfehlen das da jemand ohne Ahnung in der Konfig rumpfuscht. Aber Postfixadmin ist da eigentlich noch am einfachsten.
 
Meinst du einen bestimmten Editor? Oder meintest du "irgendein Editor"? Ich selbst verwende natürlich einen Editor (mcedit) zum Einstellen so ziemlich aller Dienste, sofern möglich. Mal in ein Webinterface reinzuschauen, hat aber schon was ;).
Ja, ich meinte nur irgend einen normalen Texteditor.

Das Problem aller Webinterfaces ist immer, dass man nicht sicher sein kann was sie wirklich tun und was sie noch für Dateien im hintergrund verwursteln.

lg
__tom
 
Zurück
Oben Unten