Показаны различия между двумя версиями страницы.
| — |
mail_server [2026/06/11 12:15] (текущий) |
||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | ====== Почтовый сервер | ||
| + | |||
| + | ==== Введение ==== | ||
| + | |||
| + | Я так думаю, что Вы, мои предыдущие статьи про домашний сервер прочитали. | ||
| + | |||
| + | Поэтому, | ||
| + | |||
| + | Просто, | ||
| + | |||
| + | [[http:// | ||
| + | |||
| + | [[http:// | ||
| + | |||
| + | В данной конфигурации, | ||
| + | |||
| + | [[http:// | ||
| + | |||
| + | За что ее авторам огромная благодарность! | ||
| + | |||
| + | ===== Установка необходимых пакетов ===== | ||
| + | |||
| + | Если, не активирован ROOT: | ||
| + | |||
| + | < | ||
| + | sudo passwd root</ | ||
| + | |||
| + | Сделаем ссылочку на bash на sh: | ||
| + | |||
| + | < | ||
| + | |||
| + | Уберем apparmor (чего то, с ним пока не все ладится!) | ||
| + | |||
| + | < | ||
| + | update-rc.d -f apparmor remove</ | ||
| + | |||
| + | Устанавливаем основные пакеты: | ||
| + | |||
| + | < | ||
| + | aptitude install phpmyadmin squirrelmail | ||
| + | aptitude install postfix-mysql | ||
| + | aptitude install mysql-server-5.0 | ||
| + | aptitude install dovecot-pop3d | ||
| + | aptitude install dovecot-imapd</ | ||
| + | |||
| + | Чтобы бороться со спамом и вирусами (AMaViS для сканирования входящих сообщений на наличие вирусов, | ||
| + | |||
| + | < | ||
| + | aptitude install spamassassin clamav-daemon cpio arj zoo nomarch lzop cabextract pax</ | ||
| + | |||
| + | Другие необходимые пакеты: | ||
| + | |||
| + | < | ||
| + | aptitude install openssl | ||
| + | aptitude install squirrelmail | ||
| + | aptitude install phpmyadmin libapache2-mod-php5 php5-mysql | ||
| + | aptitude install telnet | ||
| + | aptitude install mutt | ||
| + | aptitude install ssh openssh-server</ | ||
| + | |||
| + | Те же пакеты, | ||
| + | |||
| + | < | ||
| + | |||
| + | ===== Шаг 1: Конфигурируем Сеть ===== | ||
| + | |||
| + | Редактируем файл **/ | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | # and how to activate them. For more information, | ||
| + | |||
| + | # The loopback network interface | ||
| + | auto lo | ||
| + | iface lo inet loopback | ||
| + | |||
| + | # The primary network interface | ||
| + | auto eth0 | ||
| + | iface eth0 inet static | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | Перезапустим сеть: | ||
| + | |||
| + | < | ||
| + | |||
| + | Теперь отредактируем файл **/ | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | 192.168.0.100 | ||
| + | |||
| + | # The following lines are desirable for IPv6 capable hosts | ||
| + | ::1 ip6-localhost ip6-loopback | ||
| + | fe00::0 ip6-localnet | ||
| + | ff00::0 ip6-mcastprefix | ||
| + | ff02::1 ip6-allnodes | ||
| + | ff02::2 ip6-allrouters | ||
| + | ff02::3 ip6-allhosts</ | ||
| + | |||
| + | Выполним команду: | ||
| + | |||
| + | < | ||
| + | / | ||
| + | |||
| + | Проверим, | ||
| + | |||
| + | < | ||
| + | hostname -f</ | ||
| + | |||
| + | Ответ должен быть: **mailserver.example.com** | ||
| + | |||
| + | |||
| + | |||
| + | ===== Шаг 2: Создаем базу данных и пользователя с правами администратора. ===== | ||
| + | |||
| + | Основные данные используемой для данной конфигурации базы данных: | ||
| + | |||
| + | < | ||
| + | user = mailuser | ||
| + | password = mailuser2009 | ||
| + | hosts = 127.0.0.1 | ||
| + | # Название базы данных в нашей конфигурации. | ||
| + | dbname = mailserver | ||
| + | # Шаблон SQL запроса. | ||
| + | query = SELECT destination FROM virtual_aliases WHERE source=' | ||
| + | |||
| + | |||
| + | Теперь мы ее создадим, | ||
| + | |||
| + | < | ||
| + | |||
| + | Зайдем в оболочку MySQL и откроем вновь созданную базу **mailserver**: | ||
| + | |||
| + | < | ||
| + | USE mailserver;</ | ||
| + | |||
| + | Создадим пользователя mailuser и дадим ему все права на нашу базу (mailserver) | ||
| + | |||
| + | < | ||
| + | GRANT SELECT, INSERT, UPDATE, DELETE ON mailserver.* TO ' | ||
| + | GRANT SELECT, INSERT, UPDATE, DELETE ON mailserver.* TO ' | ||
| + | FLUSH PRIVILEGES;</ | ||
| + | |||
| + | ===== Шаг 3: Создаем таблицы базы данных ===== | ||
| + | |||
| + | Открываем базу данных mailserver^ | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | mysql></ | ||
| + | |||
| + | Создаем таблицы (virtual_domains, | ||
| + | |||
| + | < | ||
| + | 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;</ | ||
| + | |||
| + | Создаем и сразу вводим содержание в файл **/ | ||
| + | |||
| + | < | ||
| + | |||
| + | В появившееся пустое окно вводим следующие строки: | ||
| + | | ||
| + | < | ||
| + | password = mailuser2009 | ||
| + | hosts = 127.0.0.1 | ||
| + | dbname = mailserver | ||
| + | query = SELECT 1 FROM virtual_domains WHERE name=' | ||
| + | |||
| + | Выполним команду для конфигурирования файла / | ||
| + | |||
| + | < | ||
| + | |||
| + | Откроем базу данных **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:/ | ||
| + | |||
| + | Если вы увидели ответ на каждую команду цифру ' | ||
| + | |||
| + | Создадим пользователя и группу 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_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:/ | ||
| + | |||
| + | Now you need to tell Postfix that these two mappings should be searched by adding this line to your main.cf: | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | chmod u=rw,g=r,o= / | ||
| + | |||
| + | ===== Шаг 5: Доставка писем через Dovecot LDA ===== | ||
| + | |||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | flags=DRhu user=vmail: | ||
| + | |||
| + | :!: Перед второй строкой должно быть 2 пробела, | ||
| + | |||
| + | Перезагружаем и проверяем postfix/ | ||
| + | |||
| + | < | ||
| + | postfix check</ | ||
| + | |||
| + | < | ||
| + | postconf -e dovecot_destination_recipient_limit=1</ | ||
| + | |||
| + | ===== Шаг 6: Настраиваем Dovecot ===== | ||
| + | |||
| + | Let us configure Dovecot which provides both a POP3 and an IMAP service. The configuration files for Dovecot is found under / | ||
| + | |||
| + | < | ||
| + | gedit / | ||
| + | |||
| + | Находим и проверяем строчку с протоколами, | ||
| + | |||
| + | < | ||
| + | |||
| + | so that Dovecot starts the IMAP and POP3 services and also its equivalents that work over an encrypted SSL (secure socket layer) connection. | ||
| + | |||
| + | If users start to complain that they cannot fetch their emails consider setting: | ||
| + | |||
| + | < | ||
| + | |||
| + | This will allow plaintext passwords over an unsecured (non-SSL) connection. By default it is set to ' | ||
| + | |||
| + | A more important setting is: | ||
| + | |||
| + | < | ||
| + | |||
| + | which will tell that the users' mailboxes are always found at / | ||
| + | |||
| + | < | ||
| + | |||
| + | If you already have virtual mailboxes on your system because you followed the previous tutorials for Sarge or Woody you may want to define the IMAP namespace explicitly so that the users find their folder where they have always been: | ||
| + | |||
| + | < | ||
| + | separator = . | ||
| + | prefix = INBOX. | ||
| + | inbox = yes | ||
| + | }</ | ||
| + | |||
| + | Next look for a section called "auth default" | ||
| + | |||
| + | < | ||
| + | |||
| + | Then inside that same section you need to change: | ||
| + | |||
| + | < | ||
| + | args = / | ||
| + | }</ | ||
| + | |||
| + | which tells Dovecot that the passwords are stored in an SQL database and: | ||
| + | |||
| + | < | ||
| + | args = uid=5000 gid=5000 home=/ | ||
| + | }</ | ||
| + | |||
| + | to tell Dovecot where the mailboxes are located. This is similar to the mail_location setting. | ||
| + | |||
| + | You will want to comment out the section called passdb pam that deals with system users. Otherwise Dovecot will also look for system users when someone fetches emails which leads to warnings in your log file. | ||
| + | |||
| + | Now look for another section called socket listen. Here you define socket files that are used to interact with Dovecot' | ||
| + | |||
| + | < | ||
| + | master { | ||
| + | path = / | ||
| + | mode = 0600 | ||
| + | user = vmail | ||
| + | } | ||
| + | |||
| + | client { | ||
| + | path = / | ||
| + | mode = 0660 | ||
| + | user = postfix | ||
| + | group = postfix | ||
| + | } | ||
| + | }</ | ||
| + | |||
| + | The master section is needed to give Dovecot' | ||
| + | |||
| + | And finally the protocol lda section needs to be customized. The LDA (local delivery agent) is more capable than Postfix' | ||
| + | |||
| + | < | ||
| + | log_path = / | ||
| + | auth_socket_path = / | ||
| + | postmaster_address = postmaster@example.com | ||
| + | mail_plugins = cmusieve | ||
| + | global_script_path = / | ||
| + | }</ | ||
| + | |||
| + | Please change the above postmaster email address to a valid address where the administrator can be reached. | ||
| + | |||
| + | Edit **/ | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | 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: | ||
| + | |||
| + | < | ||
| + | |||
| + | Upon the first restart of Dovecot it will also generate Diffie-Hellman parameters and fix persmissions of / | ||
| + | |||
| + | Before you send a first test email you will need to fix file system permissions for the / | ||
| + | |||
| + | < | ||
| + | chmod g+r / | ||
| + | |||
| + | ===== Проверка работы Dovecot ===== | ||
| + | |||
| + | Проверяем правильность работы, | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | Jan 14 14:23:28 mailserver dovecot: auth-worker(default): | ||
| + | |||
| + | ===== Шаг 7: Тестируем нашу почту, | ||
| + | |||
| + | Поднимаем 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: | ||
| + | |||
| + | Привет от босса.</ | ||
| + | |||
| + | Таким образом, | ||
| + | |||
| + | :!: Нажмите клавишу < | ||
| + | |||
| + | |||
| + | ===== Step 8: Test fetching emails with IMAP and POP3 ===== | ||
| + | |||
| + | |||
| + | John will surely prefer to read his mail in a comfortable mail program. So he needs a way to get access to his mailbox. Two protocols come to play here: | ||
| + | * POP (Post Office Protocol) is a simple protocol that lets you fetch email from a single mailbox. It is usually used to get all emails and then delete them on the server. | ||
| + | * IMAP (Internet Messaging Application Protocol) is also used to fetch email but you can maintain different mailboxes. The inbox is where your incoming emails are stored. But users can move emails to different directories. IMAP is useful when you want to access your email from different locations without losing mail because you fetched it from another location. | ||
| + | |||
| + | ==== Проверяем работу POP3 ==== | ||
| + | |||
| + | Давайте попробуем создать POP3 соединение и получить электронную почту (email) для Victora, введем команду: | ||
| + | |||
| + | < | ||
| + | |||
| + | На что сервер отвечает: | ||
| + | |||
| + | < | ||
| + | Connected to localhost. | ||
| + | Escape character is ' | ||
| + | +OK Dovecot ready.</ | ||
| + | |||
| + | Логинимся как Victor: | ||
| + | |||
| + | < | ||
| + | |||
| + | Видим ответ от сервера: | ||
| + | |||
| + | < | ||
| + | |||
| + | Передаем пароль: | ||
| + | |||
| + | < | ||
| + | |||
| + | Если пароль правильный, | ||
| + | |||
| + | < | ||
| + | |||
| + | Просмотрим почту для John' | ||
| + | |||
| + | < | ||
| + | |||
| + | 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: steve@example.com | ||
| + | To: undisclosed-recipients:; | ||
| + | |||
| + | Hi John, | ||
| + | |||
| + | just wanted to drop you a note. | ||
| + | . | ||
| + | </ | ||
| + | |||
| + | Закроем соединение с POP3 сервером: | ||
| + | |||
| + | < | ||
| + | |||
| + | Сервер ответит: | ||
| + | |||
| + | < | ||
| + | +OK Logging out. | ||
| + | Connection closed by foreign host.</ | ||
| + | |||
| + | ==== Проверим соединение через IMAP ==== | ||
| + | |||
| + | Instead of going through the following procedure (IMAP is rather complicated) you may as well just use mutt to create an IMAP connection: | ||
| + | |||
| + | < | ||
| + | |||
| + | |||
| + | Alternatively you can open up a raw IMAP connection to the server and enter the IMAP commands yourself: | ||
| + | |||
| + | < | ||
| + | |||
| + | You should get a connection: | ||
| + | |||
| + | < | ||
| + | |||
| + | Connected to localhost. | ||
| + | Escape character is ' | ||
| + | * OK Dovecot ready.</ | ||
| + | |||
| + | IMAP commands always start with a number and reply to that command with the same number. So the following commands must be entered with the number at the beginning of each line. Login with username and password: | ||
| + | |||
| + | < | ||
| + | |||
| + | Dovecot logs you in: | ||
| + | |||
| + | < | ||
| + | |||
| + | Ask Dovecot for a list of John's mail folders: | ||
| + | |||
| + | < | ||
| + | |||
| + | Here comes the list: | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | |||
| + | Select your inbox: | ||
| + | |||
| + | < | ||
| + | |||
| + | Dovecot gives you all kinds of information about that folder: | ||
| + | |||
| + | < | ||
| + | * 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.</ | ||
| + | |||
| + | You see that one email exists. Fetch it: | ||
| + | |||
| + | < | ||
| + | |||
| + | IMAP will just give you basic information on the email: | ||
| + | |||
| + | < | ||
| + | 4 OK Fetch completed.</ | ||
| + | |||
| + | To read the actual mail body you need to fetch it explicitly: | ||
| + | |||
| + | < | ||
| + | |||
| + | Here it comes: | ||
| + | |||
| + | < | ||
| + | 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: steve@example.com | ||
| + | To: undisclosed-recipients:; | ||
| + | |||
| + | Hi John, | ||
| + | |||
| + | just wanted to drop you a note. | ||
| + | ) | ||
| + | 5 OK Fetch completed.</ | ||
| + | |||
| + | Disconnect from the server: | ||
| + | |||
| + | < | ||
| + | |||
| + | Dovecot logs you out: | ||
| + | |||
| + | < | ||
| + | 6 OK Logout completed. | ||
| + | Connection closed by foreign host.</ | ||
| + | |||
| + | POP3 and IMAP appear to work. You could now use any email program like Kmail, Evolution or Thunderbird/ | ||
| + | |||
| + | < | ||
| + | |||
| + | If you use other mail programs note that the username will be the email address ' | ||
| + | |||
| + | * POP3 | ||
| + | * IMAP | ||
| + | * POP3 with TLS/SSL enabled | ||
| + | * IMAP with TLS/SSL enabled | ||
| + | |||
| + | When using TLS/SSL you will get a warning that the certificate of the server cannot be trusted. Dovecot ships with a sample certificate so that you can test your setup and use TLS/SSL to fetch emails securely. Unfortunately the so called " | ||
| + | |||
| + | < | ||
| + | -keyout / | ||
| + | |||
| + | The certificate and key will be created while you get asked a few questions: | ||
| + | |||
| + | < | ||
| + | .........++++++ | ||
| + | ............................++++++ | ||
| + | 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 []: | ||
| + | |||
| + | Of course you should fill in your own information here. The most important setting is the Common Name which must contain the fully-qualified name of your mail server. Oh, and this certificate will be valid for 10 years (3650 days) - adjust that period as you want. | ||
| + | |||
| + | Do not forget to set the permissions on the private key so that no unauthorized people can read it: | ||
| + | |||
| + | < | ||
| + | |||
| + | ===== ссылка на администрирование сервером ===== | ||
| + | |||
| + | В мае я ее заставил работать!!! | ||
| + | |||
| + | http:// | ||
| + | |||
| + | ===== Обсуждение статьи: | ||
| + | |||
| + | Обсуждаем статью в разделе форума: | ||
| + | |||
| + | [[http:// | ||