Багато користувачів Убунту використовують систему не тільки для домашніх потреб. Такий підхід цілком виправданий, адже на Linux-системах набагато зручніше займатися програмуванням, створенням серверів і веб-сайтів. Одне з зручностей - створення сервера електронної пошти. Для новачків ця задача здасться жахливо важкою, однак якщо ви розберетеся, як встановити та налаштувати поштовий сервер для Ubuntu, завдання вже не здасться вам такий вже важкою.
Як виконується настройка поштового сервера на базі Ubuntu.
зміст
- 1 трохи теорії
- 1.1 Чому Postfix?
- 2 Створення поштового сервера
- 2.1 установка
- 2.2 Налаштування MySQL
- 2.3 Домени, адреси електронної пошти та псевдоніми
- 2.4 Налаштування Postfix
- 2.5 Налаштування файлів MySQL і Postfix
- 2.6 Налаштування Dovecot
трохи теорії
Перед конкретними інструкціями і бродінням за кодом не обійтися без частки теоретичного матеріалу. Важливо розуміти, що таке сервер електронної пошти і як він працює.
Налаштований поштовий сервер, якщо говорити дуже просто - це листоноша, який отримує "лист" від одного поштового клієнта і віддає іншому. У цьому, в принципі, вся суть роботи цього програмного забезпечення. Поштовий сервер потрібен не тільки для передачі електронної пошти.На сайтах він відповідає за реєстрацію користувачів, передачу заповнюваних форм і інші важливі дії, без яких сайт став би подобою книги, на яку можна тільки дивитися, перегортаючи сторінки, а ось щось зробити важкувато.
Поштові сервери на Linux істотно відрізняються від оних на Windows і інших системах. На Винда це вже готова закрита програма, якої залишається тільки почати користуватися. Дистрибутиви Лінукса ж припускають самостійне налаштування всіх компонентів. Причому сервер буде в підсумку складатися не з однієї програми, а з декількох. Ми будемо використовувати Postfix в поєднанні з Dovecot і MySQL.
Чому 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, нам потрібно буде вибрати "Інтернет-сайт".
Нижче нас попросять ввести доменне ім'я, використовуємо "primer.ru".
Налаштування MySQL
Тепер нам необхідно налаштувати три таблиці для даних в MySQL: для доменів, користувачів і для так званих Alias - псевдонімів або додаткових призначених для користувача поштових скриньок. Тут ми не будемо детально розбирати настройку бази даних MySQL.
Назвемо базу даних examplemail. Створюємо базу з таким ім'ям:
mysqladmin -p create servermail
Логіном в MySQL:
mysql -u root -p
Потім вводимо пароль. Якщо все зроблено правильно, то буде такий запис в терміналі:
mysql>
Створимо нового користувача спеціально для входу в мережу:
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 і створили три необхідні таблиці. Тепер потрібно розібратися з доменами і мейлами.
Домени, адреси електронної пошти та псевдоніми
Додамо наш домен в таблицю з доменами. Туди ж необхідно занести 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]');
Закриваємо MySQL:
mysql> exit
Налаштування Postfix
Переходимо, безпосередньо, до параметрів Postfix. Нам потрібно, щоб поштовий клієнт міг відправляти повідомлення від імені введених в базу користувачів і обробляв SMTP-з'єднання. Для початку створимо бекап конфігураційного файлу, щоб в разі чого можна було повернутися до стандартних налаштувань:
cp /etc/postfix/main.cf /etc/postfix/main.cf.orig
Тепер відкриваємо файл з конфігураціями:
nano /etc/postfix/main.cf
Замість nano ви можете використовувати будь-який зручний для вас текстовий редактор.
Откомментіруем параметри TLS, а також додамо інші. Тут використані безкоштовні SSL:
# 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: $ {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
Після цього додамо ще ряд параметрів:
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 і змінити їх на localhost:
#mydestination = primer.ru, namehost.primer.ru, localhost.primer.ru, localhost
mydestination = localhost
Параметр myhostname повинен містити наше доменне ім'я:
myhostname = namehost.primer.ru
Тепер додаємо рядок для відправки повідомлень на всі домени, перераховані в таблиці MySQL:
virtual_transport = lmtp: unix: private / 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
password = mailpassword
hosts = 127.0.0.1
dbname = examplemail
query = SELECT 1 FROM virtual_domains WHERE name = "% s"
Перезапускаємо Postfix:
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
Останній раз тестуємо:
postmap -q [email protected] 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
protocols = imap lmtp
замість:
! Include_try /usr/share/dovecot/protocols.d/*.protocol line
Редагуємо наступний файл:
nano /etc/dovecot/conf.d/10-mail.conf
Знаходимо рядок mail_location, знімаємо коментар, ставимо наступний параметр:
mail_location = maildir: / var / mail / vhosts /% d /% n
Знаходимо mail_privileged_group, ставимо туди:
mail_privileged_group = mail
Перевіряємо доступ. Вводимо команду:
ls -ld / var / mail
Доступ повинен виглядати наступним чином:
drwxrwsr-x 3 root vmail 4096 Jan 24 21:23 / var / mail
Створюємо папку для кожного зареєстрованого домену:
mkdir -p /var/mail/vhosts/primer.ru
Створюємо користувача і групу з ідентифікатором 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 = yes
Змінюємо наступний параметр:
auth_mechanisms = plain login
Коментуємо цю рядок:
#! Include auth-system.conf.ext
Додаємо авторизацію MySQL, откомментіруем рядок:
! Include auth-sql.conf.ext
Створюємо файл з даними для аутентифікації:
nano /etc/dovecot/conf.d/auth-sql.conf.ext
Вводимо туди наступне:
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
driver = static
args = uid = vmail gid = vmail home = / var / mail / vhosts /% d /% n
}
Редагуємо наступний файл:
nano /etc/dovecot/dovecot-sql.conf.ext
Ставимо параметр MySQL і откомментіруем:
driver = mysql
Раскомментіруем і вводимо:
connect = host = 127.0.0.1 dbname = servermail user = usermail password = mailpassword
Знаходимо рядок default_pass_scheme, раскомментіруем і вводимо параметр:
default_pass_scheme = SHA512-CRYPT
Раскомментіруем і вводимо новий параметр:
password_query = SELECT email as user, password FROM virtual_users WHERE email = "% u";
Міняємо власника:
chown -R vmail: dovecot / etc / dovecot
chmod -R o-rwx / etc / dovecot
Відкриваємо і редагуємо файл:
nano /etc/dovecot/conf.d/10-master.conf
Раскомментіруем і вводимо параметр:
service imap-login {
inet_listener imap {
port = 0
}
вводимо:
service lmtp {
unix_listener / var / spool / postfix / private / dovecot-lmtp {
mode = 0600
user = postfix
group = postfix
}
#inet_listener lmtp {
# Avoid making LMTP visible for the entire internet
#address =
#port =
#}
}
Змінюємо наступну конфігурацію:
service auth {
unix_listener / var / spool / postfix / private / auth {
mode = 0666
user = postfix
group = postfix
}
unix_listener auth-userdb {
mode = 0600
user = vmail
#group =
}
#unix_listener / var / spool / postfix / private / auth {
# Mode = 0666
#}
user = dovecot
}
Змінюємо останню в цьому файлі конфігурацію:
service auth-worker {
# Auth worker process is run as root by default, so that it can access
# / Etc / shadow. If this is not necessary, the user should be changed to
# $ Default_internal_user.
user = vmail
}
Отже, ми нарешті налаштували поштовий сервер на Ubuntu. І також туди можна додати конфігурацію SSL або використовувати ту, що стоїть за умовчанням. Для захисту від спаму можна налаштувати роботу Spam Assassin спільно з нашим сервером.
Використовуйте стандартний поштовий клієнт, щоб ввести ці дані:
- Ім'я користувача: [email protected]
- Пароль: від email1
- IMAP: primer.ru
- SMTP: primer.ru