Διαμόρφωση του Postfix και του Dovecot στο Ubuntu

Πολλοί χρήστες του Ubuntu χρησιμοποιούν το σύστημα όχι μόνο για οικιακές ανάγκες. Αυτή η προσέγγιση είναι πλήρως δικαιολογημένη, διότι σε συστήματα Linux είναι πολύ πιο βολικό να κάνουμε προγραμματισμό, δημιουργώντας διακομιστές και ιστότοπους. Μια από τις ανέσεις είναι η δημιουργία ενός διακομιστή ηλεκτρονικού ταχυδρομείου. Για αρχάριους, αυτό το έργο θα είναι εξαιρετικά δύσκολο, αλλά εάν καταλάβετε πώς να εγκαταστήσετε και να διαμορφώσετε τον διακομιστή αλληλογραφίας για το Ubuntu, η εργασία δεν θα σας φανεί τόσο δύσκολη.

Πώς να ρυθμίσετε ένα διακομιστή αλληλογραφίας με βάση το Ubuntu.

Λίγη θεωρία

Πριν από συγκεκριμένες οδηγίες και ζύμωση του κώδικα δεν μπορεί να κάνει χωρίς ένα κλάσμα θεωρητικού υλικού. Είναι σημαντικό να καταλάβουμε τι είναι ο διακομιστής ηλεκτρονικού ταχυδρομείου και πώς λειτουργεί.

Ένας διαμορφωμένος διακομιστής αλληλογραφίας, για να το θέσω πολύ απλά, είναι ένας ταχυδρόμος ο οποίος λαμβάνει ένα "γράμμα" από έναν πελάτη ηλεκτρονικού ταχυδρομείου και τον δίνει σε άλλο. Σε αυτό, κατ 'αρχήν, το σύνολο της ουσίας του έργου αυτού του λογισμικού. Ο διακομιστής αλληλογραφίας δεν χρειάζεται μόνο για την αποστολή μηνυμάτων ηλεκτρονικού ταχυδρομείου. Στις τοποθεσίες, είναι υπεύθυνος για την εγγραφή χρηστών, την υποβολή εντύπων και άλλων σημαντικών ενεργειών, χωρίς τις οποίες ο ιστότοπος θα γίνει σαν ένα βιβλίο, το οποίο μπορείτε να δείτε μόνο γυρίζοντας τις σελίδες, αλλά είναι δύσκολο να κάνετε κάτι.

Οι διακομιστές αλληλογραφίας στο Linux διαφέρουν σημαντικά από αυτούς των Windows και άλλων συστημάτων. Στα Windows, αυτό είναι ένα έτοιμο κλειστό πρόγραμμα, το οποίο μπορεί μόνο να αρχίσει να χρησιμοποιείται. Οι διανομές Linux απαιτούν επίσης αυτόματη ρύθμιση όλων των στοιχείων. Και ο εξυπηρετητής τελικά θα αποτελείται όχι από ένα πρόγραμμα, αλλά από πολλά. Θα χρησιμοποιήσουμε το Postfix σε συνδυασμό με Dovecot και MySQL.

Γιατί Postfix;

Υπάρχουν πολλά προγράμματα ηλεκτρονικού ταχυδρομείου στο Ubuntu, αλλά το επιλέξαμε ακόμα. Η εγκατάσταση του Posfix στο Ubuntu είναι πολύ πιο εύκολη από το ίδιο SendMail και αυτό είναι σημαντικό για έναν αρχάριο χρήστη. Σε συνδυασμό με το Dovecot, η Postfix είναι σε θέση να κάνει ό, τι απαιτείται συνήθως από τους διακομιστές αλληλογραφίας.

Το Postfix είναι άμεσα ο ίδιος ο πράκτορας μεταφοράς αλληλογραφίας. Θα διαδραματίσει σημαντικό ρόλο σε ολόκληρη την υποβολή. Πρόκειται για ένα πρόγραμμα ανοιχτού κώδικα που χρησιμοποιούν πολλοί διακομιστές και ιστότοποι από προεπιλογή. Ο Dovecot είναι ένας πράκτορας αποστολής αλληλογραφίας. Ο κύριος ρόλος της είναι να εξασφαλίσει ασφάλεια διακομιστή. MySQL είναι ένα ιδανικό σύστημα διαχείρισης βάσεων δεδομένων (DBMS) για οποιεσδήποτε τοποθεσίες. Χρειάζεται να χειριστούμε τις πληροφορίες που λαμβάνουμε από τους χρήστες του διακομιστή μας.

Έτσι, με το θεωρητικό μέρος έχει τελειώσει. Τώρα αξίζει να ασκήσετε.

Δημιουργία διακομιστή αλληλογραφίας

Τι πρέπει να ρυθμίσετε πριν εγκαταστήσετε το διακομιστή αλληλογραφίας;

  • MySQL;
  • Ζώνη DNS, πρέπει να έχετε προσωπικό FDQN. Στη συνέχεια θα χρησιμοποιήσουμε το όνομα.

Εγκατάσταση

Εγκαταστήστε το πρόγραμμα:

apt-get εγκατάσταση postfix-mysql dovecot-πυρήνα dovecot-imapd dovecot-lmtpd dovecot-mysql

Όταν εμφανιστεί το παράθυρο διαμόρφωσης Postfix, θα χρειαστεί να επιλέξετε τον "ιστότοπο Διαδικτύου".

Παρακάτω θα σας ζητηθεί να εισαγάγετε ένα όνομα τομέα, χρησιμοποιήστε το "primer.ru".

Εγκατάσταση MySQL

Τώρα πρέπει να διαμορφώσουμε τρεις πίνακες για δεδομένα στην MySQL: για τομείς, χρήστες και για λεγόμενα Alias ​​- ψευδώνυμα ή πρόσθετα γραμματοκιβώτια χρηστών. Εδώ δεν θα συζητήσουμε λεπτομερώς τη διαμόρφωση της βάσης δεδομένων MySQL.

Ας καλέσουμε τη βάση δεδομένων του παραδείγματος. Δημιουργήστε μια βάση δεδομένων με το ακόλουθο όνομα:

mysqladmin -p δημιουργία servermail

Σύνδεση σε MySQL:

mysql -u root -p

Στη συνέχεια, εισάγετε τον κωδικό πρόσβασης. Εάν όλα γίνονται σωστά, θα υπάρχει μια καταχώρηση στο τερματικό:

mysql>

Δημιουργήστε έναν νέο χρήστη ειδικά για να συνδεθείτε στο δίκτυο:

mysql> GRANT SELECT σε examplemail. * TO 'usermail'@'127.0.0.1' IDENTIFIED BY 'κωδικός';

Τώρα κάντε επανεκκίνηση της MySQL για να βεβαιωθείτε ότι όλες οι αλλαγές εφαρμόζονται με επιτυχία.

Χρησιμοποιούμε τη βάση δεδομένων μας για να δημιουργούμε πίνακες βάσει αυτής:

mysql> USE examplemail?

Δημιουργία πίνακα για τομείς:

CREATE TABLE `virtual_domains` (

`id 'INT NOT NULL AUTO_INCREMENT,

`όνομα 'VARCHAR (50) ΔΕΝ ΝΑ ΚΑΝΕΤΕ,

ΠΡΩΤΟ ΚΛΕΙΔΙ (`id`)

) ΚΙΝΗΤΗΡΑ = InnoDB DEFAULT CHARSET = utf8;

Δημιουργία πίνακα για τους χρήστες:

Δημιουργία πίνακα `virtual_users` (

`id 'INT NOT NULL AUTO_INCREMENT,

`domain_id` INT NOT NULL,

`κωδικός πρόσβασης 'VARCHAR (106) NOT NULL,

`e-mail` VARCHAR (120) ΔΕΝ ΑΠΑΓΟΡΕΥΕΤΑΙ,

ΠΡΩΤΟ ΚΥΡΙΟ (`id`),

ΕΝΗΜΕΡΩΤΙΚΟ ΚΕΝΤΡΟ `ηλεκτρονικό ταχυδρομείο '(` ηλεκτρονικό ταχυδρομείο'),

ΞΕΝΙΚΟ ΚΕΝΤΡΟ (domain_id) ΑΝΑΦΕΡΟΝΕΣ virtual_domains (id) ΣΕ ΔΙΑΓΡΑΦΗ CASCADE

) ΚΙΝΗΤΗΡΑ = InnoDB DEFAULT CHARSET = utf8;

Εδώ, όπως μπορείτε να δείτε, προσθέσατε email και κωδικό πρόσβασης. Και κάθε χρήστης δεσμεύεται στον τομέα.

Τέλος, δημιουργήστε έναν πίνακα για ψευδώνυμα:

Δημιουργία πίνακα `virtual_aliases` (

`id 'INT NOT NULL AUTO_INCREMENT,

`domain_id` INT NOT NULL,

`πηγή 'varchar (100) NOT NULL,

`προορισμός` varchar (100) NOT NULL,

ΠΡΩΤΟ ΚΥΡΙΟ (`id`),

ΞΕΝΙΚΟ ΚΕΝΤΡΟ (domain_id) ΑΝΑΦΕΡΟΝΕΣ virtual_domains (id) ΣΕ ΔΙΑΓΡΑΦΗ CASCADE

) ΚΙΝΗΤΗΡΑ = InnoDB DEFAULT CHARSET = utf8;

Διαμορφώσαμε επιτυχώς τη MySQL και δημιούργησα τρεις απαραίτητους πίνακες. Τώρα πρέπει να ασχοληθείτε με τομείς και ηλεκτρονικά ταχυδρομεία.

Τομείς, διευθύνσεις ηλεκτρονικού ταχυδρομείου και ψευδώνυμα

Ας προσθέσουμε τον τομέα μας στον πίνακα με τομείς. Το FDQN πρέπει να εισαχθεί εκεί:

ΕΙΣΑΓΕΤΕ ΤΟ `examplemail`.virtual_domains`

(`id`, ` όνομα ')

ΑΞΙΕΣ

('1', 'example.com'),

('2', 'namehost.example.com').

Προσθήκη δεδομένων σχετικά με τη διεύθυνση ηλεκτρονικού ταχυδρομείου στον πίνακα χρηστών:

ΕΙΣΑΓΕΤΕ ΤΟ `examplemail`.virtual_users`

("id", "domain_id", "κωδικός πρόσβασης", "email")

ΑΞΙΕΣ

('1', '1', ENCRYPT ('firstpassword', CONCAT ('$ 6 $', SUBSTRING (SHA (RAND ()

('2', '1', ENCRYPT ('secondpassword', CONCAT ('$ 6 $', SUBSTRING (SHA (RAND ()), -16))), ' ').

Τώρα προσθέστε τις πληροφορίες στον τελευταίο πίνακα:

ΕΙΣΑΓΕΤΕ ΤΟ `examplemail`.`virtual_aliases`

("id", "domain_id", "source", "destination")

ΑΞΙΕΣ

('1', '1', ' ', ' ').

Κλείσιμο της MySQL:

mysql> έξοδος

Ρύθμιση Postfix

Προχωρώντας απευθείας στις παραμέτρους Postfix. Χρειαζόμαστε τον πελάτη αλληλογραφίας να στέλνει μηνύματα για λογαριασμό των χρηστών που εισέρχονται στη βάση δεδομένων και να χειρίζεται τη σύνδεση SMTP. Αρχικά, θα δημιουργήσουμε ένα αντίγραφο ασφαλείας του αρχείου ρυθμίσεων, οπότε θα ήταν δυνατή η επιστροφή στις προεπιλεγμένες ρυθμίσεις:

cp /etc/postfix/main.cf/etc/postfix/main.cf.orig

Τώρα ανοίξτε το αρχείο ρυθμίσεων:

nano /etc/postfix/main.cf

Αντί νανο, μπορείτε να χρησιμοποιήσετε οποιονδήποτε επεξεργαστή κειμένου που είναι κατάλληλος για εσάς.

Θα σχολιάσουμε τις παραμέτρους του TLS και θα προσθέσουμε κι άλλες. Το δωρεάν SSL χρησιμοποιείται εδώ:

# Παράμετροι TLS

# 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 = ναι

#smtpd_tls_session_cache_database = btree: $ {data_directory} / smtpd_scache

#smtp_tls_session_cache_database = btree: $ {data_directory} / smtp_scache

smtpd_tls_cert_file = / etc / ssl / certs / dovecot.pem

smtpd_tls_key_file = / etc / ssl / private / dovecot.pem

smtpd_use_tls = ναι

smtpd_tls_auth_only = ναι

Μετά από αυτό θα προσθέσουμε μερικές ακόμα παραμέτρους:

smtpd_sasl_type = dovecot

smtpd_sasl_path = ιδιωτικό / auth

smtpd_sasl_auth_enable = ναι

smtpd_recipient_restrictions =

permit_sasl_authenticated,

enable_mynetworks

reject_unauth_destination

Πρέπει επίσης να σχολιάσουμε τις ρυθμίσεις mydestination και να τις αλλάξουμε σε localhost:

#mydestination = example.com, namehost.example.com, localhost.example.com, localhost

mydestination = localhost

Η παράμετρος myhostname πρέπει να περιέχει το όνομα τομέα μας:

myhostname = όνομαhost.example.com

Τώρα προσθέστε μια γραμμή για να στείλετε μηνύματα σε όλους τους τομείς που αναφέρονται στον πίνακα MySQL:

virtual_transport = lmtp: unix: ιδιωτικό / dovecot-lmtp

Προσθέστε τρεις ακόμα παραμέτρους έτσι ώστε το Postfix να μπορεί να συνδεθεί σε πίνακες MySQL:

virtual_mailbox_domains = mysql: /etc/postfix/mysql-virtual-mailbox-domains.cf

virtual_mailbox_maps = mysql: /etc/postfix/mysql-virtual-mailbox-maps.cf

virtual_alias_maps = mysql: /etc/postfix/mysql-virtual-alias-maps.cf

Δημιουργία αρχείων MySQL και Postfix

Δημιουργήστε ένα αρχείο

mysql-virtual-mailbox-domains.cf

Προσθέστε αυτές τις τιμές σε αυτό:

user = usermail

κωδικός πρόσβασης = mailpassword

ξενιστές = 127.0.0.1

dbname = examplemail

ερώτημα = SELECT 1 FROM virtual_domains WHERE όνομα = '% s'

Επανεκκινήστε το Postfix:

επανεκκίνηση του postfix υπηρεσίας

Δοκιμαστικός τομέας για το Postfix:

postmap -q example.com mysql: /etc/postfix/mysql-virtual-mailbox-domains.cf

Δημιουργία άλλου αρχείου:

nano /etc/postfix/mysql-virtual-mailbox-maps.cf

user = usermail

κωδικός πρόσβασης = mailpassword

ξενιστές = 127.0.0.1

dbname = examplemail

ερώτημα = SELECT 1 FROM virtual_users WHERE email = '% s'

Επανεκκίνηση Postfix:

επανεκκίνηση του postfix υπηρεσίας

Στη συνέχεια, ελέγξτε ξανά το Postfix:

postmap -q mysql: /etc/postfix/mysql-virtual-mailbox-maps.cf

Εάν γίνει σωστά, πρέπει να εμφανίζεται

Δημιουργία του τελευταίου αρχείου για ψευδώνυμα:

nano /etc/postfix/mysql-virtual-alias-maps.cf

user = usermail

κωδικός πρόσβασης = mailpassword

ξενιστές = 127.0.0.1

dbname = examplemail

query = ΕΠΙΛΟΓΗ προορισμού FROM virtual_aliases WHERE πηγή = '% s'

Επανεκκίνηση:

επανεκκίνηση του postfix υπηρεσίας

Τελευταία φορά δοκιμάζουμε:

postmap -q mysql: /etc/postfix/mysql-virtual-alias-maps.cf

Εγκατάσταση του Dovecot

Δημιουργούμε αντίγραφα ασφαλείας για επτά αρχεία που θα αλλάξουν:

cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.orig

Αυτή είναι μια εντολή δείγματος. Εισαγάγετε έξι περισσότερα από αυτά για αυτά τα αρχεία:

/etc/dovecot/conf.d/10-mail.conf

/etc/dovecot/conf.d/10-auth.conf

/etc/dovecot/dovecot-sql.conf.ext

/etc/dovecot/conf.d/10-master.conf

/etc/dovecot/conf.d/10-ssl.conf

Ανοίξτε το πρώτο αρχείο:

nano /etc/dovecot/dovecot.conf

Ελέγξτε αν αυτή η παράμετρος είναι σχολιασμένη:

! include conf.d / *. conf

Πληκτρολογήστε:

! include_try /usr/share/dovecot/protocols.d/*.protocol

πρωτόκολλο = imap lmtp

Αντί για:

! include_try /usr/share/dovecot/protocols.d/*.protocol γραμμή

Επεξεργαστείτε το ακόλουθο αρχείο:

nano /etc/dovecot/conf.d/10-mail.conf

Βρείτε τη γραμμή mail_location, καταργήστε το σχόλιο, ορίστε την ακόλουθη παράμετρο:

mail_location = maildir: / var / mail / vhosts /% d /% n

Βρείτε το mail_privileged_group, τοποθετήσατε:

mail_privileged_group = ταχυδρομείο

Ελέγχουμε την πρόσβαση. Εισαγάγετε την εντολή:

ls -ld / var / mail

Η πρόσβαση θα πρέπει να έχει ως εξής:

drwxrwsr-x 3 root vmail 4096 Ιαν 24 21:23 / var / mail

Δημιουργήστε ένα φάκελο για κάθε καταχωρημένο τομέα:

mkdir -p /var/mail/vhosts/example.com

Δημιουργία χρήστη και ομάδας με αναγνωριστικό 5000:

groupadd -g 5000 vmail

useradd -g vmail -u 5000 vmail -d / var / mail

Αλλαγή του ιδιοκτήτη στον χρήστη VMail:

chown -R vmail: vmail / var / mail

Επεξεργαστείτε το ακόλουθο αρχείο:

nano /etc/dovecot/conf.d/10-auth.conf

Αποσυνδέστε το κείμενο ελέγχου ταυτότητας και προσθέστε τη γραμμή:

disable_plaintext_auth = ναι

Αλλάξτε την ακόλουθη παράμετρο:

auth_mechanisms = απλή σύνδεση

Σχολιάζοντας αυτή τη γραμμή:

#! include auth-system.conf.ext

Προσθήκη εξουσιοδότησης MySQL, σχολιάστε τη γραμμή:

! include auth-sql.conf.ext

Δημιουργήστε ένα αρχείο με δεδομένα για έλεγχο ταυτότητας:

nano /etc/dovecot/conf.d/auth-sql.conf.ext

Εισαγάγετε τα εξής:

passdb {

οδηγός = sql

args = /etc/dovecot/dovecot-sql.conf.ext

}}

userdb {

οδηγός = στατικός

args = uid = vmail gid = vmail σπίτι = / var / mail / vhosts /% d /% n

}}

Επεξεργαστείτε το ακόλουθο αρχείο:

nano /etc/dovecot/dovecot-sql.conf.ext

Ορίστε την παράμετρο MySQL και σχολιάστε:

οδηγός = mysql

Αποσύνδεση και εισαγωγή:

connect = κεντρικός υπολογιστής = 127.0.0.1 dbname = servermail user = usermail password = mailpassword

Βρείτε τη γραμμή default_pass_scheme, αποεμφανίστε και εισαγάγετε την παράμετρο:

default_pass_scheme = SHA512-CRYPT

Αποσυνδέστε και εισαγάγετε μια νέα παράμετρο:

password_query = SELECT email ως χρήστης, κωδικός πρόσβασης FROM virtual_users WHERE email = '% u';

Αλλαγή του ιδιοκτήτη:

chown-R vmail: dovecot / etc / dovecot

chmod -Ro-rwx / etc / dovecot

Άνοιγμα και επεξεργασία του αρχείου:

nano /etc/dovecot/conf.d/10-master.conf

Αποσυνδέστε και εισαγάγετε την παράμετρο:

υπηρεσία imap-login {

inet_listener imap {

θύρα = 0

}}

Πληκτρολογήστε:

service lmtp {

unix_listener / var / spool / postfix / private / dovecot-lmtp {

mode = 0600

user = postfix

ομάδα = postfix

}}

#inet_listener lmtp {

# Αποφύγετε την προβολή του LMTP για το διαδίκτυο

#address =

#port =

#}

}}

Αλλαγή της ακόλουθης διαμόρφωσης:

service auth {

unix_listener / var / spool / postfix / ιδιωτικό / auth {

mode = 0666

user = postfix

ομάδα = postfix

}}

unix_listener auth-userdb {

mode = 0600

user = vmail

#group =

}}

#unix_listener / var / spool / postfix / private / auth {

# mode = 0666

#}

user = dovecot

}}

Αλλάξτε την τελευταία διαμόρφωση σε αυτό το αρχείο:

service auth-worker {

# Εξουσιοδότηση εργασίας

# / etc / shadow. Εάν αυτό δεν είναι απαραίτητο

# $ default_internal_user.

user = vmail

}}

Έτσι, δημιουργήσαμε τελικά ένα διακομιστή αλληλογραφίας στο Ubuntu. Και μπορείτε επίσης να προσθέσετε μια διαμόρφωση SSL εκεί ή να χρησιμοποιήσετε την προεπιλεγμένη. Για να προστατεύσετε από την ανεπιθύμητη αλληλογραφία, μπορείτε να ρυθμίσετε το Spam Assassin να λειτουργεί με τον διακομιστή μας.

Χρησιμοποιήστε το τυπικό πρόγραμμα-πελάτη ηλεκτρονικού ταχυδρομείου για να καταχωρίσετε αυτές τις πληροφορίες:

  • Όνομα χρήστη:
  • Κωδικός πρόσβασης: email1
  • IMAP: example.com
  • SMTP: example.com