Як встановити і налаштувати поштовий сервер для ubuntu

Багато користувачів Убунту використовують систему не тільки для домашніх потреб. Такий підхід цілком виправданий, адже на Linux-системах набагато зручніше займатися програмуванням, створенням серверів і веб-сайтів. Одне з зручностей - створення сервера електронної пошти. Для новачків ця задача здасться жахливо важкою, однак якщо ви розберетеся, як встановити та налаштувати поштовий сервер для Ubuntu, завдання вже не здасться вам такий вже важкою.

Як встановити і налаштувати поштовий сервер для ubuntu

Як виконується настройка поштового сервера на базі Ubuntu.

трохи теорії

Перед конкретними інструкціями і бродінням за кодом не обійтися без частки теоретичного матеріалу. Важливо розуміти, що таке сервер електронної пошти і як він працює.

Поштові сервери на Linux істотно відрізняються від оних на Windows і інших системах. На Винда це вже готова закрита програма, якої залишається тільки почати користуватися. Дистрибутиви Лінукса ж припускають самостійне налаштування всіх компонентів. Причому сервер буде в підсумку складатися не з однієї програми, а з декількох. Ми будемо використовувати Postfix в поєднанні з Dovecot і MySQL.

Як встановити і налаштувати поштовий сервер для ubuntu

Чому Postfix?

На Убунту існує кілька поштових клієнтів, але все ж ми вибрали саме цей. Налаштування Posfix на Ubuntu набагато легше, ніж того ж SendMail, а це важливо для початківця користувача. У поєднанні з Dovecot Postfix здатний виконувати все те, що зазвичай вимагають від поштових серверів.

Postfix - це безпосередньо сам агент передачі пошти. Йому і належить зіграти головну роль у всьому поданні. Це програма з відкритим вихідним кодом, яку використовують за замовчуванням багато серверів і веб-сайти. Dovecot - це агент доставки пошти. Його головна роль - забезпечення безпеки роботи сервера. MySQL - це ідеальна система управління базами даних (СКБД) для будь-яких сайтів. Вона потрібна, щоб оперувати інформацією, яку ми отримуємо від користувачів нашого сервера.

Отже, з теоретичною частиною закінчено. Тепер варто перейти до практики.

Створення поштового сервера

Що повинно бути налаштоване перед установкою поштового сервера?

  • MySQL;
  • DNS-зона, у вас повинен бути персональний FDQN. Далі ми будемо використовувати namehost.

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

Коли з'явиться вікно з конфігурацією Postfix, нам потрібно буде вибрати «Інтернет-сайт».

Як встановити і налаштувати поштовий сервер для ubuntu

Нижче нас попросять ввести доменне ім'я, використовуємо «primer.ru».

Налаштування MySQL

Тепер нам необхідно налаштувати три таблиці для даних в MySQL: для доменів, користувачів і для так званих Alias ​​- псевдонімів або додаткових призначених для користувача поштових скриньок. Тут ми не будемо детально розбирати настройку бази даних MySQL.

Назвемо базу даних examplemail. Створюємо базу з таким ім'ям:

mysqladmin -p create servermail

Логіном в MySQL:

Як встановити і налаштувати поштовий сервер для ubuntu

Потім вводимо пароль. Якщо все зроблено правильно, то буде такий запис в терміналі:

Створимо нового користувача спеціально для входу в мережу:

mysql> GRANT SELECT ON examplemail. * TO 'usermail'@'127.0.0.1' IDENTIFIED BY 'password';

Тепер перезавантажуємо MySQL, щоб переконатися, що всі зміни застосували успішно.

Використовуємо нашу базу даних, щоб потім створювати на її основі таблиці:

mysql> USE examplemail;

Створюємо таблицю для доменів:

CREATE TABLE `virtual_domains` (
`Id` INT NOT NULL AUTO_INCREMENT,
`Name` VARCHAR (50) NOT NULL,
PRIMARY KEY ( `id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;

Створимо таблицю для користувачів:

CREATE TABLE `virtual_users` (
`Id` INT NOT NULL AUTO_INCREMENT,
`Domain_id` INT NOT NULL,
`Password` VARCHAR (106) NOT NULL,
`Email` VARCHAR (120) NOT NULL,
PRIMARY KEY ( `id`),
UNIQUE KEY `email` (` email`),
FOREIGN KEY (domain_id) REFERENCES virtual_domains (id) ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8;

Тут, як бачите, додані email і пароль. А кожен користувач прив'язаний до домену.

Нарешті, створюємо таблицю під псевдоніми:

CREATE TABLE `virtual_aliases` (
`Id` INT NOT NULL AUTO_INCREMENT,
`Domain_id` INT NOT NULL,
`Source` varchar (100) NOT NULL,
`Destination` varchar (100) NOT NULL,
PRIMARY KEY ( `id`),
FOREIGN KEY (domain_id) REFERENCES virtual_domains (id) ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8;

Ми успішно налаштували MySQL і створили три необхідні таблиці. Тепер потрібно розібратися з доменами і мейлами.

Як встановити і налаштувати поштовий сервер для ubuntu

Додамо наш домен в таблицю з доменами. Туди ж необхідно занести FDQN:

INSERT INTO `examplemail`.`virtual_domains`
( `Id`,` name`)
VALUES
( '1', 'primer.ru'),
( '2', 'namehost.primer.ru');

INSERT INTO `examplemail`.`virtual_users`
( `Id`,` domain_id`, `password`.` Email`)
VALUES
( '1', '1', ENCRYPT ( 'firstpassword', CONCAT ( '$ 6 $', SUBSTRING (SHA (RAND ()), -16))), '[email protected]'),
( '2', '1', ENCRYPT ( 'secondpassword', CONCAT ( '$ 6 $', SUBSTRING (SHA (RAND ()), -16))), '[email protected]');

Тепер додамо інформацію в останню таблицю:

INSERT INTO `examplemail`.`virtual_aliases`
( `Id`,` domain_id`, `source`,` destination`)
VALUES
( '1', '1', '[email protected]', '[email protected]');

Налаштування Postfix

Переходимо, безпосередньо, до параметрів Postfix. Нам потрібно, щоб поштовий клієнт міг відправляти повідомлення від імені введених в базу користувачів і обробляв SMTP-з'єднання. Для початку створимо бекап конфігураційного файлу, щоб в разі чого можна було повернутися до стандартних налаштувань:

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

Тепер відкриваємо файл з конфігураціями:

# TLS parameters
# 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: $ / smtpd_scache
#smtp_tls_session_cache_database = btree: $ / 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

Як встановити і налаштувати поштовий сервер для ubuntu

Після цього додамо ще ряд параметрів:

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

#mydestination = primer.ru, namehost.primer.ru, localhost.primer.ru, localhost
mydestination = localhost

Параметр myhostname повинен містити наше доменне ім'я:

Тепер додаємо рядок для відправки повідомлень на всі домени, перераховані в таблиці MySQL:

Додаємо ще три параметра, щоб 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

Додаємо в нього ці значення:

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

Як встановити і налаштувати поштовий сервер для ubuntu

service postfix restart

Тестуємо домен для Постфікс:

postmap -q primer.ru mysql: /etc/postfix/mysql-virtual-mailbox-domains.cf

Створюємо ще один файл:

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'

service postfix restart

Потім знову перевіряємо Postfix:

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

Якщо все зроблено правильно, має виводитися

Створюємо останній файл - для псевдонімів:

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

service postfix restart

Як встановити і налаштувати поштовий сервер для ubuntu

Останній раз тестуємо:

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

Налаштування Dovecot

Робимо резервні копії для семи файлів, які будемо міняти:

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

Як встановити і налаштувати поштовий сервер для ubuntu

Це зразок команди. Вводимо ще шість таких же для цих файлів:

/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

Відкриваємо перший файл:

Схожі статті