Показаны различия между двумя версиями страницы.
| — |
webmail [2026/06/11 12:15] (текущий) |
||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | ====== Часть 3 Почтовый сервер для дома на базе Postfix+Dovecot+Mysql...... ====== | ||
| + | |||
| + | В первых двух статьях, | ||
| + | |||
| + | [[http:// | ||
| + | |||
| + | [[http:// | ||
| + | |||
| + | [[http:// | ||
| + | |||
| + | В продолжении этой темы расскажу, | ||
| + | |||
| + | Итак все, что написано в части 1 и 2 вами уже изучено и проделано. Т.е. LAMP сервер уже установлен. | ||
| + | |||
| + | Почтовый сервер, | ||
| + | |||
| + | * получать и хранить электронную почту для пользователей; | ||
| + | * получать электронную почту, используя протоколы IMAP и POP3 - в т.ч. с SSL шифрованием; | ||
| + | * принимать и пересылать сообщение для пользователей, | ||
| + | * использовать веб-интерфейс для чтения электронной почты в веб-браузере; | ||
| + | * выявлять и удалять спам; | ||
| + | * использовать веб-интерфейс для администрирования почтового сервера. | ||
| + | |||
| + | Используя этот документ вы можете просто " | ||
| + | |||
| + | Поэтому я попытался своими комментариями облегчить Вам решение этой задачи. Для этого, от Вас потребуются аккуратность и базовые знания в следующих областях: | ||
| + | |||
| + | * MySQL (создание баз данных, | ||
| + | * SMTP (что это такое, и как выглядят основные SMTP диалоги) | ||
| + | * POP3, IMAP (что они делают, | ||
| + | * Postfix (основы базовой конфигурации, | ||
| + | * Dovecot ( то же, что и с Postfix) | ||
| + | * Ubuntu / Linux (основы администрирования системы, | ||
| + | |||
| + | :!: В начале статьи я приведу примеры настройки конфигурации сервера через консоль. В конце статьи два раздела (Шаг. 11 и 12) посвящены настройкам через WEB интерфейс. | ||
| + | |||
| + | =====Шаг 1: Устанавливаем необходимые пакеты ===== | ||
| + | |||
| + | Если, не активирован ROOT: | ||
| + | |||
| + | < | ||
| + | sudo passwd root</ | ||
| + | |||
| + | Сделаем ссылочку на bash на sh: | ||
| + | |||
| + | < | ||
| + | |||
| + | Уберем apparmor (чего то, с ним пока не все ладится!) | ||
| + | |||
| + | < | ||
| + | update-rc.d -f apparmor remove</ | ||
| + | |||
| + | Проверим все ли пакеты установлены у нас, для почтового Mail-сервера. | ||
| + | |||
| + | < | ||
| + | |||
| + | ===== Шаг 2: Создаем базу данных ===== | ||
| + | |||
| + | * Если у Вас есть опыт в использовании MySQL, то вы можете вводить SQL команды непосредственно в оболочке ' | ||
| + | * Кроме того, вы можете так же использовать программу PhpMyAdmin, введя в браузере адрес: [[http:// | ||
| + | * Дополнительно напомню, | ||
| + | * Как раз, этот пароль мы и будем применять для для администрирования MySQL сервера. Как раз, его и надо ввести при запуске программы PhpMyAdmin. | ||
| + | |||
| + | Итак, для работы данной конфигурации, | ||
| + | |||
| + | Для работы конкретно с этой базой, мы создадим пользователя **mailuser** с определенными правами и паролем **mailuser2009**. | ||
| + | |||
| + | Естественно, | ||
| + | |||
| + | :!: Работу проводим в Терминале, | ||
| + | |||
| + | :!: Здесь необходимо вводить пароль пользователя " | ||
| + | |||
| + | Итак команда для создания базу данных ' | ||
| + | |||
| + | < | ||
| + | |||
| + | Соединимся с вновь созданной базой, для этого выполним две команды: | ||
| + | |||
| + | < | ||
| + | < | ||
| + | |||
| + | На экране Терминала, | ||
| + | |||
| + | |||
| + | {{: | ||
| + | |||
| + | : | ||
| + | |||
| + | : | ||
| + | |||
| + | С помощью следующей команды, | ||
| + | |||
| + | < | ||
| + | GRANT SELECT ON mailserver.* | ||
| + | TO mailuser@localhost | ||
| + | IDENTIFIED BY ' | ||
| + | exit</ | ||
| + | |||
| + | < | ||
| + | Если вы хотите добавить или изменить данные в базе, то используйте имя пользователя ' | ||
| + | |||
| + | |||
| + | ===== Шаг 3: Создаем таблицы для базы данных ===== | ||
| + | |||
| + | < | ||
| + | |||
| + | Внутри недавно созданной базы данных вам необходимо создать таблицы, | ||
| + | |||
| + | < | ||
| + | |||
| + | Увидев строку приглашения **mysql> | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, | ||
| + | name VARCHAR(50) NOT NULL | ||
| + | ) ENGINE = InnoDB;</ | ||
| + | |||
| + | Следующая таблица содержит данные о фактических учетных записях пользователей. | ||
| + | |||
| + | Каждый пользователь имеет имя пользователя и пароль. Они используется для доступа к почтовому ящику по POP3 или IMAP, при входе в веб-службы или для отправки почты, на ящики, даже, если они не находятся в вашей локальной сети. | ||
| + | |||
| + | Так как пользователи, | ||
| + | |||
| + | Создаем таблицу пользователей: | ||
| + | |||
| + | < | ||
| + | id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, | ||
| + | domain_id INT(11) NOT NULL, | ||
| + | user VARCHAR(40) NOT NULL, | ||
| + | password VARCHAR(32) NOT NULL, | ||
| + | CONSTRAINT UNIQUE_EMAIL UNIQUE (domain_id, | ||
| + | FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE | ||
| + | ) ENGINE = InnoDB;</ | ||
| + | |||
| + | И, наконец, | ||
| + | |||
| + | < | ||
| + | id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, | ||
| + | domain_id INT(11) NOT NULL, | ||
| + | source VARCHAR(40) NOT NULL, | ||
| + | destination VARCHAR(80) NOT NULL, | ||
| + | FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE | ||
| + | ) ENGINE = InnoDB;</ | ||
| + | |||
| + | Опция FOREIGN KEY указывает, | ||
| + | Это позволит сохранить данные в вашей базе данных последовательно, | ||
| + | |||
| + | Ниже пример данных для таблицы virtual_domains и virtual_users: | ||
| + | |||
| + | |virtual_domains|| | ||
| + | ^id ^name^ | ||
| + | |1 |example.com| | ||
| + | |2 |liski.net| | ||
| + | |||
| + | |virtual_users|| | ||
| + | ^id ^domain_id ^user ^password^ | ||
| + | |1 |1 | ||
| + | |2 |1 | ||
| + | |3 |2 | ||
| + | |||
| + | Соответственно их почтовые адреса выглядят следующим образом : | ||
| + | |||
| + | * victor@example.com | ||
| + | * alex@example.com | ||
| + | * vasya@liski.net | ||
| + | |||
| + | И пример для таблицы виртуальных псевдонимов: | ||
| + | |||
| + | ^virtual_aliases^^ | ||
| + | ^id ^domain_id ^source ^destination^ | ||
| + | |1 |1 |alex |alex.pupkin@gmail.com| | ||
| + | |2 |2 |vasya |vasya50@yahoo.com| | ||
| + | |3 |2 |vasya |vasya@mycompany.com| | ||
| + | |||
| + | Это позволит почту для alex@example.com направить для alex.pupkin@gmail.com. А почта для vasya@liski.net перенаправляется обеим пользователям- vasya50@yahoo.com и vasya@mycompany.com | ||
| + | |||
| + | Не отчаивайтесь, | ||
| + | |||
| + | Но важным является то, что вы теперь понимаете схему таблиц базы данных. | ||
| + | |||
| + | В реальных условиях, | ||
| + | |||
| + | |||
| + | ===== Шаг 4. Создаем mapping файлы для базы данных. ===== | ||
| + | |||
| + | ==== virtual_mailbox_domains ==== | ||
| + | |||
| + | Создаем и сразу вводим содержание в файл **/ | ||
| + | |||
| + | < | ||
| + | |||
| + | В появившееся пустое окно вводим следующие строки: | ||
| + | | ||
| + | < | ||
| + | password = mailuser2009 | ||
| + | hosts = 127.0.0.1 | ||
| + | dbname = mailserver | ||
| + | query = SELECT 1 FROM virtual_domains WHERE name=' | ||
| + | |||
| + | Выполним команду для конфигурирования файла / | ||
| + | |||
| + | < | ||
| + | |||
| + | (:!: С помощью команды postconf-е удобно добавлять конфигурационные строки в файл / | ||
| + | |||
| + | Откроем базу данных **mailserver** для занесения в созданные таблицы первичных данных: | ||
| + | |||
| + | < | ||
| + | |||
| + | Увидим строку приглашения и введем данные для таблицы virtual_domains: | ||
| + | |||
| + | ^id ^name^ | ||
| + | |1 |example.com| | ||
| + | |2 |liski.net| | ||
| + | |||
| + | < | ||
| + | USE mailserver</ | ||
| + | |||
| + | < | ||
| + | INSERT INTO virtual_domains (id, name) VALUES (1, ' | ||
| + | INSERT INTO virtual_domains (id, name) VALUES (2, ' | ||
| + | |||
| + | < | ||
| + | |||
| + | проверим в Терминале, | ||
| + | |||
| + | < | ||
| + | postmap -q example.com mysql:/ | ||
| + | postmap -q liski.net mysql:/ | ||
| + | |||
| + | Если вы увидели ответ на каждую команду цифру ' | ||
| + | |||
| + | ==== virtual_mailbox_maps ==== | ||
| + | |||
| + | Создадим пользователя и группу vmail: | ||
| + | |||
| + | < | ||
| + | groupadd -g 5000 vmail | ||
| + | useradd -g vmail -u 5000 vmail -d /home/vmail -m</ | ||
| + | |||
| + | Внесем сведения о них в фаил / | ||
| + | |||
| + | < | ||
| + | postconf -e virtual_uid_maps=static: | ||
| + | postconf -e virtual_gid_maps=static: | ||
| + | |||
| + | Точно так же, введем данные в таблицу virtual_users: | ||
| + | |||
| + | < | ||
| + | |||
| + | INSERT INTO virtual_users (id, domain_id, user, password) | ||
| + | VALUES (1, 1, ' | ||
| + | |||
| + | INSERT INTO virtual_users (id, domain_id, user, password) | ||
| + | VALUES (2, 1, ' | ||
| + | |||
| + | Проверим, | ||
| + | |||
| + | < | ||
| + | SELECT CONCAT(virtual_users.user, | ||
| + | FROM virtual_users | ||
| + | LEFT JOIN virtual_domains ON virtual_users.domain_id=virtual_domains.id;</ | ||
| + | |||
| + | Вывод увидим в виде таблицы, | ||
| + | |||
| + | < | ||
| + | | email | | ||
| + | +--------------------+ | ||
| + | | alex@example.com | ||
| + | | victor@example.com | | ||
| + | +--------------------+ | ||
| + | 2 rows in set (0.00 sec)</ | ||
| + | |||
| + | Еще раз: | ||
| + | |||
| + | < | ||
| + | SELECT CONCAT(virtual_users.user, | ||
| + | virtual_users.password | ||
| + | FROM virtual_users | ||
| + | LEFT JOIN virtual_domains ON virtual_users.domain_id=virtual_domains.id;</ | ||
| + | |||
| + | Увидим следующую таблицу: | ||
| + | |||
| + | < | ||
| + | | email | password | ||
| + | +--------------------+----------------------------------+ | ||
| + | | victor@example.com | 827ccb0eea8a706c4c34a16891f84e7b | | ||
| + | | alex@example.com | ||
| + | +--------------------+----------------------------------+ | ||
| + | 2 rows in set (0.00 sec)</ | ||
| + | |||
| + | |||
| + | **Создадим таблицу view_users** (если вы успели выйти из базы данных, | ||
| + | |||
| + | < | ||
| + | |||
| + | mysql> | ||
| + | USE mailserver | ||
| + | |||
| + | </ | ||
| + | |||
| + | < | ||
| + | SELECT CONCAT(virtual_users.user, | ||
| + | virtual_users.password | ||
| + | FROM virtual_users | ||
| + | LEFT JOIN virtual_domains ON virtual_users.domain_id=virtual_domains.id;</ | ||
| + | |||
| + | проверка: | ||
| + | |||
| + | < | ||
| + | |||
| + | Последует следующий вывод: | ||
| + | |||
| + | < | ||
| + | | email | password | ||
| + | +--------------------+----------------------------------+ | ||
| + | | victor@example.com | 827ccb0eea8a706c4c34a16891f84e7b | | ||
| + | | alex@example.com | ||
| + | +--------------------+----------------------------------+ | ||
| + | 2 rows in set (0.00 sec) | ||
| + | |||
| + | mysql></ | ||
| + | |||
| + | Выходим из оболочки базы данных, | ||
| + | |||
| + | < | ||
| + | |||
| + | И создаем файл / | ||
| + | |||
| + | < | ||
| + | |||
| + | Вставляем в пустое окно следующий текст: | ||
| + | |||
| + | < | ||
| + | password = mailuser2009 | ||
| + | hosts = 127.0.0.1 | ||
| + | dbname = mailserver | ||
| + | query = SELECT 1 FROM view_users WHERE email=' | ||
| + | |||
| + | Сделаем постконфигурацию postfix: | ||
| + | |||
| + | < | ||
| + | |||
| + | проверка в Терминале: | ||
| + | |||
| + | < | ||
| + | postmap -q alex@example.com mysql:/ | ||
| + | |||
| + | должны увидеть цифры " | ||
| + | |||
| + | ==== virtual_alias_maps ==== | ||
| + | |||
| + | Заполним таблицу virtual_aliases (вновь повторяем те же команды, | ||
| + | |||
| + | < | ||
| + | |||
| + | Вносим следующие данные: | ||
| + | |||
| + | ^-------------------------------^ | ||
| + | |1 |1 |victor |victor@example.com| | ||
| + | |2 |1 |victor |victor@gmail.com| | ||
| + | |||
| + | < | ||
| + | INSERT INTO virtual_aliases (id, domain_id, source, destination) | ||
| + | VALUES (1, 1, ' | ||
| + | (2, 1, ' | ||
| + | |||
| + | < | ||
| + | |||
| + | **По такой же схеме создаем и проверяем таблицу view_aliases: | ||
| + | |||
| + | < | ||
| + | CREATE VIEW view_aliases AS | ||
| + | SELECT CONCAT(virtual_aliases.source, | ||
| + | | ||
| + | FROM virtual_aliases | ||
| + | LEFT JOIN virtual_domains ON virtual_aliases.domain_id=virtual_domains.id;</ | ||
| + | |||
| + | проверка: | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | | email | destination | ||
| + | +--------------------+---------------------+ | ||
| + | | victor@example.com | victor@example.com | ||
| + | | victor@example.com | victor@gmail.com | | ||
| + | +--------------------+---------------------+ | ||
| + | 2 rows in set (0.00 sec) | ||
| + | |||
| + | mysql></ | ||
| + | Выходим из MySQL | ||
| + | |||
| + | < | ||
| + | |||
| + | **И создаем файл / | ||
| + | |||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | password = mailuser2009 | ||
| + | hosts = 127.0.0.1 | ||
| + | dbname = mailserver | ||
| + | query = SELECT destination FROM view_aliases WHERE email=' | ||
| + | |||
| + | проверим: | ||
| + | |||
| + | < | ||
| + | |||
| + | увидим: | ||
| + | |||
| + | < | ||
| + | |||
| + | root@example:/ | ||
| + | |||
| + | Создаем файл **/ | ||
| + | ** | ||
| + | < | ||
| + | |||
| + | < | ||
| + | password = mailuser2009 | ||
| + | hosts = 127.0.0.1 | ||
| + | dbname = mailserver | ||
| + | query = SELECT email FROM view_users WHERE email=' | ||
| + | |||
| + | проверка: | ||
| + | |||
| + | < | ||
| + | |||
| + | увидим: | ||
| + | |||
| + | < | ||
| + | root@example:/ | ||
| + | |||
| + | Чтобы | ||
| + | |||
| + | < | ||
| + | |||
| + | Разрешаем права | ||
| + | |||
| + | < | ||
| + | chmod u=rw,g=r,o= / | ||
| + | |||
| + | |||
| + | ===== Шаг 5: Доставка писем через Dovecot LDA ===== | ||
| + | |||
| + | В Postfix входит агент доставки почты (MDA), их называют " | ||
| + | |||
| + | Но Dovecot поставляется с собственным агентом доставки. Этот агент называется " | ||
| + | |||
| + | Для того, чтобы использовать этого агента Postfix, нам придется добавить следующую строку в файл: / | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | flags=DRhu user=vmail: | ||
| + | |||
| + | < | ||
| + | |||
| + | Перезапустим Postfix: | ||
| + | |||
| + | < | ||
| + | |||
| + | а так же для активизации службы виртуальной доставки добавим две строчки в конфигурационный файл Postfix **/ | ||
| + | |||
| + | < | ||
| + | postconf -e dovecot_destination_recipient_limit=1</ | ||
| + | |||
| + | До сих пор непосредственно Postfix передавал входящие письма для виртуальных пользователей из / | ||
| + | |||
| + | Теперь настало время настройки службы Dovecot. | ||
| + | |||
| + | ===== Шаг 6. Настраиваем Dovecot ===== | ||
| + | |||
| + | Настроим Dovecot, для работы со службами POP3 и IMAP. | ||
| + | |||
| + | Конфигурационные файлы для Dovecot находится в папке / | ||
| + | |||
| + | < | ||
| + | |||
| + | Находим и проверяем строчку с протоколами, | ||
| + | |||
| + | :!: искать можно штатным поиском редактора, | ||
| + | |||
| + | < | ||
| + | |||
| + | Следующая строка показывает, | ||
| + | |||
| + | Вы можете после проверки работы всех служб включить этот параметр поставив слово ' | ||
| + | |||
| + | < | ||
| + | |||
| + | Вы можете после проверки работы всех служб, включить этот параметр поставив слово ' | ||
| + | |||
| + | Следующая строка определяет очень важный параметр, | ||
| + | |||
| + | < | ||
| + | |||
| + | Вам должно быть понятно, | ||
| + | |||
| + | Следующая строка показывает, | ||
| + | |||
| + | < | ||
| + | separator = . | ||
| + | prefix = INBOX. | ||
| + | inbox = yes | ||
| + | }</ | ||
| + | |||
| + | Следующая строка определяет механизм аутентификации plain login : | ||
| + | |||
| + | < | ||
| + | |||
| + | Далее находим и меняем значение passdb sql следующим образом: | ||
| + | |||
| + | < | ||
| + | args = / | ||
| + | }</ | ||
| + | |||
| + | Эта строка показывает Dovecot, что пароли хранятся в базе данных MySQL. | ||
| + | |||
| + | < | ||
| + | args = uid=5000 gid=5000 home=/ | ||
| + | }</ | ||
| + | |||
| + | Находим и правим следующую секцию, | ||
| + | |||
| + | < | ||
| + | master { | ||
| + | path = / | ||
| + | mode = 0600 | ||
| + | user = vmail | ||
| + | } | ||
| + | |||
| + | client { | ||
| + | path = / | ||
| + | mode = 0660 | ||
| + | user = postfix | ||
| + | group = postfix | ||
| + | } | ||
| + | }</ | ||
| + | |||
| + | Показано, | ||
| + | |||
| + | И финальные строки, | ||
| + | |||
| + | < | ||
| + | log_path = / | ||
| + | auth_socket_path = / | ||
| + | postmaster_address = postmaster@example.com | ||
| + | mail_plugins = cmusieve | ||
| + | global_script_path = / | ||
| + | }</ | ||
| + | |||
| + | :!: Помните, | ||
| + | |||
| + | ==== Настраиваем конфигурационный файл dovecot-sql.conf. ==== | ||
| + | |||
| + | Открываем в текстовом редакторе файл: **/ | ||
| + | |||
| + | < | ||
| + | |||
| + | Ниже четыре строки, | ||
| + | |||
| + | < | ||
| + | |||
| + | connect = host=127.0.0.1 dbname=mailserver user=mailuser password=mailuser2009 | ||
| + | |||
| + | default_pass_scheme = PLAIN-MD5 | ||
| + | |||
| + | password_query = SELECT email as user, password FROM view_users WHERE email=' | ||
| + | |||
| + | **Перезапускаем Dovecot:** | ||
| + | |||
| + | < | ||
| + | |||
| + | |||
| + | Перед проведением тестирования сервера электронной почты, необходимо присвоить определенные права на файл / | ||
| + | |||
| + | Выполним следующие команды: | ||
| + | |||
| + | < | ||
| + | chmod g+r / | ||
| + | |||
| + | Все! | ||
| + | |||
| + | ===== Шаг 7. Проверяем работоспособность Dovecot. ===== | ||
| + | |||
| + | Проверяем правильность работы, | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | Jan 14 14:23:28 mailserver dovecot: auth-worker(default): | ||
| + | |||
| + | ===== Шаг 8. Тестируем нашу почту, | ||
| + | |||
| + | Поднимаем SMTP сесию через telnet. | ||
| + | |||
| + | В " | ||
| + | |||
| + | < | ||
| + | |||
| + | Сервер должен ответить: | ||
| + | |||
| + | < | ||
| + | Connected to mailserver.example.com. | ||
| + | Escape character is ' | ||
| + | 220 mailserver.example.com ESMTP Postfix (Ubuntu)</ | ||
| + | |||
| + | Пишем: | ||
| + | |||
| + | < | ||
| + | |||
| + | Видим: | ||
| + | |||
| + | < | ||
| + | 250-PIPELINING | ||
| + | 250-SIZE 10240000 | ||
| + | 250-VRFY | ||
| + | 250-ETRN | ||
| + | 250-STARTTLS | ||
| + | 250-ENHANCEDSTATUSCODES | ||
| + | 250-8BITMIME | ||
| + | 250 DSN</ | ||
| + | |||
| + | Пишем: | ||
| + | |||
| + | < | ||
| + | |||
| + | Видим: | ||
| + | |||
| + | < | ||
| + | |||
| + | Пишем: | ||
| + | |||
| + | < | ||
| + | |||
| + | Видим: | ||
| + | |||
| + | < | ||
| + | |||
| + | Пишем: | ||
| + | |||
| + | < | ||
| + | |||
| + | Видим: | ||
| + | |||
| + | < | ||
| + | |||
| + | Пишем (" | ||
| + | |||
| + | < | ||
| + | .</ | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | |||
| + | Видим: | ||
| + | |||
| + | < | ||
| + | Connection closed by foreign host. | ||
| + | root@mailserver:/ | ||
| + | |||
| + | Проверим логи. | ||
| + | |||
| + | Вновь вернемся к лог файлу **/ | ||
| + | |||
| + | можно так: | ||
| + | |||
| + | < | ||
| + | |||
| + | В конце файла должны увидеть следующие строки: | ||
| + | |||
| + | < | ||
| + | Jan 14 16:00:59 mailserver postfix/ | ||
| + | Jan 14 16:01:19 mailserver postfix/ | ||
| + | Jan 14 16:01:19 mailserver postfix/ | ||
| + | Jan 14 16:01:19 mailserver postfix/ | ||
| + | Jan 14 16:01:20 mailserver postfix/ | ||
| + | Jan 14 16:01:20 mailserver postfix/ | ||
| + | Jan 14 16:01:29 mailserver postfix/ | ||
| + | |||
| + | |||
| + | Проверим наличие почтового ящика, введем в терминале команду: | ||
| + | |||
| + | < | ||
| + | < | ||
| + | |||
| + | < | ||
| + | root@mail:/ | ||
| + | |||
| + | Теперь мы должны увидеть все папки нашего почтового ящика: | ||
| + | |||
| + | < | ||
| + | ./Maildir | ||
| + | ./ | ||
| + | ./ | ||
| + | ./ | ||
| + | ./ | ||
| + | ./ | ||
| + | ./ | ||
| + | ./ | ||
| + | root@mailserver:/ | ||
| + | |||
| + | Там же находится и отправленное письмо, | ||
| + | |||
| + | There sits the email. Try to read the mail with the " | ||
| + | |||
| + | < | ||
| + | |||
| + | В появившемся окне mutt, увидим наше письмо: | ||
| + | |||
| + | ^q: | ||
| + | ^ 1 N May 18 steve@example.c (0.1K) | ||
| + | |||
| + | Нажмем < | ||
| + | |||
| + | < | ||
| + | To: undisclosed-recipients: | ||
| + | |||
| + | Привет от босса.</ | ||
| + | |||
| + | Таким образом, | ||
| + | |||
| + | :!: Нажмите клавишу < | ||
| + | |||
| + | ==== Проверяем работу POP3 ==== | ||
| + | |||
| + | Давайте попробуем создать POP3 соединение и получить электронную почту (email) для Victora, введем команду: | ||
| + | |||
| + | < | ||
| + | |||
| + | На что сервер отвечает: | ||
| + | |||
| + | < | ||
| + | Connected to localhost. | ||
| + | Escape character is ' | ||
| + | +OK Dovecot ready.</ | ||
| + | |||
| + | Логинимся как Victor: | ||
| + | |||
| + | < | ||
| + | |||
| + | Видим ответ от сервера: | ||
| + | |||
| + | < | ||
| + | |||
| + | Передаем пароль: | ||
| + | |||
| + | < | ||
| + | |||
| + | Если пароль правильный, | ||
| + | |||
| + | < | ||
| + | |||
| + | Просмотрим почту для Victor с помощью команды list: | ||
| + | |||
| + | < | ||
| + | |||
| + | Dovecot скажет вам, что есть одно письмо в почтовом ящике: | ||
| + | |||
| + | < | ||
| + | 1 474 | ||
| + | . | ||
| + | |||
| + | Fetch that email number 1: | ||
| + | |||
| + | retr 1 | ||
| + | |||
| + | Dovecot sends you the email: | ||
| + | |||
| + | +OK 474 octets | ||
| + | Return-Path: | ||
| + | X-Original-To: | ||
| + | Delivered-To: | ||
| + | Received: from example.com (localhost [127.0.0.1]) | ||
| + | by ... (Postfix) with ESMTP id 692DF379C7 | ||
| + | for < | ||
| + | Message-Id: <...> | ||
| + | Date: Fri, 18 May 2007 22:59:31 +0200 (CEST) | ||
| + | From: bos@example.com | ||
| + | To: undisclosed-recipients:; | ||
| + | |||
| + | Привет от боса! | ||
| + | . | ||
| + | </ | ||
| + | |||
| + | Закроем соединение с POP3 сервером: | ||
| + | |||
| + | < | ||
| + | |||
| + | Сервер ответит: | ||
| + | |||
| + | < | ||
| + | +OK Logging out. | ||
| + | Connection closed by foreign host.</ | ||
| + | |||
| + | ==== Тестируем IMAP ==== | ||
| + | |||
| + | Можно для проверки пработоспособности IMAP соединения использовать тот же mutt: | ||
| + | |||
| + | < | ||
| + | |||
| + | А можно, непосредственно в терминале создать и проверить IMAP соединение, | ||
| + | |||
| + | < | ||
| + | |||
| + | Увидим ответ: | ||
| + | |||
| + | < | ||
| + | Connected to localhost. | ||
| + | Escape character is ' | ||
| + | * OK Dovecot ready.</ | ||
| + | |||
| + | IMAP команд всегда начинаются с номера и ответа на эту команду с тем же номером. Таким образом, | ||
| + | < | ||
| + | |||
| + | Dovecot ответит так: | ||
| + | |||
| + | < | ||
| + | |||
| + | Укажем Dovecot команду list для просмотра почтового ящика John' | ||
| + | |||
| + | < | ||
| + | |||
| + | Ответ на команду list: | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | Выберем ваш inbox: | ||
| + | |||
| + | < | ||
| + | |||
| + | |||
| + | Dovecot дает вам все виды информации об этом ящике: | ||
| + | |||
| + | < | ||
| + | * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) | ||
| + | * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted. | ||
| + | * 1 EXISTS | ||
| + | * 0 RECENT | ||
| + | * OK [UIDVALIDITY 1180039205] UIDs valid | ||
| + | * OK [UIDNEXT 3] Predicted next UID | ||
| + | 3 OK [READ-WRITE] Select completed.</ | ||
| + | |||
| + | Вы видите, | ||
| + | |||
| + | < | ||
| + | |||
| + | IMAP выдаст вам основную информацию по электронной почте: | ||
| + | |||
| + | < | ||
| + | 4 OK Fetch completed.</ | ||
| + | |||
| + | To read the actual mail body you need to fetch it explicitly: | ||
| + | |||
| + | Для чтения содержимого (body) письма, | ||
| + | |||
| + | < | ||
| + | Вот, | ||
| + | |||
| + | < | ||
| + | Return-Path: | ||
| + | X-Original-To: | ||
| + | Delivered-To: | ||
| + | Received: from example.com (localhost [127.0.0.1]) | ||
| + | by ... (Postfix) with ESMTP id 692DF379C7 | ||
| + | for < | ||
| + | Message-Id: <...> | ||
| + | Date: Fri, 18 May 2007 22:59:31 +0200 (CEST) | ||
| + | From: bos@example.com | ||
| + | To: undisclosed-recipients:; | ||
| + | |||
| + | Привет от босса! | ||
| + | ) | ||
| + | 5 OK Fetch completed.</ | ||
| + | |||
| + | Отсоединимся от сервера: | ||
| + | |||
| + | < | ||
| + | |||
| + | Dovecot попрощается с вами: | ||
| + | |||
| + | < | ||
| + | 6 OK Logout completed. | ||
| + | Connection closed by foreign host.</ | ||
| + | |||
| + | Итак POP3 и IMAP работают. Теперь Вы можете использовать любую почтовую программу, | ||
| + | |||
| + | Для проверки правильности работы зашифрованных соединений, | ||
| + | |||
| + | < | ||
| + | |||
| + | При использовании других почтовых программ, | ||
| + | |||
| + | Таким образом, | ||
| + | |||
| + | * POP3 | ||
| + | * IMAP | ||
| + | * POP3 with TLS/SSL enabled | ||
| + | * IMAP with TLS/SSL enabled | ||
| + | |||
| + | ==== Создание Сертификата и ключа ==== | ||
| + | |||
| + | В данной конфигурации используется сертификат из системы по умолчанию. | ||
| + | Используя приведенную ниже команду, | ||
| + | |||
| + | < | ||
| + | -keyout / | ||
| + | |||
| + | Сертификат и ключ будут созданы, | ||
| + | |||
| + | < | ||
| + | .........++++++ | ||
| + | ............................++++++ | ||
| + | writing new private key to '/ | ||
| + | ----- | ||
| + | You are about to be asked to enter information that will be incorporated | ||
| + | into your certificate request. | ||
| + | What you are about to enter is what is called a Distinguished Name or a DN. | ||
| + | There are quite a few fields but you can leave some blank | ||
| + | For some fields there will be a default value, | ||
| + | If you enter ' | ||
| + | ----- | ||
| + | Country Name (2 letter code) [AU]:RU | ||
| + | State or Province Name (full name) [Some-State]: | ||
| + | Locality Name (eg, city) []:Liski | ||
| + | Organization Name (eg, company) [Internet Widgits Pty Ltd]: | ||
| + | Organizational Unit Name (eg, section) []: | ||
| + | Common Name (eg, YOUR name) []: | ||
| + | Email Address []: | ||
| + | |||
| + | Конечно, | ||
| + | Этот сертификат будет действительным в течение 10 лет (3650 дней) - вы, можете изменить этот период, | ||
| + | |||
| + | Не забудьте установить разрешение на частный ключ, чтобы исключить несанкционированный доступ к этому файлу: | ||
| + | |||
| + | < | ||
| + | |||
| + | ===== Шаг 9: Аутентификация SMTP ===== | ||
| + | |||
| + | Пока обойдемся без этого параметра (оформлю попозже) | ||
| + | |||
| + | ===== Шаг 10: Доступ к серверу, | ||
| + | |||
| + | В репозитариях Ubuntu представлены пакеты " | ||
| + | |||
| + | Это Webmail- IMAP клиенты, | ||
| + | |||
| + | которую можно ожидать от почтового клиента, | ||
| + | |||
| + | Я установил и настроил оба. Какой из них лучше, решать Вам. | ||
| + | |||
| + | Устанавливал, | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | |||
| + | Настройка свелась к созданию симлинков, | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | |||
| + | и назначению прав на них: | ||
| + | |||
| + | < | ||
| + | |||
| + | [[http:// | ||
| + | |||
| + | {{: | ||
| + | |||
| + | [[http:// | ||
| + | |||
| + | {{: | ||
| + | |||
| + | ===== Шаг 11: Альтернативный Шагу № 3. Создаем таблицы для нашей базы данных с помощью программы Phpmyadmin. ===== | ||
| + | |||
| + | Выше было показано, | ||
| + | |||
| + | В этом разделе я покажу вам, как их можно создать с помощью программы Phpmyadmin. | ||
| + | |||
| + | < | ||
| + | |||
| + | {{: | ||
| + | |||
| + | * Запустив | ||
| + | |||
| + | {{: | ||
| + | |||
| + | * В это окно (см. рисунок ниже), внесем путем копирования все строки, | ||
| + | |||
| + | Дамп базы данных **mailserver**: | ||
| + | < | ||
| + | CREATE TABLE `virtual_domains` ( | ||
| + | id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, | ||
| + | name VARCHAR(50) NOT NULL | ||
| + | ) ENGINE = InnoDB; | ||
| + | |||
| + | CREATE TABLE `virtual_users` ( | ||
| + | id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, | ||
| + | domain_id INT(11) NOT NULL, | ||
| + | user VARCHAR(40) NOT NULL, | ||
| + | password VARCHAR(32) NOT NULL, | ||
| + | CONSTRAINT UNIQUE_EMAIL UNIQUE (domain_id, | ||
| + | FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE | ||
| + | ) ENGINE = InnoDB; | ||
| + | |||
| + | CREATE TABLE `virtual_aliases` ( | ||
| + | id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, | ||
| + | domain_id INT(11) NOT NULL, | ||
| + | source VARCHAR(40) NOT NULL, | ||
| + | destination VARCHAR(80) NOT NULL, | ||
| + | FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE | ||
| + | ) ENGINE = InnoDB; | ||
| + | |||
| + | CREATE VIEW view_users AS | ||
| + | SELECT CONCAT(virtual_users.user, | ||
| + | virtual_users.password | ||
| + | FROM virtual_users | ||
| + | LEFT JOIN virtual_domains ON virtual_users.domain_id=virtual_domains.id; | ||
| + | |||
| + | CREATE VIEW view_aliases AS | ||
| + | SELECT CONCAT(virtual_aliases.source, | ||
| + | | ||
| + | FROM virtual_aliases | ||
| + | LEFT JOIN virtual_domains ON virtual_aliases.domain_id=virtual_domains.id; | ||
| + | </ | ||
| + | |||
| + | {{: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | ===== Шаг 12. Установка GRSoft Mail Manager, для управления базой данных. ===== | ||
| + | |||
| + | Теперь установим web-интерфейс для управления базой данных: | ||
| + | Сама программа и руководство по установке находится на сайте: | ||
| + | |||
| + | [[http:// | ||
| + | |||
| + | На данное время, я загрузил следующую версию: | ||
| + | |||
| + | [[http:// | ||
| + | |||
| + | Разархивируем, | ||
| + | |||
| + | Применяем на неё команду: | ||
| + | |||
| + | < | ||
| + | |||
| + | И в браузере запускаем: | ||
| + | |||
| + | [[http:// | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Рис. 1 | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Рис. 2 | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Рис. 3 | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Рис. 4 | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Рис. 5 | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Рис. 6 | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Рис. 7 | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Рис. 8 | ||
| + | |||
| + | |||
| + | {{: | ||
| + | |||
| + | Рис. 9 | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Рис. 10 | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Рис. 11 | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Рис. 12 | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Рис. 13 | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Таким образом мы можем полностью управлять нашей базай данных через Web интерфейс. | ||
| + | |||
| + | Добавлять, | ||