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:
- Nazwa użytkownika: [email protected]
- Hasło: email1
- IMAP: example.com
- SMTP: example.com