Επιτέλους μετά από πολύ καιρό δοκιμών εχθές τελείωσα κατά 99% ένα Debian mail server με HORDE .

Μου πήρε αρκετό καιρό γιατί δεν κατάφερα να βρω ένα help για την πλήρη εγκατάσταση του στο Internet ( μπορεί να μην έψαξα και εγώ αρκετά 😉 )

Παρακάτω θα σας πω με λίγα λόγια την διαδικασία που ακολούθησα.

Διαδικασία εγκατάστασης του Debian Etch δεν την αναφέρω. Απλά εγώ αυτό που έκανα όταν μου ζήτησε τα πακέτα που ήθελα να εγκαταστήσω αυτόματα, επέλεξα μόνο στο “standard system” και τίποτε άλλο.

 

— Το πρωτότυπο αρχείο τo έχω πάρει από εδω

 

INFO

Οτι έιναι μαρκαρισμένο με αυτο το χρωμα ειναι εντολες που δινονται με root access – Ότι βρίσκετε μέσα σε table θα είναι παράδειγμα το πως πρέπει να είναι το αρχείο για το οποίο μιλάμε

 

 

 

Ξεκινάμε κάνοντας εγκατάσταση τα παρακάτω πακέτα

 

apt-get install ssh openssh-server

Κάνουμε edit το /etc/ssh/sshd_confing ( nano /etc/ssh/sshd_config )

Αλλάζουμε καταρχάς την πόρτα στην οποία θα ακούει ο ssh server και απενεργοποιούμε την δυνατότητα του user root να μπορεί να κάνει login στον ssh server

 

το sshd_configure πρέπει να φαίνεται κάπως έτσι

[…]
Port 2222
[…]
PermitRootGogin no
[…]

 

Ελέγχουμε εάν έχουμε κάνει σωστά το newtwork config

 

nano /etc/network/interfaces

 

 

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
#allow-hotplug eth0
#iface eth0 inet dhcp
auto eth0
iface eth0 inet static
address 192.168.0.100
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255

 

 

Άμα χρειαστεί να κάνουμε αλλαγή μέσα στο αρχείο interfaces πρέπει να κάνουμε restart το network

με

/etc/init.d/networking restart

 

Μετά αλλάζουμε το αρχείο /etc/hosts να μοιάζει κάπως έτσι

127.0.0.1 localhost.localdomain localhost
192.168.0.100 server1.example.com server1
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
### Θα αλλάξουμε μόνο το server1 στο όνομα του PC μας και το example.com στο Domain μας ###

 

Τώρα δίνουμε

 

echo server1.example.com > /etc/hostname

 

και κάνουμε restart το pc με

 

shutdown -r now

 

Μετά από το restart δίνουμε

 

hostname

hostname -f

 

και στις 2 περιπτώσεις πρέπει να δώσει server1.example.com . Τώρα εάν το επιθυμούμε μπορούμε να συνδεθούμε από κάποιο άλλο μηχάνημα με κάποιον ssh client ( PuTTY )

ή από κονσόλα με

ssh username@192.168.0.1 -p 2222

 

 

Κάνουμε edit το /etc/apt/sources.list και βγάζουμε το CD

#
# deb cdrom:[Debian GNU/Linux 4.0 r0 _Etch_ – Official i386 NETINST Binary-1 20070407-11:29]/ etch contrib main
#deb cdrom:[Debian GNU/Linux 4.0 r0 _Etch_ – Official #i386 NETINST Binary-1 20070407-11:29]/ etch contrib maindeb http://ftp2.de.debian.org/debian/ etch main
deb-src http://ftp2.de.debian.org/debian/ etch maindeb http://security.debian.org/ etch/updates main contrib
deb-src http://security.debian.org/ etch/updates main contrib

Μέτα τρέχουμε

apt-get update

apt-get upgrade

Ας εγκαταστήσουμε κάποια προγράμματα που θα χρειαστούμε

apt-get install binutils cpp fetchmail flex gcc libarchive-zip-perl libc6-dev libcompress-zlib-perl libdb4.3-dev libpcre3 libpopt-dev linux-kernel-headers lynx m4 make ncftp nmap openssl perl perl-modules unzip zip zlib1g-dev autoconf automake1.9 libtool bison autotools-dev g++

Σειρά έχει η MySql

apt-get install mysql-server mysql-client libmysqlclient15-dev

Εάν θέλουμε η Mysql να απαντάει σε όλα τα interfaces του συστήματος μας έκτος του localhost

κάνουμε edit το αρχείο /etc/mysql/my.cnf και βγάζουμε το # από το

[…]
#bind-address = 127.0.0.1
[…]

Κάνουμε restart την Mysql

/etc/init.d/mysql restart

Αλλάζουμε το password του root για την Mysql με

mysqladmin -u root password yourrootsqlpassword

Πλέον για να μπούμε στην MySql δίνουμε

mysql -p

Είναι ώρα να στίσουμε postfix με SMTP-AUTH και TLS

apt-get install postfix libsasl2 sasl2-bin libsasl2-modules libdb3-util procmail

Θα μας ρωτήσει κάποια πραγματάκια:

General type of configuration? <– Internet Site
Mail name? <– server1.example.com

Όταν τελειώσει η εγκατάσταση δίνουμε

dpkg-reconfigure postfix

Θα ξαναρωτηθούμε κάποια πραγματάκια:

General type of configuration? <– Internet Site
Where should mail for root go <– [blank] Mail name? <– server1.example.com
Other destinations to accept mail for? (blank for none) <– server1.example.com, localhost.example.com, localhost.localdomain, localhost
Force synchronous updates on mail queue? <– No
Local networks? <– 127.0.0.0/8
Use procmail for local delivery? <– Yes
Mailbox size limit <– 0
Local address extension character? <– +
Internet protocols to use? <– all

μετά δίνουμε τα εξεις:

postconf -e ‘smtpd_sasl_local_domain =’
postconf -e ‘smtpd_sasl_auth_enable = yes’
postconf -e ‘smtpd_sasl_security_options = noanonymous’
postconf -e ‘broken_sasl_auth_clients = yes’
postconf -e ‘smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination’
postconf -e ‘inet_interfaces = all’
echo ‘pwcheck_method: saslauthd’ >> /etc/postfix/sasl/smtpd.conf
echo ‘mech_list: plain login’ >> /etc/postfix/sasl/smtpd.conf

μετά θα δημιουργήσουμε certificates για TLS

mkdir /etc/postfix/ssl
cd /etc/postfix/ssl/
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024

chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csr

openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt

openssl rsa -in smtpd.key -out smtpd.key.unencrypted

mv -f smtpd.key.unencrypted smtpd.key

Μετά έχει σειρά το configuration του Postfix με TLS

postconf -e ‘smtpd_tls_auth_only = no’
postconf -e ‘smtp_use_tls = yes’
postconf -e ‘smtpd_use_tls = yes’
postconf -e ‘smtp_tls_note_starttls_offer = yes’
postconf -e ‘smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key’
postconf -e ‘smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt’
postconf -e ‘smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem’
postconf -e ‘smtpd_tls_loglevel = 1’
postconf -e ‘smtpd_tls_received_header = yes’
postconf -e ‘smtpd_tls_session_cache_timeout = 3600s’
postconf -e ‘tls_random_source = dev:/dev/urandom’
postconf -e ‘myhostname = server1.example.com’

Το αρχείο /etc/postfix/main.cf θα πρέπει να μοιάζει κάπως έτσι

# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailnamesmtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
# appending .domain is the MUA’s job.
append_dot_mydomain = no# Uncomment the next line to generate “delayed mail” warnings
#delay_warning_time = 4h# TLS parameters
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_use_tls = yes
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
myhostname = server1.example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = server1.example.com, localhost.example.com, localhost.localdomain, localhost
relayhost =
mynetworks = 127.0.0.0/8
mailbox_command = procmail -a “$EXTENSION”
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
smtpd_tls_auth_only = no
smtp_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

Κάνουμε restart τον postfix

/etc/init.d/postfix restart

Το authentication θα γίνεται από το saslauthd. Θα χρειαστεί να αλλάξουμε μερικά πραγματάκια για να τον κάνουμε να δουλεύει κατάλληλα.

mkdir -p /var/spool/postfix/var/run/saslauthd

Κάνουμε edit το αρχείο /etc/default/saslauthd

nano /etc/default/saslauthd

και αλλάζουμε 2 πραγματάκια

κάνουμε yes το START και αλλάζουμε το OPTIONS=”-c” σε

OPTIONS=”-c -m /var/spool/postfix/var/run/saslauthd -r”:

Κάνουμε start το saslauthd

/etc/init.d/saslauthd start

Για να δούμε εάν δουλεύει ο SMTP:

telnet localhost 25

ehlo localhost

Εάν δούμε τις παρακάτω γραμμές στην απάντηση που θα πάρουμε

250-STARTTLS

250-AUTH PLAIN LOGIN

είμαστε ΟΚ

Δίνουμε quit

Courier-IMAP / Courier-POP3

Για να εγκαταστήσουμε τα παραπάνω πακέτα δίνουμε:

apt-get install courier-authdaemon courier-base courier-imap courier-imap-ssl courier-pop courier-pop-ssl courier-ssl gamin libgamin0 libglib2.0-0

Θα μας ρωτήσει 2 πράγματα :

Create directories for web-based administration ? <– No
SSL certificate required <– Ok

Εάν δεν θέλουμε να χρησιμοποιήσουμε ISPConfig θα φτιάξουμε τον postfix να λαμβάνει τα emails στο maildir του κάθε χρήστη

postconf -e ‘home_mailbox = Maildir/’
postconf -e ‘mailbox_command =’
/etc/init.d/postfix restart

Apache και PHP5

πρώτα ο Apache

apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert

και μετά PHP5

apt-get install libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-json php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

στην ερώτηση θα απαντήσουμε yes

Continue installing libc-client without Maildir support? <– Yes

Μετά θα κάνουμε edit το αρχείο /etc/apache2/mods-available/dir.conf

nano /etc/apache2/mods-available/dir.conf

και θα αλλάξουμε το DirectoryIndex σε:

<IfModule mod_dir.c>
DirectoryIndex index.html index.htm index.shtml index.cgi index.php index.php3 index.pl index.xhtml
</IfModule>

Κάνουμε edit το αρχείο /etc/apache2/ports.conf

nano /etc/apache2/ports.conf

και προσθέτουμε να ακούει ο Apache και στην πόρτα 443

Listen 80 Listen 443

Τώρα θα ενεργοποιήσουμε μερικά module του apache

a2enmod ssl
a2enmod rewrite
a2enmod suexec
a2enmod include

Κάνουμε reload το configuration του Apache

/etc/init.d/apache2 force-reload

και It’s works!
Στην συνέχεια… εγκατάσταση Horde , Secure Horde , εγκατάσταση SpamFilter

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.