Σε συνδυασμό με courier-pop courier-imap
Στήνουμε τον server κάνωντας τα διαδοχικά βήματα που περιγράφονται εδώ : http://www.howtoforge.com/perfect_setup_debian_etch_p5
Το προκαθορισμένο μέγεθος e-mail είναι 10MB. Για να το αλλάξουμε τροποποιούμε το αρχείο main.cf προσθέτωντας ή αλλάζωντας την παρακάτω γραμμή
message_size_limit = 20480000
Στην συνέχεια κάνουμε επανεκκίνηση τον mail server
service restart postfix
και ελέγχουμε τις μεταβλητές του
postconf | grep size
Τέλος δοκιμάζουμε να στείλουμε ένα πολύ μεγάλο e-mail
Στο αρχείο /etc/postfix/main.cnf προσθέτουμε στο τέλος του τα εξής
#virtual domains virtual_alias_maps = hash:/etc/postfix/virtual sender_canonical_maps = hash:/etc/postfix/senders home_mailbox = Maildir/
Για να δημιουργηθούν τα αρχείο virtual.db και senders.db
cd /etc/postfix postmap senders postmap virtual
Μετά από κάθε αλλαγή στα αρχεία senders και virtual που είναι οι χρήστες και οι διευθύνσεις e-mail των αποστολέων και των παραληπτών e-mail του server εκτελούμε την αντίστοιχη postmap εντολή.
Δοκιμή Αποστολής e-mail
echo test | mail -v username@domain.com
Για να δοκιμάσουμε τα virtual domains συνδεόμαστε πρώτα ως ένας χρήστης virtual domain (π.χ. user) και στην συνέχεια δοκιμάζουμε αποστολή
su - user echo test | mail -v username@domain.com
Στο αρχείο /etc/postfix/main.cf προσθέτουμε στην παρακάτω γραμμή το configuration αρχείο για όλα τα virtual domains στα οποία κάνουμε relay
relay_domains = $mydestination, hash:/etc/postfix/relay-domains
Το αρχείο relay-domains θα πρέπει να μοιάζει με
mydomain.gr OK myotherdomain.com OK ..
Για να δημιουργήσουμε το relay-domains.db εκτελούμε
postmap relay-domains
Προσθέτουμε επίσης τις παρακάτω γραμμές στο /etc/postfix/main.cf
relayhost = relay_recipient_maps =
Τέλος θα πρέπει οπωσδήποτε στις ρυθμίσεις του dns για το domain που εξυπηρετείται ο relay mail server να έρχεται δεύτερος σε προτεραιότητα. Π.χ. Αν ο primary mail server είναι ο mx1.mymailserver.gr και relay είναι ο mx2.mymailserver.gr
mx1 IN CNAME mx1.mymailserver.gr. @ IN MX 10 mx1 mx2 IN CNAME mx2.mymailserver.gr. @ IN MX 20 mx2
Μια από τις χρήσιμες δυνατότητες είναι η λήψη με pop από κάποιον client των μηνυμάτων συστήματος των 2 server, που αποστέλλονται από τον τοπικό χρήστη root στο root@mydomain.gr. O primary mail server στέλνει τα μηνύματα στον εαυτό του ενώ βέβαια ο relay mail server στέλνει στο root στο domain μας δηλαδή στον root στον primary server. Έτσι τα e-mail στον root@mydomain.gr είναι και από τους δύο servers. Για να τα ξεχωρίζουμε κάνουμε το εξής:
Τροποποιούμε το αρχείο /etc/postfix/senders στον κάθε server ώστε στον primary mail server (π.χ. s1) να περιέχει
root root@s1.mydomain.gr
και στον relay (π.χ. s2) να περιέχει
root root@s2.mydomain.gr
Εκτελούμε και στα 2 μηχανήματα την εντολή
postmap senders
Τώρα θα ξεχωρίζουμε από ποιο server προέρχονται τα μηνύματα του root από την διεύθυνση αποστολέα (root@s1.mydomain.gr και root@s2.mydomain.gr)
Ρυθμίζουμε σωστά το hostname (βλ.Ρύθμιση δικτύου)
Επίσης τροποποιούμε το αρχείο /etc/mailname ώστε να είναι όμοιο με το hostname
cp /etc/hostname /etc/mailname
Επίσης καλό είναι να ρίξουμε μια ματιά στο αρχείο /etc/aliases για να δούμε σε ποιους χρήστες κατευθύνονται τα μηνύματα. Υπό φυσιολογικές συνθήκες όλα εκτός του mailer-daemon: postmaster θα προορίζονται προς τον root. Όμως ενώ θέλουμε και τα μηνύματα του www-data να αποστέλονται στον root εδώ είναι ίσως λανθασμένα μόνο του www. Εάν στείλει κάποιος μέσω php από τον apache και δεν φτάσει στον προορισμό του θα επιστραφεί στον www-data. Καλό είναι να επιστραφεί στον root. Προσθέτουμε λοιπόν την γραμμή
www-data: root
Μετά από αλλαγή θα πρέπει να εκτελέσουμε και την εντολή
newaliases
Χρησιμοποιούμε το εργαλείο pflogsumm
aptitude install pflogsumm pflogsumm /var/log/mail.log | less
Σε περίπτωση που γίνεται υπερβολική χρήση του mail server μπορούμε να ορίσουμε τις παρακάτω ρυθμίσεις
Ορίζουμε όριο 20 παραληπτών από ένα client ανά 60s (anvil_rate_time_unit)
smtpd_client_recipient_rate_limit = 20
Ορίζουμε όριο στο μέγεθος κάθε e-mail π.χ. 20MB
message_size_limit = 20480000
Εάν θέλουμε να ορίσουμε και όριο στο συνολικό μέγεθος e-mail που θα σταλεί π.χ, 10 παραλήπτες x 5MB → σύνολο 50ΜΒ σύνολικό μέγεθος, θα πρέπει να χρησιμοποιήσουμε τον policyd server (βλ. http://www.policyd.org/)
Να δω εάν γίνεται να οριστεί και παράθυρο χρόνου για τα 50 MB π.χ. ανά 15 λεπτά
Στο αρχείο main.cf προσθέτουμε εκτός των άλλων και έλγχο rbl από γνωστές υπηρεσίες στο spam block databases στο internet
smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination,
check_sender_access hash:/etc/postfix/sender_access,
reject_rbl_client bl.spamcop.net,
reject_rbl_client relays.ordb.org,
reject_rbl_client sbl.spamhaus.org
smtpd_sasl_authenticated_header = yes
Επίσης (με την παραπάνω ρύθμιση) μπορούμε να προσθέσουμε και εμείς επιπλέον διευθύνσεις από τις οποίες δεν θα αποδεχόμαστε e-mail στο αρχείο /etc/postfix/sender_access (αν και πλέον οι spammers μεταβάλλουν συνέχεια την ip και την e-mail διεύθυνση από την οποία στέλνουν).
bad@badaddress.com REJECT
postmap /etc/postfix/sender_access /etc/init.d/postfix restart
Η καλύτερη λύση για μείωση των επιπτώσεων των spammers στην απόδοση και την ασφάλεια του mail server είναι η υπηρεσία fail2ban
Καλό είναι όμως να ορίσουμε και έναν μέγιστο αριθμό συνεχόμενων smtp αποτυχιών. Για παράδειγμα εάν το fail2ban ελέγχει ανά 5 δλ (μέθοδος poll) το αρχείο mail.log και γίνουν 20 προσπάθεις αποστολής μέσα στα 5 αυτά δλ δεν έχει σημασία εάν ορίσαμε να μπλοκάρει την απομακρυσμένη ip μετά από 5 προσπάθεις, o spammer έχει προλάβει να κάνει ήδη 20.
Ορίζουμε λοιπόν και την παρακάτω ρύθμιση στο main.conf
smtpd_hard_error_limit = 10 # because fail2ban polls and cannot detect too many relay access errors in little time smtpd_error_sleep_time = 1s smtpd_soft_error_limit = 3 # After that amount of errors, delay configured by smtpd_error_sleep_time delay is increased until the smtpd_hard_error_limit is reached and client is disconnected
Για αποστολή μέσω smtp με χρήση ssl/tls μπορούμε να χρησιμοποιήσουμε τα ssl κλειδιά που δημιουργήσαμε από τον apache2
Στο αρχείο main.cf ορίζουμε
smtpd_tls_cert_file = /etc/apache2/newcert.pem smtpd_tls_key_file = /etc/apache2/newkey.pem smtpd_tls_CAfile = /etc/apache2/newcert.pem
και επανεκκινούμε την υπηρεσία postfix
/etc/init.d/postfix restart
Για λήψη μέσω pop3 με χρήση ssl/tls κάνουμε τα εξής για τα ίδια κλειδιά
cd /etc/courier cat /etc/apache2/newkey.pem /etc/apache2/newcert.pem > pop3d.pem openssl gendh >> pop3d.pem /etc/init.d/courier-pop-ssl restart
Για λήψη μέσω imap με χρήση ssl/tls κάνουμε αντίστοιχα
cd /etc/courier cat /etc/apache2/newkey.pem /etc/apache2/newcert.pem > imapd.pem openssl gendh >> imapd.pem /etc/init.d/courier-imap-ssl restart
Στο αρχείο /etc/dovecot/dovecot.conf ορίζουμε
ssl_cert_file = /etc/apache2/newcert.pem ssl_key_file = /etc/apache2/newkey.pem ssl_ca_file = /etc/apache2/newca.pem
Επανεκκινούμε την υπηρεσία με
/etc/init.d/dovecot restart
Χρειάζεται να ανοίξουμε τις παρακάτω θύρες για smtp και pop συνδέσεις
Ο relay mail server όταν δέχεται ένα e-mail την στιγμή που ο primary server δεν αποκρίνεται το τοποθετεί στην ουρά και ανά τακτά χρονικά διαστήματα (300 sec postfix version < 2.4, 1000sec postfix version > 2.4) προσπαθεί να τα στείλει εμφανίζοντας όμως το ακόλουθο μήνυμα λάθους.
tail -f /var/log/mail.log Aug 29 22:45:04 wad postfix/sendmail[21848]: fatal: usage: sendmail [options] Aug 29 22:50:04 wad postfix/sendmail[21871]: fatal: usage: sendmail [options] ..
Ίσως το λάθος προέρχεται από αλλού καθώς μετά από περίπου 1000sec τα μηνύματα φεύγουν
Εάν βγει το παρακάτω μήνυμα λάθους
Jan 27 23:54:22 s1 postfix/local[1437]: warning: maildir access problem for UID/GID=1009/1016: create maildir file /home/linuxfanclub/Maildir/tmp/1201470862.P1437.s1.mydomain.gr: Permission denied Jan 27 23:54:22 s1 postfix/local[1437]: warning: perhaps you need to create the maildirs in advance
Είναι μάλλον πρόβλημα δικαιωμάτων