- Почтовый сервер — Courier Mail Server
- Courier-0.47
- Введение в Courier
- Информация о пакете
- Зависимости Courier
- Установка Courier
- Замечание
- Описание команд
- 📑 Почтовый сервер на Postfix и Courier с MySQL
- Рабочий дневник
- четверг, 4 августа 2011 г.
- Установка и настройка почтового сервера на базе Courier и Postfix в Ubuntu
Почтовый сервер — Courier Mail Server
Почтовый сервер на основе открытых протоколов ESMTP, IMAP, POP3, LDAP, SSL и HTTP.
Courier Mail Server (The Courier Mail Server) может функционировать как почтовый релей (mail relay) между внутренней локальной сетью LAN сетью интернет или выполнять окончательную доставку писем в почтовые ящики. Этот почтовый сервер наиболее известен за свою серверную компоненту IMAP (сервер электронной почты).
Courier Mail Server использует Maildir как свой родной формат хранения данных. Файлы конфигурации имеют текстовый формат и могут включать в себя скрипты Perl, может обеспечивать почтовые услуги для учетных записей операционных систем. Courier Mail Server может также обеспечить почтовые услуги для виртуальных почтовых аккаунтов, управляемых любой службой каталогов LDAP, Berkeley DB, MySQL или базой аутентификации PostgreSQL.
Компоненты Courier Mail Server, такие, как система фильтрации maildrop, серверы webmail и IMAP, могут быть установлены также как независимые пакеты, которые можно использовать с другими почтовыми серверами. Courier-IMAP популярен в комбинации с серверами Qmail, Exim и Postfix, которые конфигурируются, чтобы использовать формат хранения электронной почты Maildir.
Несмотря на наличие в комплекте таких составляющих как SMTP сервер, pop3d и системы ведения списков рассылки. Courier MTA — это прежде всего 3 составляющих: базирующийся на Maildir IMAP сервер, система фильтрации почты maildrop и удобная система работы с почтой (включая проверку орфографии, адресную книгу через LDAP и индивидуальную настройку фильтров) посредством web-интерфейса (webmail).
Исходный код Courier Mail Server компилируется на большинстве POSIX-подобных операционных систем, основанных на ядрах Linux и BSD.
Источник
Courier-0.47
Введение в Courier
Пакет Courier содержит Mail Transport Agent ( MTA ). Он полезен для отправки почты другим пользователям на вашей машине. Так же он может быть настроен в качестве центрального сервера почты вашего домена или в качестве агента перенаправления почты. Пакет Courier так же включает web-основанный интерфейс почты, IMAP , IMAP — SSL , POP 3 и POP 3- SSL .
Информация о пакете
Контрольная сумма: 639bb3b236914e3b86f287ce3f55264e
Требуемое дисковое пространство: 102 MB
Расчетное время сборки: 2.62 SBU
Зависимости Courier
Требуемые
Опционально
Установка Courier
Замечание
Тарбол Courier должен быть распакован с правами обычного пользователя, иначе скрипт configure выпадет с ошибкой.
Перед началом сборки программы вам надо создать пользователя и группу courier, которые должны присутствовать в системе перед запуском скрипта install. Как пользователь root, добавим пользователя и группу courier при помощи следующих команд:
Скрипт install так же ожидает наличия пользователя bin. Если у вас уже есть пользователь с именем bin, то этот шаг может быть пропущен.
Courierfilter требует директорию /var/run/courier для сохранения всех pid и lock-файлов для Courier . /var/lock/subsys так же должен присутствовать для основного lock-файла Courier . Выполним следующие команды для создания этих директорий:
Соберем Courier под непривилегированным пользователем при помощи следующих команд:
А теперь опять станем пользователем root и установим Courier при помощи следующих команд:
Описание команд
--libexecdir=/usr/lib/courier: Описывает директорию, которая содержит программы и библиотеки, которые не могут быть непосредственно запущены из командной строки.
--datadir=/usr/share/courier: Описывает директорию, в которую будут установлены различные скрипты оболочки, Perl скрипты и файлы данных.
--localstatedir=/var/spool/courier: Описывает директорию, которая будет содержать очередь почты и другие временные данные.
--with-piddir=/var/run/courier: Описывает директорию, в которой сохраняются PID файлы Courier когда Courier активен.
—with-paranoid-smtpext: Быть параноиком при переговорах Courier-specific ESMTP расширений с удаленными серверами. Почтовый сервер Courier описывает и реализует некоторые экспериментальные ESMTP расширения: XVERP и XEXDATA. Проблемы могут быть следствием событий, когда кто-то другой использует то же самое имя для реализации другого расширения. Если эта опция описана, то ESMTP сервер Courier а так же будет объявлять фиктивную возможность ESMTP , называемую XCOURIEREXTENSIONS, и не будет узнавать любые Courier-специфичные расширения пока удаленный почтовый сервер так же объявляет эту фиктивную ESMTP возможность.
—disable-autorenamesent: Не переименовывать папку Sent каждый месяц. Так же эта опция может быть контролирована переменной окружения SQWEBMAIL_AUTORENAMESENT.
—enable-workarounds-for-imap-client-bugs: Есть несколько подтвержденных ошибок в некоторых клиентах IMAP , которые не правильно реализуют протокол IMAP 4rev1. Эта опция включает некоторые обходы для этих ошибочных IMAP клиентов. ЗАМЕЧАНИЕ: make check при использовании этой опции будет выпадать. Сначала вы должны использовать configure без этой опции и, если все послеконфигурационные тесты проходят, перезапустить configure с этой опцией и пересобрать.
--with-db=gdbm: Courier так же требует библиотеку базы данных GDBM или DB . GDBM используется если присутствуют обе. Эта опция принудительно выбирает GDBM , так как в данный момент courier не работает при использовании DB .
--with-ispell=/usr/bin/aspell: Сервер интернет почты Courier может использовать проверку орфографии если configure находит ispell или если вы точно установите положение aspell .
Источник
📑 Почтовый сервер на Postfix и Courier с MySQL
Статей на эту тематику написано много, но в основном они содержат ошибки или неточности. В этой статье мы постарались исправить все ошибки и она является работоспособной. Почему courier, а не dovecot? Так исторически сложилось. Courier намного проще и для внутренней корпоративной почты вполне подходит — по крайней мере до сих пор нареканий не было. Ну и всегда можно прикрутить fetchmail, procmail и т.п.
Устанавливаем необходимые пакеты:
В ходе установки отвечаем на следующие вопросы:
Создадим базу данных в MySQL
В MySQL создадим пользователя mail_admin и предоставим ему права на базу данных mail.
В базе данных создадим таблицы domains, forwardings, users и transport.
Таблица domains будет хранить наименования виртуальных доменов, для которых Postfix будет получать письма. Таблица forwardings будет содержать псевдонимы почтовых ящиков. Таблица users будет содержать всю информацию о виртуальных пользователях. Таблица transport необязательного характера, она для продвинутых пользователей. Позволяет перенаправлять почту отдельных пользователей, доменов либо всю почту на другой почтовый сервер.
Проверим, на каком адресе слушает MySQL. Для этого выполним:
Ответ должен быть следующим:
Создадим 4 файла конфигурации для postfix. В каждом из них убеждаемся, что параметр password задан верно.
Выставим права и владельца на созданные файлы:
Создадим пользователя, от имени которого будет работать наш почтовый сервер. Все виртуальные домены и ящики будут храниться в домашнем каталоге этого пользователя:
Внесем изменения в конфигурацию postfix. Проверьте параметры, относящиеся к вашему почтовому серверу
В ходе генерации отвечаем на ряд простых вопросов:
Дадим на него права:
Создадим каталог для saslauthd
Отредактируем файл /etc/default/saslauthd. Изменим параметры START и OPTIONS на следующие:
Создадим файл /etc/pam.d/smtp и вставим в него две строки (измените пароль на свой):
Создаем файл /etc/postfix/sasl/smtpd.conf и добавляем в него следующие сотроки:
Добавляем пользователя postfix в группу sasl и перезапускаем postfix и saslauthd:
Сохраняем файл /etc/courier/authmysqlrc. Вместо него создаем вместо него пустой файл:
Добавляем в созданный файл следующее:
Удаляем оригинальные сертификаты, созданные Courier
В файлах /etc/courier/imapd.cnf и /etc/courier/pop3d.cnf заменяем CN=localhost на CN=полное_доменное_имя_почтового_сервера.
Регенерируем сертификаты и перезапускаем сервисы:
Редактируем псевдонимы в файле /etc/aliases:
Обновляем алиасы и перезапускаем postfix:
Проверяем наш smtp сервер:
Когда подключимся, выполняем
Если все правильно настроили, вывод будет примерно таким:
Теперь можно создавать виртуальные домены и пользователей. Для этого заходим в MySQL:
Для создания почтового ящика отправляем письмо на адрес ozzy@yourdomain.local
Сначала вводите тему сообщения, потом тело. Для выхода из редактирования нажимаем Ctrl+D.
Все. Можно настраивать почтовых клиентов.
Источник
Рабочий дневник
FreeBSD, Линуксы, юниксы, виндовсы, принтера, юзеры, и прочее
четверг, 4 августа 2011 г.
Установка и настройка почтового сервера на базе Courier и Postfix в Ubuntu
Для быстрой настройки почтового сервера связка Courier и Postfix является очень удобной.
Для работы нам понадобится наличие домена с обратным преобразованием оного и записью типа MX, а также база данных MySQLдля хранения информации о пользователях и доменах.
Также нужно открыть доступ к следующим портам :
25 (SMTP), 110, 995 (POP, POPS), 143, 993 (IMAP, IMAPS) |
Самый простой способ настроить место для хранения почты — создать пользователя vmail с соответствующей группой и назначить ему специфичный userID.
Пользователь vmail создается как обычно, но с некоторым отличием: мы указываем, что пользователь не может логиниться в систему.
Для начала создадим группу vmail:
sudo groupadd -g 5000 vmail |
Это команда создает группу vmail и присваивает ее GID (group ID) 5000.
Затем создаем пользователя vmail:
sudo useradd -s /usr/sbin/nologin -g vmail -u 5000 vmail -d /home/vmail -m |
Эта команда создает пользователя vmail, чтобы он не мог логиниться в систему, присваивает его группе vmail, а так же создает ему домашнюю директорию /home/vmail
sudo apt-get install postfix postfix-mysql postfix-tls libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl |
В процессе установки Postfix сервера вначале система выведет на экран окно с информацией, после чего потребуется выбрать пункт ‘Internet Site’.
На вопрос о имени имя вашего почтового домена mail.domen1.com.
Для начала создадим базу данных с оригинальным названием — mail.
mysqladmin -u root -p create mail |
В процессе выполнения команды система вас попросит ввести пароль администратора MySQL (вы его ввели при инсталляции MySQL).
Далее залогинимся в MySQL и создадим несколько таблиц.
mysql -u root -p |
Для начала создадим пользователя БД, для наших целей.
CREATE USER ‘mailadmin’ @ ‘localhost’ IDENTIFIED BY ‘MyPasswordHere’ ; |
Замените MyPasswordHere на свой собственный пароль.
Далее, дадим этому пользователю необходимые привилегии:
FLUSH PRIVILEGES ;
GRANT SELECT , INSERT , UPDATE , DELETE ON `mail` . * TO ‘mailadmin’ @ ‘localhost’ ;
FLUSH PRIVILEGES ;
1. Теперь мы можем выбрать нашу БД mail и создать необходимые таблицы.
USE mail; |
Необходимо создать три таблицы для хранения почтовых доменов, пользователей и деталей доставки сообщений (форвардинг сообщений).
Таблица доменов. В Mysql введите следующие команды:
CREATE TABLE domains (
domain varchar (50) NOT NULL ,
PRIMARY KEY (domain)
TYPE=MyISAM;
Таблица пользователей. Как раньше, введите в MySQL:
CREATE TABLE users (
email varchar (80) NOT NULL ,
password varchar (20) NOT NULL ,
PRIMARY KEY (email)
TYPE=MyISAM;
CREATE TABLE forwards (
source varchar (80) NOT NULL ,
destination TEXT NOT NULL ,
PRIMARY KEY (source)
TYPE=MyISAM;
Теперь можно выйти из MySQL.
Для того, чтобы Postfix мог использовать таблицы MySQL, необходимо создать несколько настроечных файлов.
Создадим текстовый файл:
sudo nano /etc/postfix/mysql-domains.cf |
Введем следующие строки:
user = mailadmin
password = MyPasswordHere
dbname = mail
query = SELECT domain AS virtual FROM domains WHERE domain=’%s’
hosts = 127.0.0.1
MyPasswordHere надо заменить на введенный при создании пользователя БД mailadmin пароль.
sudo nano /etc/postfix/mysql-forwards.cf |
user = mailadmin
password = MyPasswordHere
dbname = mail
query = SELECT destination FROM forwards WHERE source =’%s’
hosts = 127.0.0.1
Каждый домен имеет множество различных почтовых ящиков. Этот скрипт получает правильные характеристики почтового ящика.
sudo nano /etc/postfix/mysql-mailboxes.cf
user = mailadmin
password = MyPasswordHere
dbname = mail
query = SELECT CONCAT(SUBSTRING_INDEX(email,’@’,-1),’/’,SUBSTRING_INDEX(email,’@’,1),’/’) FROM users WHERE email=’%s’
hosts = 127.0.0.1
И наконец создадим файл адресов.
sudo nano /etc/postfix/mysql-email.cf
user = mailadmin
password = MyPasswordHere
dbname = mail
query = SELECT email FROM users WHERE email=’%s’
hosts = 127.0.0.1
Эти четыре файла позволят Postfix-у получить доступ к информации в базе данных mail и присвоить корректные данные каждому письму.
Установим нужные права:
sudo chmod o= /etc/postfix/mysql-* |
(другие группы не имеют доступа к файлам.
И сменим владельца:
sudo chgrp postfix /etc/postfix/mysql-* |
Postfix должен иметь к ним доступ.
Теперь настроим Postfix
Отредактируем файл настроек Postfix:
sudo nano /etc/postfix/main.cf |
Обычно нижняя часть файла выглядит так:
myhostname = mail.domen1.com
alias_maps = hash :/etc/aliases
alias_database = hash :/etc/aliases
myorigin = /etc/mailname
mydestination =
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
Убедитесь, что mydestination не сделано присвоение.
Добавим ссылки на созданные файлы настроек, чтобы Postfix использовал их в процессе работы. В конец файла добавьте строки:
virtual_alias_domains =
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-forwards.cf, mysql:/etc/postfix/mysql-email.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-domains.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-mailboxes.cf
virtual_mailbox_base = /home/vmail
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps
Дальше нужно настроить безопасное соединение.
Saslauthd требуется для того, чтобы устанавливать безопасные соединения с вашим почтовым сервером.
Посмотрим основной файл настроек программы:
sudo nano /etc/default/saslauthd |
Первым делом надо установить автоматический запуск демона (поменяйте значение на ‘yes’. По умолчанию стоит ‘no’):
# Should saslauthd run automatically on startup? (default: no)
START= yes
Далее нужно изменить некоторые опции в конце файла. По умолчанию они выглядят так:
# Example for postfix users: «-c –m /var/spool/postfix/var/run/saslauthd»
OPTIONS= «-c -m /var/run/saslauthd»
Изменим их следующим образом :
# Example for postfix users: «-c -m /var/spool/postfix/var/run/saslauthd»
OPTIONS= «-c -m /var/spool/postfix/var/run/saslauthd -r»
Мы только что указали каталог, который не существует в природе. Непорядок. Устраним это:
sudo mkdir -p /var/spool/postfix/var/run/saslauthd |
Мы используем MySQL для хранения наших идентификационных данных. Точнее не наших, а пользователей сервера. Значит процесс авторизации должен знать, где брать данные.
Создадим два файла, чтобы процесс мог получить доступ к базе данных и добыть необходимую ему информацию:
sudo nano /etc/pam.d/smtp |
Добавим в этот файл следующий текст:
auth required pam_mysql.so user=mailadmin passwd =MyPasswordHere host=127.0.0.1 db=mail table= users usercolumn=email passwdcolumn=password crypt=1
account sufficient pam_mysql.so user=mailadmin passwd =MyPasswordHere host=127.0.0.1 db=mail table= users usercolumn=email passwdcolumn=password crypt=1
Это позволит процессу авторизации иметь доступ к БД для проверки пароля и e-mail-а.
sudo nano /etc/postfix/sasl/smtpd.conf |
Его содержимое следующее:
pwcheck_method: saslauthd
mech_list: plain login
allow_plaintext: true
auxprop_plugin: mysql
sql_hostnames: 127.0.0.1
sql_user: mailadmin
sql_passwd: MyPasswordHere
sql_database: mail
sql_select: select password from users where email = ‘%u’
Для того, чтобы Postfix мог получить доступ к процессу Saslauthd, добавим пользователя Postfix в группу Saslauthd
sudo adduser postfix sasl |
sudo /etc/init.d/postfix restart
sudo /etc/init.d/saslauthd restart
Создадим сертификат безопасности. По умолчанию он будет создан в каталоге /etc/ssl/certs.
sudo make -ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/ssl/certs/mailcert.pem |
В процессе создания, вам зададут несколько вопросов. Ответить можно, например так:
Country Name — UA
State or Province —
Locality name — Kiev
Organisation Name — MyGreat Company
Organisational Unit Name — Mail
Hostname — mail.domen1.com
Email address — admin@domen1.com
Важно, чтобы Hostname совпадал с именем mail server-а — hostname. В нашем случае, это mail.domen1.com.
Мы создали самоподписанный сертификат здесь:
/etc/ssl/certs/mailcert.pem |
Теперь требуется отредактировать главный файл настроек Postfix:
sudo nano /etc/postfix/main.cf |
Найдите секцию 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:$
smtp_tls_session_cache_database = btree:$
Стираем их полностью. И вставляем вместо них следующие:
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/ssl/certs/mailcert.pem
smtpd_tls_key_file = $smtpd_tls_cert_file
Тем самым мы активировали безопасные соединения, перечислили, какие соединения будем принимать, и, наконец, указали путь к сертификату.
Установим Courier который позволит нам получить POP3 и IMAP доступ к нашей почте.
sudo apt-get install courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl |
Во время установки вам будет задан вопрос, нужно ли создать директории. Правильный ответ — НЕТ
Для начала отредактируем файл:
sudo nano /etc/courier/authdaemonrc |
authmodulelist= «authpam» |
authmodulelist= «authmysql» |
Далее редактируем файл с деталями БД /etc/courier/authmysqlrc:
MYSQL_SERVER localhost
MYSQL_USERNAME mailadmin
MYSQL_PASSWORD MyPasswordHere
MYSQL_PORT 0
MYSQL_DATABASE mail
MYSQL_USER_TABLE users
MYSQL_CRYPT_PWFIELD password
MYSQL_UID_FIELD 5000
MYSQL_GID_FIELD 5000
MYSQL_LOGIN_FIELD email
MYSQL_HOME_FIELD «/home/vmail»
MYSQL_MAILDIR_FIELD CONCAT(SUBSTRING_INDEX(email,’@’,-1),’/’,SUBSTRING_INDEX(email,’@’,1),’/’)
После изменения файлов настроек, требуется рестартовать демоны:
sudo /etc/init.d/courier-authdaemon restart
sudo /etc/init.d/courier-imap restart
sudo /etc/init.d/courier-imap-ssl restart
sudo /etc/init.d/courier-pop restart
sudo /etc/init.d/courier-pop-ssl restart
Нужно заполнить таблички в MySQL, чтобы все то, что мы настроили ранее заработало.
Логинимся в MySQL:
mysql -u root -p |
Выбираем базу данных:
USE mail; |
Заполняем таблицу доменов:
INSERT INTO `domains` (`domain`) VALUES ( ‘domen1.com’ ); |
Чтобы ввести любой другой домен, выполните аналогичную команду:
INSERT INTO `domains` (`domain`) VALUES ( ‘domen2.ru’ ); |
Заполняем таблицу пользователей:
INSERT INTO `users` (`email`, ` password `) VALUES ( ‘admin@domen1.com’ , ENCRYPT( ‘secretpassword’ )); |
Остальные пользователи вводятся аналогично:
INSERT INTO `users` (`email`, ` password `) VALUES ( ‘kot@domen2.ru’ , ENCRYPT( ‘secretpassword’ )); |
Когда все таблицы заполнены — выходим из ведения БД:
sudo postfix reload |
Для проверки работоспособности нужно отправить письмо на наш адрес
mail admin@domen1.com |
Через какое-то время проверьте папку /home/vmail:
ls /home/vmail |
Увидите новый каталог:
/home/vmail/domen1.com |
А для каждого пользователя домена domen1.com в папке /home/vmail/domen1.com будет создан собственный каталог с письмами.
Осталось обеспечить возможность проверки почты с помощью WEB клиента.
Наиболее известным бесплатным и свободно распространяемым продуктом для этого является Squirrelmail.
sudo apt-get install squirrelmail squirrelmail-locales php-pear php5-cli |
Скорее всего сразу после инсталляции ваш веб-клиент будет доступен по адресу: www.domen1.com/squirrelmail (www.domen1.com — ваш домен)
Если это не так, то нужно проделать следующее:
sudo cp /etc/squirrelmail/apache.conf /etc/apache2/sites-available/squirrelmail
sudo a2ensite squirrelmail
Тем самым мы копируем файл конфигурации по умолчанию в папку доступных сайтов Apache, после чего активируем его.
Теперь он точно будет доступен по адресу www.domen1.com/squirrelmail. Но это не совсем удобно.
Поэтому проделаем следующее:
sudo nano /etc/apache2/sites-available/squirrelmail |
Закомментируем следующие строки в файле настроек:
# alias /squirrelmail /usr/share/squirrelmail |
Уберем символы комментария в начале строк со следующего блока:
# users will prefer a simple URL like http://webmail.example.com
DocumentRoot /usr/share/squirrelmail
ServerName webmail.domen1.com
Если для вашего сервера apache активирован SSL, то можно убрать комментарии с секции mod_rewrite для того, чтобы обеспечить наилучшую безопасность системы.
Сохраните файл. Потом проверьте настройки apache:
sudo apache2ctl -t |
Если все нормально — перегрузите apache:
sudo /etc/init.d/apache2 reload |
Теперь мы можете заходить как domain1.com/squirrelmail/ или webmail.domain1.com если предпочитаете виртуальный хост.
Настроим squirrelmail, чтобы вы могли не только увидеть его стартовую страничку, но и проверить свою почту.
sudo squirrelmail-configure |
Откроется интерфейс конфигурации веб-клиента.
Нажмите 2 (+Enter) чтобы войти в секцию настроек сервера. Нажмите A, чтобы редактировать настройки IMAP.
Нажмите 8 чтобы изменить программу авторизации. введите courier.
courier |
Теперь нажмем 7, чтобы изменить настройки безопасности secure IMAP. Введите Y для активации.
Введите 5 для редактирования порта IMAP. Введите значение 993.
Нажмите S для сохранения настроек. И «Enter».
Нажмите Q, чтобы выйти из программы настроек.
Источник