Конфигуриране на Postfix и Dovecot на Ubuntu

Много потребители на Ubuntu използват системата не само за домашни нужди. Този подход е напълно оправдан, защото на Linux-системите е много по-удобно да се прави програмиране, създаване на сървъри и уебсайтове. Едно от удобствата е създаването на имейл сървър. За начинаещи, тази задача ще изглежда ужасно трудна, но ако разберете как да инсталирате и конфигурирате пощенския сървър за Ubuntu, задачата няма да изглежда толкова трудна за вас.

Как да настроите пощенски сървър на базата на Ubuntu.

Малко теория

Преди конкретни инструкции и ферментация на кода не може да се направи без част от теоретичния материал. Важно е да се разбере какво е имейл сървър и как работи.

Конфигурираният пощенски сървър, просто казано, е пощальон, който получава „писмо“ от един имейл клиент и го предава на друг. В това, по принцип, цялата същност на работата на този софтуер. Пощенският сървър е необходим не само за изпращане на имейл. На сайтовете той е отговорен за регистриране на потребители, подаване на формуляри и други важни действия, без които сайтът би станал като книга, която можете да разгледате само чрез обръщане на страниците, но е трудно да се направи нещо.

Пощенските сървъри на Linux значително се различават от тези на Windows и други системи. В Windows това е готова затворена програма, която може да започне да се използва. Линукс дистрибуциите също изискват самонастройване на всички компоненти. И сървърът в крайна сметка ще се състои от не една програма, а няколко. Ще използваме Postfix в комбинация с Dovecot и MySQL.

Защо Postfix?

Има няколко имейл клиента в Ubuntu, но все пак сме избрали този. Настройването на Posfix на Ubuntu е много по-лесно от същата SendMail, а това е важно за начинаещия потребител. В комбинация с Dovecot, Postfix може да прави всичко, което обикновено се изисква от пощенските сървъри.

Postfix е директно самият агент за прехвърляне на поща. Той ще играе основна роля в цялото представяне. Това е програма с отворен код, която много сървъри и уебсайтове използват по подразбиране. Dovecot е агент за доставка на поща. Неговата основна роля е да гарантира сигурността на сървъра. MySQL е идеална система за управление на бази данни (СУБД) за всички сайтове. Необходимо е да се справим с информацията, която получаваме от потребителите на нашия сървър.

И така, с теоретичната част свърши. Сега си струва да практикуваме.

Създаване на пощенски сървър

Какво трябва да се конфигурира преди инсталирането на пощенския сървър?

  • MySQL;
  • DNS зона, трябва да имате личен FDQN. След това ще използваме namehost.

монтаж

Инсталирайте програмата:

apt-get install postfix 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 ON Примерна поща * TO 'usermail'@'127.0.0.1' ИДЕНТИФИЦИРАНА ОТ 'парола';

Сега рестартирайте MySQL, за да се уверите, че всички промени се прилагат успешно.

Ние използваме нашата база данни за създаване на таблици на базата на нея:

mysql> USE пример;

Създайте таблица за домейни:

CREATE TABLE "virtual_domains" (

`id` INT NOT NULL AUTO_INCREMENT,

`name` VARCHAR (50) НЕ NULL,

PRIMARY KEY ("id")

) ДВИГАТЕЛ = InnoDB DEFAULT CHARSET = utf8;

Създайте таблица за потребителите:

CREATE TABLE "virtual_users" (

`id` INT NOT NULL AUTO_INCREMENT,

`domain_id` INT NOT NULL,

`password` VARCHAR (106) НЕ NULL,

`email` VARCHAR (120) НЕ NULL,

PRIMARY KEY ("id"),

УНИКАЛЕН КЛЮЧ "email" ("имейл"),

ВЪТРЕШЕН КЛЮЧ (domain_id) REFERENCES virtual_domains (id) НА ИЗТРИВАНЕ НА КАСКАД

) ДВИГАТЕЛ = InnoDB DEFAULT CHARSET = utf8;

Тук, както виждате, добавихте имейл и парола. И всеки потребител е обвързан с домейна.

Накрая създайте таблица за псевдоними:

CREATE TABLE "virtual_aliases" (

`id` INT NOT NULL AUTO_INCREMENT,

`domain_id` INT NOT NULL,

`source` varchar (100) NOT NULL,

`` дестинация 'varchar (100) НЕ NULL,

PRIMARY KEY ("id"),

ВЪТРЕШЕН КЛЮЧ (domain_id) REFERENCES virtual_domains (id) НА ИЗТРИВАНЕ НА КАСКАД

) ДВИГАТЕЛ = InnoDB DEFAULT CHARSET = utf8;

Успешно конфигурирахме MySQL и създадохме три необходими таблици. Сега трябва да се занимавате с домейни и имейли.

Домейни, имейл адреси и псевдоними

Нека добавим нашия домейн към таблицата с домейни. FDQN трябва да се въведе там:

INSERT INTO `examplemail`.`virtual_domains`

(`id`, ` name`)

СТОЙНОСТИ

(„1“, „example.com“),

(„2“, „namehost.example.com“);

Добавете данни за имейл адреса в таблицата на потребителя:

INSERT INTO `examplemail`.`virtual_users`

(`id`, ` domain_id`, `password`, ` email`)

СТОЙНОСТИ

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

(„2“, „1“, ENCRYPT („secondpassword“, CONCAT („$ 6 $“, SUBSTRING (SHA (RAND ()), -16))), „ “);

Сега добавете информацията към последната таблица:

INSERT INTO `examplemail`.`virtual_aliases`

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

СТОЙНОСТИ

(„1“, „1“, „ “, „ “);

Затвори 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 параметри

# 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 = гълъбарник

smtpd_sasl_path = private / auth

smtpd_sasl_auth_enable = да

smtpd_recipient_restrictions =

permit_sasl_authenticated,

permit_mynetworks,

reject_unauth_destination

Също така трябва да коментираме настройките за mydestination и да ги променим на localhost:

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

mydestination = localhost

Параметърът myhostname трябва да съдържа името на нашия домейн:

myhostname = namehost.example.com

Сега добавете ред, за да изпращате съобщения до всички домейни, изброени в таблицата 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 име = '% s'

Рестартирайте Postfix:

рестартиране на постфикс

Тест на домейна за Postfix:

postmap -q example.com 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 имейл = '% s'

Рестартирайте Postfix:

рестартиране на постфикс на услугата

След това проверете отново Postfix:

postmap -q 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 местоназначение FROM virtual_aliases WHERE източник = '% s'

рестартирайте:

рестартиране на постфикс на услугата

Последния път, когато тествахме:

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

Настройка на гълъбарника

Ние правим резервни копия за седем файла, които ще бъдат променени:

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

Проверете дали този параметър е коментиран:

включва conf.d / *. conf

въведете:

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

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 Jan 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 = yes

Промяна на следния параметър:

auth_mechanisms = обикновена регистрация

Коментиране на този ред:

#! include auth-system.conf.ext

Добавете MySQL разрешение, коментирайте реда:

! включва 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 = статичен

args = uid = vmail gid = vmail начало = / var / mail / vhosts /% d /% n

}

Редактирайте следния файл:

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

Задайте параметъра на MySQL и коментирайте:

driver = mysql

Разкоментирайте и въведете:

connect = host = 127.0.0.1 dbname = servermail потребител = парола на usermail = mailpassword

Намерете реда default_pass_scheme, uncomment и въведете параметъра:

default_pass_scheme = SHA512-CRYPT

Разкомментирайте и въведете нов параметър:

password_query = ИЗБЕРИ имейл като потребител, парола ОТ virtual_users WHERE имейл = '% u';

Промяна на собственика:

chown -R vmail: dovecot / и т.н.

chmod -R o-rwx / etc / dovecot

Отваряне и редактиране на файла:

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

Отпишете коментар и въведете параметъра:

услуга imap-login {

inet_listener imap {

port = 0

}

въведете:

service lmtp {

unix_listener / var / spool / postfix / частен / dovecot-lmtp {

режим = 0600

user = postfix

group = postfix

}

#inet_listener lmtp {

# Избягвайте да виждате LMTP в интернет

#address =

#port =

#}

}

Промяна на следната конфигурация:

услуга auth {

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

режим = 0666

user = postfix

group = postfix

}

unix_listener auth-userdb {

режим = 0600

user = vmail

#group =

}

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

# mode = 0666

#}

потребител = гълъб

}

Променете последната конфигурация в този файл:

Служител за авторизация {

# Процес на упълномощен работник

# / etc / shadow. Ако това не е необходимо

# $ default_internal_user.

user = vmail

}

Така че накрая създадохме пощенски сървър на Ubuntu. Можете също да добавите там SSL конфигурация или да използвате стандартната конфигурация. За да се предпазите от спам, можете да конфигурирате Spam Assassin да работи с нашия сървър.

Използвайте стандартния имейл клиент, за да въведете тази информация:

  • Потребителско име:
  • Парола: email1
  • IMAP: example.com
  • SMTP: example.com