Jag har lagt in mailservern på en ren installation av Hardy Heron (serverversionen) och verifierat att allt fungerar som avsett.
Förutsättning:
- Maskinen står bakom en router/brandvägg och har ett fast internt ip, t.ex. 192.168.19.27
- Ett konto för dynamisk DNS finns med aktiverat MX record, t.ex. hos no-ip.com med domänen nisse.no-ip.net
- Du kör smtp genom din ISP:s mailservrar (inget krav).
GRUNDINSTALLATION
Installera postfix. Vid installationen välj t.ex. smarthost.
Kod: Markera allt
sudo apt-get install postfix
Kod: Markera allt
sudo cp /etc/postfix/main.cf /etc/postfix/main.cf.orginal
Kod: Markera allt
sudo nano /etc/postfix/main.cf
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
append_dot_mydomain = no
readme_directory = no
myhostname = localhost
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = maskinnamnet.nisse.no-ip.net, nisse.no-ip.net, localhost.nisse.no-ip.net, localhost.localdomain, localhost
relayhost = din ISP:s relay server (typ smtp.bredband.net)
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128, 192.168.19.0/24
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
home_mailbox = Maildir/
Installera Dovecot
Kod: Markera allt
sudo apt-get install dovecot-imapd
Kod: Markera allt
sudo nano /etc/dovecot/dovecot.conf
# Protocols we want to be serving: imap imaps pop3 pop3s
# If you only want to use dovecot-auth, you can set this to "none".
protocols = imap
mail_location = maildir:~/Maildir
# mail_location = mbox:~/mail:INBOX=/var/mail/%u
# mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n
Starta om Postfix och Dovecot
Kod: Markera allt
sudo /etc/init.d/postfix restart
Kod: Markera allt
sudo /etc/init.d/dovecot restart
I det fall Dovecot inte skapar Maidir får vi själva göra detta. Vi börjar med att fixa till så att Maildir skapas automatiskt för varje nytillkommande användare;
Kod: Markera allt
sudo maildirmake.dovecot /etc/skel/Maildir
sudo maildirmake.dovecot /etc/skel/Maildir/.Drafts
sudo maildirmake.dovecot /etc/skel/Maildir/.Sent
sudo maildirmake.dovecot /etc/skel/Maildir/.Trash
sudo maildirmake.dovecot /etc/skel/Maildir/.Templates
För redan existerande användare får vi göra det manuellt;
Kod: Markera allt
sudo cp -r /etc/skel/Maildir /home/nisse/
sudo chown -R nisse:nisse /home/nisse/Maildir
sudo chmod -R 700 /home/nisse/Maildir
Servernamn för IMAP och SMTP: maskinnamnet.nisse.no-ip.net
IMAP Port:143
IMAP säkerhet anslutning: Never
SMTP Port:25
SMTP säkerhet anslutning: No
Om klientmaskinen finns på det lokala nätverket öppna dess hostsfil:
Kod: Markera allt
sudo nano /etc/hosts
192.168.19.27 maskinnamnet.nisse.no-ip.net
Öppna port 25 (och port143) i din router/brandvägg för inkommande trafik till mailservern och provkör.
När du fått allt att fungera kontrollera att mailservern inte blivit felkonfigurerad och kan användas för relay-trafik.
http://www.antispam-ufrj.pads.ufrj.br/test-relay.html
SASL (Simple Authentication and Security Layer)
I Postfix main.cf finns raden;
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128, 192.168.19.0/24
Den säger att vi måste sitta på nätet 192.168.19.0/24 för att kunna skicka epost med vår klient. Försöker vi skicka från någon annan plats, t.ex. från ett externt nätverk erhålls "relay access denied". Vi löser detta genom att autenticera oss i samband med att vi skickar eposten med SMTP.
Installera:
Kod: Markera allt
sudo apt-get install sasl2-bin libsasl2 libsasl2-modules
Kod: Markera allt
sudo nano /etc/default/saslauthd
MECHANISMS="pam"
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"
Ändra (ev.skapa) smtpd.conf och kontrollera att raderna nedan finns.
Kod: Markera allt
sudo nano /etc/postfix/sasl/smtpd.conf
mech_list: plain login
allow_plaintext: true
Lägg till följande rader i Postfix main.cf
Kod: Markera allt
sudo nano /etc/postfix/main.cf
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
Se oxå till att följande rader finns med i main.cf
smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination
Observera att varje rad under smtpd_recipient_restrictions = måste inledas med ett mellanslag!!!
Då Postfix normalt körs med chroot kan den inte kommunicera med saslauthd. Vi måste göra några anpassningar:
Kod: Markera allt
sudo mkdir -p /var/spool/postfix/var/run/saslauthd
sudo chgrp sasl /var/spool/postfix/var/run/saslauthd
sudo adduser postfix sasl
Kod: Markera allt
sudo /etc/init.d/postfix restart
sudo /etc/init.d/saslauthd restart
TLS (Transport Layer Security)
Det kan, som Lars säger, vara bra att sätta upp mailservern så att den kan köra krypterad trafik med anslutna klienter och förhandla med andra mailservrar om TLS anslutning,
Öppna main.cf i Postfix
Kod: Markera allt
sudo nano /etc/postfix/main.cf
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_tls_loglevel = 1
Starta om Postfix
Kod: Markera allt
sudo /etc/int.d/postfix restart
Öppna en terminal på maskinen med mailservern.
Du skriver det fetstilade och mailservern svarar.
# telnet nisse.no-ip.net 25
Trying 111.222.333.444...
Connected to nisse.no-ip.net.
Escape character is '^]'.
220 localhost ESMTP Postfix (Ubuntu)
EHLO nisse.no-ip.net
250-localhost
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
Finns raden 250-STARTTLS ska TLS vara aktiverat.
Glöm sedan inte att ändra till TLS i SMTP inställningarna i mailklienten!
SSL med Dovecot
För att även kryptera mejlen när man hämtar dessa med Dovecot gör så här:
Lägg till imaps i dovecot.conf så att aktuellt stycke ser ut så här;
# Protocols we want to be serving: imap imaps pop3 pop3s
# If you only want to use dovecot-auth, you can set this to "none".
protocols = imap imaps
Aktivera även ssl lite längre ned på sidan
# PEM encoded X.509 SSL/TLS certificate and private key. They're opened before
# dropping root privileges, so keep the key file unreadable by anyone but
# root.
ssl_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
ssl_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
Spara och starta om Dovecot.
I email klienten ändra IMAP serverns säkerhetsinställningar till SSL port 993.
ANTIVIRUS
Till vår mailserver använder vi ClamSMTP. Det är en SMTP proxy daemon, som kollar virus m.h.a ClamAV.
Installera
Kod: Markera allt
sudo apt-get install clamsmtp clamav-freshclam
Kod: Markera allt
sudo nano /etc/clamsmtpd.conf
OutAddress: 10026
Listen: 127.0.0.1:10025
Öppna main.cf i Postfix.
Kod: Markera allt
sudo nano /etc/postfix/main.cf
#clamsmtp
content_filter = scan:[127.0.0.1]:10025
receive_override_options = no_address_mappings
Öppna master.cf i Postfix.
Kod: Markera allt
sudo nano /etc/postfix/master.cf
# AV scan filter (used by content_filter)
scan unix - - n - 16 smtp
-o smtp_send_xforward_command=yes
# For injecting mail back into postfix from the filter
127.0.0.1:10026 inet n - n - 16 smtpd
-o content_filter=
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks_style=host
-o smtpd_authorized_xforward_hosts=127.0.0.0/8
Starta om maskinen.
KLART - Nu virus-scannas alla utgående och inkommande mail till servern!
Testa att skicka ett mail till mailservern. Titta i mailets header (visa allt). Här ska nu finnas en rad liknande:
X-Virus-Scanned: ClamAV using ClamSMTP
om allt fungerar som det ska. Ta även en titt i mailloggen.
Uppdateringsfrekvensen av virusdefinitioner är per default satt till varje timma. Frekvensen kan ändras i /etc/clamav/freshclam.conf
Logg över uppdateringarna finns i /var/log/clamav/freshclam.log
ANTISPAM
Vi väljer att använda Postgrey (greylisting) och DNSBL/RBL i stället för de tyngre spamdödarna ASSP och Spamassassin. Vad Postgrey och DNSBL/RBL gör för att förhindra spam finner du här http://en.wikipedia.org/wiki/Greylisting respektive http://en.wikipedia.org/wiki/DNSBL
DNSBL/RBL
Öppna main.cf i Postfix
Kod: Markera allt
sudo nano /etc/postfix/main.cf
smtpd_helo_required = yes
disable_vrfy_command = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,
permit_mynetworks,
reject_invalid_hostname,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unknown_sender_domain,
reject_unknown_recipient_domain,
reject_unauth_destination,
reject_rbl_client dnsbl.njabl.org,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client bl.spamcop.net,
reject_rbl_client dnsbl.sorbs.net,
reject_rbl_client zen.spamhaus.org,
permit
smtpd_data_restrictions = reject_unauth_pipelining,
permit
Observera att varje rad under smtpd_recipient_restrictions = måste inledas med ett mellanslag!!!
Postgrey
Installera Postgrey
Kod: Markera allt
sudo apt-get install postgrey
Kod: Markera allt
sudo nano /etc/default/postgrey
POSTGREY_OPTS="--inet=127.0.0.1:60000 --whitelist-clients=/etc/postgrey/whitelist_clients"
Öppna main.cf i Postfix
Kod: Markera allt
sudo nano /etc/postfix/main.cf
check_policy_service inet:127.0.0.1:60000,
KLART - Starta om maskinen!
Postgrey. Observera att första gången en avsändare skickar ett mail till din mailserver tar det ca 5-30 min innan din mailserver accepterar mailet. Vill man undvika detta för önskade/kända domäner kan man lägga in dessa i /etc/postgrey/whitelist_clients. Då behandlas de inte av Postgrey.
WEBMAIL
RoundCubeMail
http://roundcube.net/
RoundCubeMail har varit nämnt i tidigare trådar så jag valde det som ett första exempel.
Förutsättning:
Mysql och apache2 är installerade
Hämta RoundCubeMail
Kod: Markera allt
wget http://kent.dl.sourceforge.net/sourceforge/roundcubemail/roundcubemail-0.2-beta.tar.gz
Kod: Markera allt
tar xvfz roundcubemail-0.2-beta.tar.gz
Kod: Markera allt
mkdir ~/webmail && cp -r ~/roundcubemail-0.2-beta/* ~/webmail
Kod: Markera allt
sudo mv ~/webmail /var/www/webmail
Kod: Markera allt
sudo chown -R www-data /var/www/webmail/temp
Kod: Markera allt
sudo chown -R www-data /var/www/webmail/logs
Kod: Markera allt
sudo mysql -u root -p
Kod: Markera allt
CREATE DATABASE roundcubemail;
Kod: Markera allt
GRANT ALL PRIVILEGES ON roundcubemail.* TO username@localhost IDENTIFIED BY 'password';
Kod: Markera allt
FLUSH PRIVILEGES;
Kod: Markera allt
QUIT
http://nisse.no-ip.net/webmail/installer/
START INSTALLATION knapp
Det är möjligt att följande "NOT OK" erhålls:
magic_quotes_gpc: NOT OK(is '1', should be '0')
I såfall - öppna php.ini
Kod: Markera allt
sudo nano /etc/php5/apache2/php.ini
Starta om Apache
Kod: Markera allt
sudo /etc/init.d/apache2 reload
http://nisse.no-ip.net/webmail/installer/
NEXT knapp
Det enda som behöver ändras är:
Database setup
Ändra name, user name och password enligt ditt tidigare önskemål.
Skapa konfigurationsfiler - CREATE CONFIG knappen.
Två konfigfiler skapas - main.inc.php och db.inc.php. Ladda ned dessa. Placera dem sedan i folder /var/www/webmail/config/
Fortsätt nu med CONTINUE knapp
Klicka på knapp Initialize database
Klart!
Dax att logga in:
http://nisse.no-ip.net/webmail/
nils
hemlis
maskinnamn.nisse.no-ip.net
Viktigt. Gå direkt till Personal Settings / Identities och ändra din avsändaradress till nils@nisse.no-ip.net (det vill säga inget maskinnamn)
Viktigt. Slutligen ta bort konfigationsfoldern /var/www/webmail/installer/
SSL-HTTPS
Nu är det inte så lämpligt att köra webmailen i http-trafik. Lokal användare och lösen skickas i klartext. Säkrare är att använda SSL, dvs. https-trafik. Hur man fixar detta finns här http://www.ubuntu-se.org/phpBB3/viewtop ... 54&t=24777
MEN ... för tillfället vi kan gå runt detta och använda det medföljande snakeoil certifikatet istället.
Kontrollera först att Apache2 även lyssnar på port 443
Kod: Markera allt
sudo nano /etc/apache2/ports.conf
Kod: Markera allt
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl
Kod: Markera allt
sudo nano /etc/apache2/sites-available/ssl
NameVirtualHost *:443
<VirtualHost *:443>
ServerAdmin webmaster@localhost
Servername maskinnamn.nisse.no-ip.net
SSLEngine On
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
Ladda den
Kod: Markera allt
sudo a2ensite ssl
Kod: Markera allt
sudo /etc/init.d/apache2 reload
Nu kommer Firefox att klaga, men gå vidare och importera certifikatet i webbläsaren. När det är gjort blir det inget felmeddelande fortsättningsvis.
Squirrelmail
http://www.squirrelmail.org/
Ett alternativ till RoundCube är Squirrelmail. Den kräver inte Mysql.
Installera:
Kod: Markera allt
sudo apt-get install squirrelmail
Kod: Markera allt
sudo squirrelmail-configure
Command >> 2. --> 1. --> nisse.no-ip.net --> S --> R
Command >> 4. --> 11. --> y --> S --> Q
Som synes kan man göra många inställningar. Notera speciellt alla plugins. Du kan återkomma hit senare med kommandot ovan!
Skapa squirrelmail
Kod: Markera allt
sudo cp /etc/squirrelmail/apache.conf /etc/apache2/sites-available/squirrelmail
Kod: Markera allt
sudo a2ensite squirrelmail
Kod: Markera allt
sudo /etc/init.d/apache2 reload
Logga in
Name:Nils
Password:hemlis
Snygga till (T.ex. Option --> Display Preferences; Theme:BluesNews, Custom Stylesheet:sans-10). Gå sedan tillbaka och kolla in plugins (Command >> 8.).
Överväg krypterad trafik. Automatisk omstyrning från http till https görs enkelt för squirrelmail.
Öppna
Kod: Markera allt
sudo nano /etc/apache2/sites-enabled/squirrelmail
Starta om Apache2
Kod: Markera allt
sudo /etc/init.d/apache2 reload