Anzeige:
Ergebnis 1 bis 2 von 2

Thema: Mailserver mit Postfix auf Fedora Core 3

  1. #1
    Registrierter Benutzer
    Registriert seit
    Apr 2005
    Beiträge
    65

    Mailserver mit Postfix auf Fedora Core 3

    Hi,

    ich schreibe dieses HowTo weil ich bis jetzt nichts im Netz gefunden habe, was alle Bereiche aufgreift und auch funktioniert auf Fedora Core 3. Wenns Probleme gibt bitte eine Nachricht an mich schicken, genauso sind Verbesserungsvorschläge willkommen. Natürlich gibt es tausend Wege die nach Rom führen. Man könnte sich zum Beispiel Procmail sparen, ich habe es aber trotzdem eingesetzt.

    EMail Server mit:

    Postfix
    Fetchmail
    Procmail
    Cyrus-Imap

    Diese Komponenten kommen später dazu:

    Amavis-new
    Virenscanner
    Spamassassin
    Webfrontend mit Squirrelmail

    Hier der IST-Zustand:

    Fedora Core 3
    SSH Zugang mit putty und WinSCP
    freigeschaltete Ports in der FW:
    25 smtp
    110 pop3
    143 imap
    dyndns Adresse mit MX Eintrag auf eigenen Host
    bzw. Domain mit der Möglichkeit MX Einträge zu setzen in Verbindung mit dyndns

    Hier der Sollzustand:

    lokale, interne zu externe, externe zu interne und externe zu externe Mailzustellung
    Einsortierung der Mails in eigene Postfächer mit Procmail
    Logins verschlüsselt über sasldb2
    IMAP Server
    Virenscanner
    Spamfilterung mit Spamassassin
    Weiterleitungen von Mails (z.bsp. root an benutzer)
    Mailinglisten
    Webmail

    zur Zeit verwendete Quellen:

    http://www.bieli.de/main/node4.html
    http://www.newbie-net.de/anleitung_n....html#procmail

    Wenn eine Neuinstallation vorgenommen wird hat sich folgende Dateistruktur bewährt:

    / 500 MB
    /usr 2000 MB
    /tmp 500 MB
    /home 2000 MB
    swap 500 MB
    /var Rest (ausreichend gross)

    1. Zeit einstellen über ntp !!!

    2. FQDN Hostname festlegen

    etc/hosts:
    Code:
    127.0.0.1	localhost
    127.0.0.1	myhostname.mynetworkid.tld myhostname
    /etc/sysconfig/network:
    Code:
    NETWORKING=yes
    HOSTNAME=myhostname.mynetworkid.tld
    /etc/sysconfig/network-scripts/ifcfg-eth0:
    Code:
    DEVICE=eth0
    BOOTPROTO=dhcp
    ONBOOT=yes
    TYPE=Ethernet
    DHCP_HOSTNAME=myhostname.mynetworkid.tld
    3. Reboot
    Code:
    shutdown -r now
    4. Überprüfung des Mailservers:
    Code:
    alternatives --display mta
    5.Installieren der benötigten Programmteile:
    Code:
      
    yum install postfix fetchmail procmail cyrus-imapd cyrus-imapd-utils cyrus-sasl cyrus-sasl-plain
    6. Switchen des Mailservers
    Code:
     
    alternatives --config mta
    7. Reboot
    Code:
    shutdown -r now
    8. Mailserver testen
    Code:
    telnet localhost 25
    quit
    9. /etc/postfix/main.cf und master.cf bearbeiten

    main.cf:
    Code:
    soft_bounce = no
    queue_directory = /var/spool/postfix
    command_directory = /usr/sbin
    daemon_directory = /usr/libexec/postfix
    mail_owner = postfix
    default_privs = nobody
    # hier kommt der fqdn rein zum bsp. host.user.dyndns.org
    myhostname = myhostname.mynetworkid.tld
    # hier kommt die domain rein zum bsp. user.dyndns.org
    mydomain = mynetworkid.tld
    myorigin = $mydomain
    inet_interfaces = all
    # nach localhost.$mydomain kommt anstelle von mynetworkid.tld user.dyndns.org
    mydestination = $mydomain, $myhostname, localhost.$mydomain, mynetworkid.tld
    unknown_local_recipient_reject_code = 550
    mynetworks_style = host
    # hier en richtigen lokalen Netzbereich eintragen
    mynetworks = 172.16.0.0/16, 127.0.0.0/8
    relay_domains = $mydestination
    # hier den relayhost eintragen zum bsp. mx.freenet.de
    relayhost = [mx.freenet.de]
    alias_maps = hash:/etc/aliases
    alias_database = hash:/etc/aliases
    debug_peer_level = 2
    debugger_command =
    	 PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
    	 xxgdb $daemon_directory/$process_name $process_id & sleep 5
    sendmail_path = /usr/sbin/sendmail.postfix
    newaliases_path = /usr/bin/newaliases.postfix
    mailq_path = /usr/bin/mailq.postfix
    setgid_group = postdrop
    html_directory = no
    manpage_directory = /usr/share/man
    sample_directory = /usr/share/doc/postfix-2.1.5/samples
    readme_directory = /usr/share/doc/postfix-2.1.5/README_FILES
    mailbox_command = /usr/bin/procmail -t -a $EXTENSION
    master.cf:
    hier habe die Zeilen mit deliver geändert, den Pfad angepasst
    Code:
    # ==========================================================================
    # service type  private unpriv  chroot  wakeup  maxproc command + args
    #               (yes)   (yes)   (yes)   (never) (100)
    # ==========================================================================
    smtp      inet  n       -       n       -       -       smtpd
    #smtps    inet  n       -       n       -       -       smtpd
    #  -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
    #submission   inet    n       -       n       -       -       smtpd
    #  -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes -o smtpd_etrn_restrictions=reject
    #628      inet  n       -       n       -       -       qmqpd
    pickup    fifo  n       -       n       60      1       pickup
    cleanup   unix  n       -       n       -       0       cleanup
    qmgr      fifo  n       -       n       300     1       qmgr
    #qmgr     fifo  n       -       n       300     1       oqmgr
    #tlsmgr   fifo  -       -       n       300     1       tlsmgr
    rewrite   unix  -       -       n       -       -       trivial-rewrite
    bounce    unix  -       -       n       -       0       bounce
    defer     unix  -       -       n       -       0       bounce
    trace     unix  -       -       n       -       0       bounce
    verify    unix  -       -       n       -       1       verify
    flush     unix  n       -       n       1000?   0       flush
    proxymap  unix  -       -       n       -       -       proxymap
    smtp      unix  -       -       n       -       -       smtp
    relay     unix  -       -       n       -       -       smtp
    #       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
    showq     unix  n       -       n       -       -       showq
    error     unix  -       -       n       -       -       error
    local     unix  -       n       n       -       -       local
    virtual   unix  -       n       n       -       -       virtual
    lmtp      unix  -       -       n       -       -       lmtp
    anvil     unix  -       -       n       -       1       anvil
    #
    # Interfaces to non-Postfix software. Be sure to examine the manual
    # pages of the non-Postfix software to find out what options it wants.
    #
    # maildrop. See the Postfix MAILDROP_README file for details.
    #
    maildrop  unix  -       n       n       -       -       pipe
      flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
    #
    # The Cyrus deliver program has changed incompatibly, multiple times.
    #
    old-cyrus unix  -       n       n       -       -       pipe
      flags=R user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -m ${extension} ${user}
    # Cyrus 2.1.5 (Amos Gouaux)
    # Also specify in main.cf: cyrus_destination_recipient_limit=1
    cyrus     unix  -       n       n       -       -       pipe
      user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -r ${sender} -m ${extension} ${user}
    uucp      unix  -       n       n       -       -       pipe
      flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
    ifmail    unix  -       n       n       -       -       pipe
      flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
    bsmtp     unix  -       n       n       -       -       pipe
      flags=Fq. user=foo argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient
    10. nach Änderungen in der main.cf/master.cf immer ein postfix reload ausführen
    Code:
    postfix reload
    11. Die Datei alias bearbeiten (z.Bsp alle Mails für root an einen Systemuser weiterleiten

    /etc/aliases
    Code:
    # Person who should get root's mail
    root:		user
    Code:
    newaliases
    12. Das ist erstmal nicht notwendig:

    Weiterleitungen für Domains und User in /etc/transport
    Code:
    #Zustellung von eMail erfolgt normal
    #telmecsa.com    local:
    #Weiterleitung auf anderen Mailserver
    #teletext.de     smpt:mail.example2.de
    14. Postfix neu starten
    Code:
    /etc/init.d/postfix restart
    15. Cyrus SASL konfigurieren

    /etc/sysconfig/saslauthd:

    mech=shadow ersetzen mit mech=pam

    16. saslauthd starten
    Code:
    /sbin/service saslauthd start
    saslauthd beim Systemstart immer starten:
    Code:
    /sbin/chkconfig saslauthd on
    runlevel testen:
    Code:
    chkconfig --list saslauthd
    16.Cyrus-Imap starten
    Code:
    /sbin/service cyrus-imapd start
    Cyrus-Imap beim Systemstart immer starten:
    Code:
    /sbin/chkconfig cyrus-imapd on
    runlevel testen:
    Code:
    /sbin/chkconfig --list cyrus-imapd
    17. testen mit imtest
    (systemuser muss vorher angelegt sein)
    Code:
    imtest -a user -u user localhost
    Passwort für cyrus setzen:
    Code:
    passwd cyrus
    mit cyradm einloggen:
    Code:
    cyradm --user cyrus localhost
    18.Mailbox anlegen
    Code:
    createmailbox user.systemuser
    user bleibt stehen und mit systemuser ist Euer User gemeint, den Ihr angelegt habt und für den Ihr eine Mailbox erstellen wollt.

    19. Einsortierung der Mails in die Postfächer
    procmailrc für die einzelnen user anlegen:
    Code:
    touch /home/userverzeichnis/.procmailrc
    chmod 644 /home/userverzeichnis/.procmailrc
    unter /var/log/ eine datei procmail anlegen für den log und Rechte setzen:
    Code:
    touch /var/log/procmail
    chmod 777 /var/log/procmail
    in die jeweilige .procmailrc folgendes reinschreiben:
    Code:
    # Verbose on = ausführliches Log
    #
    VERBOSE=on
    LOGFILE=/var/log/procmail
    
    # deliver sortiert die Mails in die Cyrus-Mailboxen ein
    #
    DELIVERMAIL="/usr/lib/cyrus-imapd/deliver"
    
    # Kurznamen" fuer einige Zustellbefehle
    #
    IMAP="$DELIVERMAIL -e -a $LOGNAME -m user.$LOGNAME"
    
    # Zustellung in die INBOX des Users:
    #
    :0 w
    | /bin/sed 1d | $IMAP
    20. Rechte von deliver verändern und sticky bit setzen
    Code:
     
    chmod 4777 /usr/lib/cyrus-imapd/deliver
    deliver einem anderen user/gruppe zuordnen:
    Code:
    chgrp mail /usr/lib/cyrus-imapd/deliver
    chown cyrus /usr/lib/cyrus-imapd/deliver
    nun noch mal zur Überprüfung:

    [root@base ~]# ls -al /var/lib/imap/socket/lmtp
    srwxrwxrwx 1 root root 0 16. Okt 10:52 /var/lib/imap/socket/lmtp

    [root@base ~]# ls -al /usr/lib/cyrus-imapd/deliver
    -rwsrwxrwx 1 cyrus mail 851764 5. Apr 2005 /usr/lib/cyrus-imapd/deliver

    wenns Probleme gibt bitte das hier checken und eventuell den Parameter -a in der cyrus.conf angeben.

    in postfix (main.cf):

    mailbox_transport = lmtp:unix:/pfad/zu/imap/socket

    in cyrus (cyrus.conf):

    lmtpunix cmd="lmtpd -a" listen="/pfad/zu/imap/socket" prefork=0

    der parameter '-a' schaltet die authentifizierung ab, deshalb auf die filepermissions für den socket achten. prefork muss evtl. auch angepasst werden.


    21.zur sicherheit alles nochmal neu starten:
    Code:
    postfix restart
    /sbin/service cyrus-imapd restart
    22. jetzt lokale mailzustellung testen:

    als user einloggen:
    Code:
    mail root
    irgendwas
    irgendwas
    .
    return taste
    return taste
    23. z.Bsp. Outlook Express an Eurer entfernten Windows Kiste einrichten

    als Namen bzw. Adresse nehmt ihr den User, für den ihr vorhin in Cyrus eine Mailbox angelegt habt:

    Adresse währe dann user@user.dyndns.org
    Unter Imap Server Eure dyndns Adresse eintragen
    unter smtp Adresse genauso Eure dyndns Adresse eintragen

    Jetzt einen Versuch wagen indem ihr eurer Konto abruft. Iihr müsstest jetzt, da ja "root" Mails auf den User weitergeleitet werden, die erste Mail empfangen.

    24. mit fetchmail mails von externen postfächern abholen, wenn gewünscht

    fetchmailrc anlegen und in root verzeichnis packen:
    Code:
    touch /root/.fetchmailrc
    fetchmailrc mit folgendem Inhalt editieren, um Mails von gmx abzuholen:

    systemuser steht für den user für den ihr eine mailbox angelegt habt und der auf dem system geaddet ist
    Code:
    poll pop.gmx.net proto pop3 user username@gmx.net with pass geheim is systemuser here
    fetchmail als Daemon einrichte, der jede Minute Mails abruft:
    Code:
    fetchmail -d 60
    25. Mail versand von intern nach extern einrichten

    als mailrelay wird freenet genommen mit smtp auth
    zuerst bei freenet mail addy besorgen
    dann datei anlegen und ins postfix dir packen
    Code:
    touch /etc/postfix/sasl_passwd
    Datei nur für root lesbar machen:
    Code:
    chown root:root /etc/postfix/sasl_passwd  
    chmod 600 /etc/postfix/sasl_passwd
    Dtei mit folgenden Inhalt erstellen:
    Code:
    mx.freenet.de	user@freenet.de:passwort
    Datenbank erstellen:
    Code:
    postmap hash:/etc/postfix/sasl_passwd
    jetzt die main.cf editieren und folgende Zeilen ergänzen:
    Code:
    # SASL Unterstützung für relayhost zum Versenden der Mails
    smtp_sasl_auth_enable = yes
    # Pfad angeben zur Datei mit den Daten für den relayhost
    smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
    smtp_sasl_security_options =
    Postfix conf neu einlesen:
    Code:
    postfix reload
    Mail von intern nach extern senden:
    Code:
    mail deine externe mail addy
    bla
    bla
    .
    return taste
    Mail von deiner Windows Kiste von deiner externen mail addye abrufen.

    26. Mail Versand von extern einrichten zunächst der Einfachhalthalber über saslauth. Das Ganze nennt man auch SMTP-Auth-einrichten, da ja sonst jeder über Euren Mailserver therotisch eine Email schicken kann, ohne sich zu authentifizieren

    Zuerst die main.cf um folgende Zeilen ergänzen:
    Code:
    smtpd_sasl_auth_enable = yes
    smtpd_sasl_local_domain =
    smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_relay_domains 
    smtpd_sasl_security_options = noanonymous 
    broken_sasl_auth_clients = yes
    dann:
    Code:
    postfix reload
    jetzt die sasldb2 mit unserem User füttern, für den wir ja vorhin die Mailbox angelegt haben:
    Code:
    saslpasswd2 -c user
    Der Benutzer wird mit dem Realm angelegt, der so heisst wie Euer FQDN ( Hostname mit Domain). Jetzt solltet Ihr Euch aber im klaren sein, daß die Passwörter in PLAINTEXT übetragen werden, also jederzeit mitgelesen werden können, falls einer Euer Netzwerk snifft. Wie das ganze verschlüsselt geht kommt demnächst.

    Bitte zum testen Euren Email Clienten mit dem Servernamen, dem Benutzer und dem Passwort füttern, daß Ihr über die Sasldb2 angelegt habt. Jetzt könnt Ihr eine Mail schreiben von Eurem Server am besten mit Putty und Sie extern von Eurer Windows Kiste abrufen und Sie auch gleich beantworten.

    Der Rest kommt später ......

    cya
    Geändert von Antorox (31.10.05 um 22:18 Uhr)

  2. #2
    Registrierter Benutzer
    Registriert seit
    Aug 2004
    Ort
    Bad Wünnenberg
    Beiträge
    5.402
    Danke für dein Howto. Ich habe den Thread ins Forum "Hier Suchen und Finden, Links, Tutorials" verschoben.
    Gruß,
    Tomek

Ähnliche Themen

  1. postfix - keine mails per pop/imap mehr - aber vorhanden!
    Von trineC im Forum Linux als Server
    Antworten: 5
    Letzter Beitrag: 15.03.05, 13:35
  2. main.cf spinnt !!!
    Von achim_22 im Forum Linux als Server
    Antworten: 16
    Letzter Beitrag: 31.10.04, 08:14
  3. Postfix + Dyndns hilfe
    Von ghost77 im Forum Linux als Server
    Antworten: 11
    Letzter Beitrag: 15.09.04, 13:38
  4. Postfix- Mails verschwinden
    Von Mendark im Forum Linux als Server
    Antworten: 5
    Letzter Beitrag: 22.12.03, 16:00
  5. rootkit im eprom
    Von howbye im Forum stationäre Hardware
    Antworten: 6
    Letzter Beitrag: 03.11.02, 12:56

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •