Robust Mail Server på CentOS 7 med postfix, dovecot, opendkim, spamassassin, amavisd og clamav

Sådan har jeg lavet en simpel, sikker og gratis Mail Server som kan benyttes til Hoste mail-kontier eller benyttes som Antispam Gateway både indgående og udgående.

Understøtter:

  • postfix
  • dovecot
  • opendkim
  • spamassassin
  • amavisd
  • clamav

Før du går igang, så udfør en mail-test via www.mail-tester.com for at kontroller din nuværende IP+DNS stats/reputation på internettet.
når du har udført installation af denne nye mail server, bedes du udføre den samme test på www.mail-tester.com via denne nyoprettet Mail server.

Jeg fik 6/10 som kørte Exchange og Microsoft Forefront Protection 2010, og efter som jeg sat denne server foran min exchange så den benyttes som Antispam/virus/dkim gateway fik jeg 10/10.
og alle mine mails bliver leveret korrekt og med god Mail Score.

Så, du kan benytte den som:

  • Komplet mail server hvor du hoster Mail-kontier, Antispam, Antivirus.
  • Antispam, Antivirus indgående og udgående mail server.
  • Redundant MX indgående Relay server.

Jeg forventer du har installeret en ren CentOS 7 Minimal ISO 64bits.

Lad os lave:

  • Komplet mail server hvor du hoster Mail-kontier, Antispam, Antivirus.
  • Jeg benytter mail.usman.dk som eksempel, dette skal erstattes med dit FQDN mail server domæne.
  • Jeg benytter LAN IP til serveren: 192.168.1.10 og WAN IP: 172.17.1.10 som eksempel.
  • Du åbner en fil ved skrive: nano filnavn

Du kan begrænse den ud fra dine behov.

Lad os komme igang:

  1. SSL Certifikater skal oprettes først, opret dem som “Self Signed” med mindre du har køber dem.
    cd /etc/ssl
    openssl genrsa -out mail.usman.dk.key 2048
    openssl req -new -key mail.usman.dk.key -out mail.usman.dk.csr
    openssl x509 -req -days 365 -in mail.usman.dk.csr -signkey mail.usman.dk.key -out mail.usman.dk.crt
  2. Installer postfix, dovecot og nano.
    yum install postfix dovecot nano -y
  3. Backup /etc/dovecot.conf og konfigurere dovecot
    cd /etc/dovecot
    cp -R dovecot.conf dovecot.conf.bak
  4. Åben filen /etc/dovecot.conf og fjern # (uncomment) foran, og gem filen.
    nano /etc/dovecot.conf
    fjern “#” foran: protocols = imap pop3 lmtp 
  5. Skift mappe til  /etc/dovecot/conf.d og backup filen 10-auth.conf.
    cd /etc/dovecot/conf.d
    cp -R 10-auth.conf 10-auth.conf.bak
  6. Åben filen 10-auth.conf og fjern “#” foran disable_plaintext_auth og auth_mechanisms giv dem værdier.
    disable_plaintext_auth = no
    auth_mechanisms = plain login
  7. Backup filen 10-mail.conf.
    cp  -R  10-mail.conf 10-mail.conf.bak
  8. Åben filen 10-mail.conf og fjern “#” foran mail_location.
    mail_location = maildir:~/Maildir 
  9. Backup filen 10-ssl.conf.
    cp -R 10-ssl.conf 10-ssl.conf.bak
  10. Åben filen 10-ssl.conf og indtast SSL certifikat oplysninger.
    ssl = yes
    ssl_cert = </etc/ssl/mail.usman.dk.crt
    ssl_key = </etc/ssl/mail.usman.dk.key
  11. Backup filen 10-master.conf og åben den så vi kan benytte dovecits SMTP authentication service til godkende mail kontier.
    cp -R 10-master.conf 10-master.conf.bak
  12. Åben filen 10-master.conf og find nedenstående, så det ser sådan ud.
    # Postfix smtp-auth
    unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    }
  13. Start dovecot servicen nu.
    systemctl start dovecot
    systemctl enable dovecot
  14. Tillad trafik til pop3 og imap ports i firewall.
    firewall-cmd –zone=public –add-port=110/tcp –permanent
    firewall-cmd –zone=public –add-port=143/tcp –permanent
    firewall-cmd –zone=public –add-port=993/tcp –permanent
    firewall-cmd –zone=public –add-port=995/tcp –permanent
    firewall-cmd –reload
  15. Tillad trafik til pop3 og imap i din Router firewall.
    – Port: 110/tcp
    – Port: 143/tcp
    – Port: 993/tcp
    – Port: 995/tcp
    til at pege imod 192.168.1.10.
  16. Konfiguration af postfix starter nu, derfor backup filen /etc/postfix/main.cf og /etc/postfix/master.cf.
    cp -R /etc/postfix/main.cf /etc/postfix/main.cf.bak
    cp -R /etc/postfix/master.cf /etc/postfix/master.cf.bak
  17. Åben /etc/postfix/main.cf og ændre til følgende.
    myhostname = mail.usman.dk
    mydomain = usman.dk
    myorigin = $mydomain
    inet_interfaces = all
    #inet_interfaces = localhost
    mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
    home_mailbox = Maildir/
  18. Åbent /etc/postfix/main.cf og slutningen af filen, tilføj.
    # Basic spam filtering regler
    smtpd_helo_required = yes
    disable_vrfy_command = yes
    message_size_limit = 20480000
    #SMTP-auth opsætninger
    broken_sasl_auth_clients = yes
    smtpd_sasl_auth_enable = yes
    smtpd_sasl_type = dovecot
    smtpd_sasl_path = private/auth
    smtpd_sasl_security_options = noanonymous
    smtpd_sasl_tls_security_options = $smtpd_sasl_security_options
    smtpd_use_tls = yes
    smtpd_tls_received_header = yes
    smtpd_tls_session_cache_timeout = 3600s
    smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_rbl_client list.dsbl.org, reject_rbl_client sbl.spamhaus.org, reject_rbl_client cbl.abuseat.org, reject_rbl_client dul.dnsbl.sorbs.net
    smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
    smtpd_tls_key_file = /etc/ssl/mail.usman.dk.key
    smtpd_tls_cert_file = /etc/ssl/mail.usman.dk.crt
    smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_tls_cache
    tls_random_source = dev:/dev/urandom
  19. Åben filen /etc/postfix/master.conf og fjern “#” foran.
    submission inet n – n – – smtpd
    smtps inet n – n – – smtpd
    -o smtpd_tls_wrappermode=yes
    -o smtpd_sasl_auth_enable=yes
  20. Genstart postfix servicen og tillad trafik til porte i firewall.
    systemctl restart postfix
    systemctl enable postfix
    firewall-cmd –zone=public –add-port=25/tcp –permanent
    firewall-cmd –zone=public –add-port=587/tcp –permanent
    firewall-cmd –zone=public –add-port=465/tcp –permanent
    firewall-cmd –reload
  21. Tillad trafik til postfix porte i din Router firewall.
    – Port: 25/tcp
    – Port: 587/tcp
    – Port: 465/tcp
    til at pege imod 192.168.1.10.
  22. Opret en email konto.
    useradd -s /sbin/nologin Bruger1
    echo ‘Kode123456789’ | passwd Bruger1 –stdin
  23. Benyt en mail klient f.eks. Windows Live Mail, Thunderbird, Office Outlook og forbind til den nye oprettet mail konto.
    – IMAP: mail.usman.dk port: 993 SSL/TLS
    – SMTP: mail.usman.dk port: 465 SSL/TLS
    – Brugernavn: Bruger1 og Adgangskode: Kode123456789
  24. Installation af OpenDKIM.
    yum install epel-release
    yum install opendkim
  25. Backup filen /etc/opendkim.conf.
    cp -R /etc/opendkim.conf /etc/opendkim.conf.bak
  26. Åben filen /etc/opendkim.conf og ændre.
    Mode sv
    #KeyFile /etc/opendkim/keys/default.private
    KeyTable /etc/opendkim/KeyTable
    SigningTable refile:/etc/opendkim/SigningTable
    ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
    InternalHosts refile:/etc/opendkim/TrustedHosts
  27. Opret de nødvendige DKIM privat og public nøgler.
    mkdir /etc/opendkim/keys/usman.dk
    opendkim-genkey -D /etc/opendkim/keys/usman.dk/ -d usman.dk -s mail
    chown -R opendkim: /etc/opendkim/keys/usman.dk
    mv /etc/opendkim/keys/usman.dk/mail.private /etc/opendkim/keys/usman.dk/mail
  28. Åben KeyTable /etc/opendkim/KeyTable og tilføj i slutningen af filen.
    mail._domainkey.usman.dk usman.dk:mail:/etc/opendkim/keys/usman.dk/mail
  29. Åben SigningTable /etc/opendkim/SigningTable og tilføj i slutningen af filen.
    *@usman.dk mail._domainkey.mydomain.com
  30. Tilføj dine tilladte mail domaæner i filen /etc/opendkim/TrustedHosts.
    usman.com
    mail.usman.com
  31. Se DKIM indtastninger som benyttes af DNS TXT Rekords.
    cat /etc/opendkim/keys/usman.dk/mail.txtden burde vise noget der ligner:
    mail._domainkey IN      TXT     ( “v=DKIM1; k=rsa; “
    “p=NIGFUA0GCSqGSIb3DQEBAQUAA4GNADCNiQKBgQDNKvo4vuFYyVM97tyMvG49HNYrlANp7caANllyeeT2oVV0omNt17bS8cejUFD6Ng3pw/lfLO338VGeVFQ6iEV2nyGzr3HTVM7VtUJGh5YiWoE4PJI8Fy2chmndNFFhNNtZ6qdpVIY+oDLevV8vM+wjwSjFDN2v/a6qjKZ/akO+pLID0QAG” )  ….
  32. OpenDKIM skal nu integreres med postfix, tilføj i slutningen af filen /etc/postfix/main.cf.
    smtpd_milters = inet:127.0.0.1:8891
    non_smtpd_milters = $smtpd_milters
    milter_default_action = accept
    milter_protocol = 2
  33. Start OpenDKIM servicen.
    systemctl start opendkim
    systemclt enable opendkim
    systemctl restart postfix
  34. Installer antispam og antivirus.
    yum install amavisd-new spamassassin clamav clam-update
  35. Backup filen /etc/freshclam.conf.
    cp -R /etc/freshclam.conf /etc/freshclam.conf.bak
  36. Åben filen /etc/freshclam.conf og sæt “#” foran Example.
    #Example
  37. Opdater din clamav antivirus signatur database.
    freshclam
  38. Backup filen /etc/sysconfig/freshclam.
    cp -R /etc/sysconfig/freshclam /etc/sysconfig/freshclam.bak
  39. Åben filen /etc/sysconfig/freshclam og sæt “#” foran FRESHCLAM_DELAY=disabled-warn.
    #FRESHCLAM_DELAY=disabled-warn   ## REMOVE ME
  40. Backup filen /etc/amavisd/amavisd.conf.
    cp -R /etc/amavisd/amavisd.conf /etc/amavisd/amavisd.conf.bak
  41. Åben filen /etc/amavisd/amavisd.conf og ændre værdierne $mydomain og $myhostname.
    $mydomain = ‘usman.dk’;
    $myhostname = ‘mail.usman.dk’;
  42. Åben filen /etc/postfix/master.cf og tilføj i slutningen af filen.
    amavisfeed unix – – n – 2 lmtp
    -o lmtp_data_done_timeout=1200
    -o lmtp_send_xforward_command=yes
    -o lmtp_tls_note_starttls_offer=no
    127.0.0.1:10025 inet n – n – – smtpd
    -o content_filter=
    -o smtpd_delay_reject=no
    -o smtpd_client_restrictions=permit_mynetworks,reject
    -o smtpd_helo_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o smtpd_data_restrictions=reject_unauth_pipelining
    -o smtpd_end_of_data_restrictions=
    -o smtpd_restriction_classes=
    -o mynetworks=127.0.0.0/8
    -o smtpd_error_sleep_time=0
    -o smtpd_soft_error_limit=1001
    -o smtpd_hard_error_limit=1000
    -o smtpd_client_connection_count_limit=0
    -o smtpd_client_connection_rate_limit=0
    -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters
    -o local_header_rewrite_clients=
    -o smtpd_milters=
    -o local_recipient_maps=
    -o relay_recipient_maps=
  43. Åben filen /etc/postfix/main.cf og tilføj i slutningen af filen.
    #use amavisd as filter on port 10024
    content_filter=amavisfeed:[127.0.0.1]:10024
  44. Start spam servicene.
    systemctl start spamassassin
    systemctl start amavisd

 

Husk også at opsætte SPF rekorder i din Public Domæne DNS under SPF-rekord eller TXT-rekord.

Du kan benytte Webmin med plugins til at have en GUI interface, hvis man ikke ønsker SSH/CLI interface.

One thought on “Robust Mail Server på CentOS 7 med postfix, dovecot, opendkim, spamassassin, amavisd og clamav

  1. Anders siger:

    Tak for dette, havde problemer med opendkim.
    men virker fint nu hilsen, Anders/CSC.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *