Konfigurowanie Postfix i Dovecot w systemie Ubuntu

Wielu użytkowników Ubuntu korzysta z systemu nie tylko w domu. Takie podejście jest w pełni uzasadnione, ponieważ w systemach Linux znacznie wygodniej jest programować, tworzyć serwery i witryny internetowe. Jedną z udogodnień jest stworzenie serwera e-mail. Dla początkujących zadanie to będzie wydawało się bardzo trudne, ale jeśli zdecydujesz się zainstalować i skonfigurować serwer pocztowy dla Ubuntu, zadanie nie będzie dla ciebie trudne.

Jak skonfigurować serwer pocztowy na podstawie Ubuntu.

Treść

  • 1 Trochę teorii
    • 1.1 Dlaczego Postfix?
  • 2 Utwórz serwer pocztowy
    • 2.1 Instalacja
    • 2.2 Konfiguracja MySQL
    • 2.3 Domeny, adresy e-mail i aliasy
    • 2.4 Konfiguracja Postfix
    • 2.5 Konfigurowanie plików MySQL i Postfix
    • 2.6 Konfiguracja Dovecot

Trochę teorii

Zanim konkretne instrukcje i fermentacja kodu nie może obyć się bez ułamka materiału teoretycznego. Ważne jest, aby zrozumieć, czym jest serwer poczty e-mail i jak działa.

Skonfigurowany serwer pocztowy, mówiąc wprost, jest listonoszem, który otrzymuje "list" od jednego klienta poczty elektronicznej i przekazuje go innemu. W tym, w zasadzie, cała esencja pracy tego oprogramowania. Serwer poczty jest potrzebny nie tylko do wysyłania wiadomości e-mail.Na stronach jest odpowiedzialny za rejestrację użytkowników, przesyłanie formularzy i innych ważnych czynności, bez których strona stanie się jak książka, na którą można patrzeć tylko poprzez przewracanie stron, ale trudno jest coś zrobić.

Serwery pocztowe w systemie Linux znacznie różnią się od tych w systemie Windows i innych systemach. W systemie Windows jest to gotowy zamknięty program, który może tylko zacząć. Dystrybucje Linuksa wymagają również samostrojenia wszystkich komponentów. A serwer docelowo będzie składał się z jednego, a nie z kilku programów. Użyjemy Postfix w połączeniu z Dovecot i MySQL.

Dlaczego Postfix?

W Ubuntu jest kilka programów pocztowych, ale mimo to wybraliśmy ten. Konfiguracja Posfix na Ubuntu jest znacznie łatwiejsza niż w przypadku tego samego SendMaila, co jest ważne dla początkującego użytkownika. W połączeniu z Dovecot, Postfix jest w stanie zrobić wszystko, co jest zwykle wymagane od serwerów pocztowych.

Postfix jest bezpośrednio agentem przesyłania poczty. Będzie odgrywał główną rolę w całym przedstawieniu. Jest to program typu open source, którego domyślnie używa wiele serwerów i witryn. Dovecot jest agentem pocztowym. Jego główną rolą jest zapewnienie bezpieczeństwa serwera. MySQL to idealny system zarządzania bazą danych (DBMS) dla dowolnych witryn.Jest potrzebny do obsługi informacji, które otrzymujemy od użytkowników naszego serwera.

Tak więc, po części teoretycznej jest skończona. Teraz warto ćwiczyć.

Utwórz serwer pocztowy

Co należy skonfigurować przed zainstalowaniem serwera pocztowego?

  • MySQL;
  • Strefa DNS, musisz mieć osobisty FDQN. Następnie użyjemy namehost.

Instalacja

Zainstaluj program:

apt-get install postfix postfix-mysql dovecot-core dovecot-imapd dovecot-lmtpd dovecot-mysql

Kiedy pojawi się okno konfiguracji Postfix, będziemy musieli wybrać "Strona internetowa".

Poniżej zostaniesz poproszony o podanie nazwy domeny, użyj "primer.ru".

Konfiguracja MySQL

Teraz musimy skonfigurować trzy tabele dla danych w MySQL: dla domen, użytkowników i dla tak zwanych aliasów - aliasów lub dodatkowych skrzynek użytkowników. Tutaj nie omówimy szczegółowo konfiguracji bazy danych MySQL.

Nazwijmy bazę danych exampleplemail. Utwórz bazę danych o następującej nazwie:

mysqladmin -p utwórz pocztę serwerową

Zaloguj się w MySQL:

mysql -u root -p

Następnie wprowadź hasło. Jeśli wszystko zostanie wykonane poprawnie, w terminalu pojawi się wpis:

mysql>

Utwórz nowego użytkownika, aby logować się do sieci:

mysql> GRANT SELECT ON examplepl. * NA 'usermail'@'127.0.0.1' IDENTIFIED BY 'password';

Teraz zrestartuj MySQL, aby upewnić się, że wszystkie zmiany zostały pomyślnie zastosowane.

Korzystamy z naszej bazy danych do tworzenia tabel na jej podstawie:

mysql> USE examplemail;

Utwórz tabelę dla domen:

CREATE TABLE 'virtual_domains' (
"id" INT NOT NULL AUTO_INCREMENT,
"nazwa" VARCHAR (50) NOT NULL,
KLUCZ PRIMARY ("ID")
) ENGINE = InnoDB DEFAULT CHARSET = utf8;

Utwórz tabelę dla użytkowników:

CREATE TABLE 'virtual_users' (
"id" INT NOT NULL AUTO_INCREMENT,
"domain_id" INT NOT NULL,
"VARCHAR" hasła (106) NOT NULL,
"email" VARCHAR (120) NOT NULL,
KLUCZ PRIMARY ("id"),
UNIKALNY KEY "e-mail" ("e-mail"),
ZAGRANICZNY KLUCZ (domain_id) REFERENCES virtual_domains (id) ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8;

Tutaj, jak widać, dodano adres e-mail i hasło. I każdy użytkownik jest związany z domeną.

Na koniec utwórz tabelę dla pseudonimów:

UTWÓRZ TABELĘ "virtual_aliases" (
"id" INT NOT NULL AUTO_INCREMENT,
"domain_id" INT NOT NULL,
"źródło" varchar (100) NOT NULL,
"miejsce docelowe" varchar (100) NOT NULL,
KLUCZ PRIMARY ("id"),
ZAGRANICZNY KLUCZ (domain_id) REFERENCES virtual_domains (id) ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8;

Z powodzeniem skonfigurowaliśmy MySQL i stworzyliśmy trzy niezbędne tabele. Teraz musisz zajmować się domenami i wiadomościami e-mail.

Domeny, adresy e-mail i aliasy

Dodajmy naszą domenę do tabeli z domenami. FDQN musi być tam wprowadzony:

INSERT INTO 'examplemail'. 'Virtual_domains'
("id", "nazwa")
WARTOŚCI
("1", "example.com"),
("2", "nazwahost.example.com");

Dodaj dane o adresie e-mail do tabeli użytkowników:

INSERT INTO 'examplemail'. 'Virtual_users'
("id", "domain_id", "password", "email")
WARTOŚCI
("1", "1", ENCRYPT ("pierwsze słowo", CONCAT ("6 $", SUBSTRING (SHA (RAND ()), -16))), "[email protected]"),
("2", "1", ENCRYPT ("drugie hasło", CONCAT ("6 USD", PODWÓJNA (SHA (RAND ()), -16))), "[email protected]");

Teraz dodaj informacje do ostatniej tabeli:

INSERT INTO 'examplemail'. 'Virtual_aliases'
("id", "domain_id", "source", "destination")
WARTOŚCI
("1", "1", "[email protected]", "[email protected]");

Zamknij MySQL:

mysql> exit

Konfiguracja Postfix

Przechodzenie bezpośrednio do parametrów Postfix. Potrzebujemy klienta poczty do wysyłania wiadomości w imieniu użytkowników wprowadzonych do bazy danych i obsługi połączenia SMTP. Najpierw utworzymy kopię pliku konfiguracyjnego, w którym to przypadku można powrócić do standardowych ustawień:

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

Teraz otwórz plik konfiguracyjny:

nano /etc/postfix/main.cf

Zamiast nano możesz użyć dowolnego edytora tekstu.

Będziemy komentować parametry TLS, a także dodawać inne. Darmowy SSL jest używany tutaj:

# Parametry 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 = yes
#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 = yes
smtpd_tls_auth_only = yes

Następnie dodamy kilka dodatkowych parametrów:

smtpd_sasl_type = dovecot
smtpd_sasl_path = private / auth
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions =
permit_sasl_authenticated,
allow_mynetworks,
reject_unauth_destination

Musimy również skomentować ustawienia mydestination i zmienić je na localhost:

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

Parametr myhostname powinien zawierać naszą nazwę domeny:

myhostname = nazwahost.example.com

Teraz dodaj linię do wysyłania wiadomości do wszystkich domen wymienionych w tabeli MySQL:

virtual_transport = lmtp: unix: private / dovecot-lmtp

Dodaj jeszcze trzy parametry, aby Postfix mógł łączyć się z tabelami 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

Konfigurowanie plików MySQL i Postfix

Utwórz plik

mysql-virtual-mailbox-domains.cf

Dodaj te wartości do niego:

user = usermail
password = mailpassword
hosts = 127.0.0.1
dbname = examplemail
query = SELECT 1 FROM virtual_domains WHERE name = "% s"

Zrestartuj Postfixa:

Ponowne uruchomienie usługi Postfix

Testuj domenę dla Postfix:

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

Utwórz kolejny plik:

nano /etc/postfix/mysql-virtual-mailbox-maps.cf
user = usermail
password = mailpassword
hosts = 127.0.0.1
dbname = examplemail
query = SELECT 1 FROM virtual_users WHERE email = "% s"

Reboot Postfix:

Ponowne uruchomienie usługi Postfix

Następnie sprawdź ponownie Postfix:

postmap -q [email protected] mysql: /etc/postfix/mysql-virtual-mailbox-maps.cf

Jeśli zostanie wykonany prawidłowo, powinien zostać wyświetlony

Utwórz ostatni plik dla aliasów:

nano /etc/postfix/mysql-virtual-alias-maps.cf
user = usermail
password = mailpassword
hosts = 127.0.0.1
dbname = examplemail
query = SELECT miejsce docelowe FROM virtual_aliases WHERE source = "% s"

Uruchom ponownie:

Ponowne uruchomienie usługi Postfix

Ostatni raz testujemy:

postmap -q [email protected] mysql: /etc/postfix/mysql-virtual-alias-maps.cf

Konfiguracja Dovecot

Tworzymy kopie zapasowe siedmiu plików, które zostaną zmienione:

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

To jest przykładowe polecenie. Wprowadź sześć takich samych dla tych plików:

/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

Otwórz pierwszy plik:

nano /etc/dovecot/dovecot.conf

Sprawdź, czy ten parametr nie został skomentowany:

! include conf.d / *. conf

Wpisz:

! include_try /usr/share/dovecot/protocols.d/*.protocol
protocol = imap lmtp

Zamiast:

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

Edytuj następujący plik:

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

Znajdź lokalizację mailową linii, usuń komentarz, ustaw następujący parametr:

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

Znajdź mail_privileged_group, umieść tam:

mail_privileged_group = mail

Sprawdzamy dostęp. Wprowadź polecenie:

ls -ld / var / mail

Dostęp powinien wyglądać tak:

drwxrwsr-x 3 root vmail 4096 24 stycznia 21:23 / var / mail

Utwórz folder dla każdej zarejestrowanej domeny:

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

Utwórz użytkownika i grupę o ID 5000:

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

Zmień właściciela na użytkownika VMail:

chown -R vmail: vmail / var / mail

Edytuj następujący plik:

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

Odkomentuj tekst uwierzytelnienia i dodaj linię:

disable_plaintext_auth = yes

Zmień następujący parametr:

auth_mechanisms = plain login

Komentowanie tej linii:

#! include auth-system.conf.ext

Dodaj autoryzację MySQL, skomentuj linię:

! include auth-sql.conf.ext

Utwórz plik z danymi do uwierzytelnienia:

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

Wpisz tam:

passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
driver = static
args = uid = vmail gid = vmail home = / var / mail / vhosts /% d /% n
}

Edytuj następujący plik:

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

Ustaw parametr MySQL i skomentuj:

driver = mysql

Odkomentuj i wprowadź:

connect = host = 127.0.0.1 dbname = użytkownik serwera = hasło użytkownika = hasło poczty

Znajdź wiersz default_pass_scheme, odkomentuj i wprowadź parametr:

default_pass_scheme = SHA512-CRYPT

Odkomentuj i wprowadź nowy parametr:

password_query = WYBIERZ email jako użytkownik, hasło FROM virtual_users WHERE email = "% u";

Zmień właściciela:

chown -R vmail: dovecot / etc / dovecot
chmod -R o-rwx / etc / dovecot

Otwórz i edytuj plik:

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

Odkomentuj i wprowadź parametr:

usługa imap-login {
inet_listener imap {
port = 0
}

Wpisz:

service lmtp {
unix_listener / var / spool / postfix / private / dovecot-lmtp {
tryb = 0600
użytkownik = przyrostek
group = przyrostek
}
#inet_listener lmtp {
# Unikaj wyświetlania LMTP w Internecie
#address =
#port =
#}
}

Zmień następującą konfigurację:

usługa auth {
unix_listener / var / spool / postfix / private / auth {
tryb = 0666
użytkownik = przyrostek
group = przyrostek
}
unix_listener auth-userdb {
tryb = 0600
user = vmail
#group =
}
#unix_listener / var / spool / postfix / private / auth {
# mode = 0666
#}
użytkownik = dovecot
}

Zmień ostatnią konfigurację w tym pliku:

Autoryzacja pracownika usługi {
# Autoryzacja procesu roboczego
# / etc / shadow. Jeśli nie jest to konieczne
# $ default_internal_user.
user = vmail
}

W końcu utworzyliśmy serwer pocztowy w systemie Ubuntu. Tam też możesz dodać konfigurację SSL lub użyć domyślnej. Aby chronić się przed spamem, możesz skonfigurować narzędzie Spam Assassin do pracy z naszym serwerem.

Użyj standardowego klienta poczty e-mail, aby wprowadzić te informacje: