Оглавление:
Все команды мы будем выполнять от имени пользователя root, поэтому мы не будем использовать в командах sudo для повышения прав, если вы выполняете под своим пользователям добавляйте sudo в начале команды.
Пример:
sudo apt-get update
Необходимо чтобы был установлен mysql server | apache2 | php, если его нет необходимо установить:
apt-get install mysql-server
apt-get install apache2
apt-get install php php-mysql mcrypt php-mcrypt php-curl
phpenmod mcrypt && a2enmod ssl && a2enmod rewrite && apt install php-mbstring && service apache2 restart
Также мы будем использовать Midnight Commander, если у вас его нет необходимо установить следующей командой:
apt-get update
apt-get install mc
Краткая справка по командам MC:
Краткая справка по работе в shell - консоли unix | linux:
* Все команды будут выполняться от имени root, если вы выполняете под своим пользователям добавляйте sudo в начале команды.
apt-get update
apt-get install exim4 exim4-base exim4-config exim4-daemon-heavy
apt-get install dovecot-common dovecot-imapd dovecot-pop3d dovecot-mysql
apt-get install php-imap
Создание пользователя для работы с почтой:
useradd -r -u 1150 -g mail -d /var/vmail -s /sbin/nologin -c 'Virtual Mailbox' vmail
mkdir -p /var/vmail
chown vmail:mail /var/vmail
chmod 770 /var/vmail
Создание базы mysql
* Необходимо чтобы был установлен mysql-server, введите команды ниже и пароль от пользователя root в mysql.
mysql -u root -p
Enter password:
* Необходимо заменить MysqlPasswordForMailBase на ваш пароль cгенерированный либо придуманный для пользователя mail в mysql:
CREATE DATABASE mail;
GRANT ALL PRIVILEGES ON mail.* TO mail@localhost IDENTIFIED BY 'MysqlPasswordForMailBase';
exit
http://postfixadmin.sourceforge.net/
Переходим в директорию
cd /var/www/
* Пример команды скачивания файла в текущую директорию:
wget https://sourceforge.net/projects/postfixadmin/files/postfixadmin/postfixadmin-3.1/postfixadmin-3.1.tar.gz/download
Переименовываем полученный файл в postfixadmin.tar.gz:
mv download postfixadmin.tar.gz
Распаковываем файл:
tar -xzvf /var/www/postfixadmin.tar.gz
Промотрим список директорий и файлов в текущей папке:
ls -l
Переименовываем папку в postfixadmin, имя вашей папки может отличаться смотрите результат команды ls -l:
mv postfixadmin-3.1 postfixadmin
Переходим в директорию и выставляем права 770 и владельца root:www-data, на директорию postfixadmin также нужно выставить такие значения:
chown www-data:www-data /var/www/postfixadmin
chmod 770 /var/www/postfixadmin
cd /var/www/postfixadmin/
chown -R www-data:www-data .
chmod -R 770 *
Настраиваем apache:
cd /etc/apache2/conf-enabled
:>postfixadmin.conf
Вставляем в файл:
Alias /postfix /var/www/postfixadmin
<Directory "/var/www/postfixadmin">
Options FollowSymLinks
DirectoryIndex index.php
Require all granted
</Directory>
Перезапускаем Apache:
service apache2 restart
dpkg-reconfigure exim4-config
1. Тип конфигурации
интернет-сайт; приём и отправка почты напрямую, используя SMTP
internet site; mail is sent and received directly using SMTP
2. Почтове имя
mydomain.ru
3. Список IP-адресов, с которых Exim ожидает подключение
Оставляем пустым – ждем почту с любых адресов
4. Список доменов получателей
mydomain.ru;mydomain2.ru
5. Домены для релея
Оставляем пустым – не будем релеить почту.
6. IP-адреса, с которых разрешён релей.
Оставляем пустым.
7. Сокращать кол-во DNS-запросов до минимума
Нет
8. Место доставки локальной почты
mbox формат в /var/mail/
9. Разделить конфигурацию на маленькие файлы
Нет
10. Получатель почты, адресованной root и postmaster
root
Копируем в файл exim4.conf содержимое нижнего блока:
Для начала создадим файл:
cd /etc/exim4/
:>exim4.conf
* Необходимо заменить MysqlPasswordForMailBase на пароль от вашего пользователя mail в mysdl который мы создали выше и заменить mydomain.ru на ваш:
disable_ipv6=true
primary_hostname = mydomain.ru
qualify_domain = mydomain.ru
qualify_recipient = mydomain.ru
hide mysql_servers = localhost/mail/mail/MysqlPasswordForMailBase
DOMAIN_QUERY = SELECT domain FROM domain WHERE \
domain='${domain}' AND active='1'
domainlist local_domains = ${lookup mysql{DOMAIN_QUERY}}
domainlist relay_to_domains = ${lookup mysql{DOMAIN_QUERY}}
hostlist relay_from_hosts = localhost:127.0.0.1/8
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data
spamd_address = 127.0.0.1 783
av_scanner = clamd:/var/run/clamav/clamd.ctl
daemon_smtp_ports = 25 : 465
never_users = root
rfc1413_query_timeout = 0s
ignore_bounce_errors_after = 1d
timeout_frozen_after = 14d
log_selector = \
+all_parents \
+connection_reject \
+incoming_interface \
+lost_incoming_connection \
+received_sender \
+received_recipients \
+smtp_confirmation \
+smtp_syntax_error \
+smtp_protocol_error \
-queue_run
begin acl
acl_check_rcpt:
accept hosts = :
deny message = Restricted characters in address
domains = +local_domains
local_parts = ^[.] : ^.*[@%!/|]
deny message = Restricted characters in address
domains = !+local_domains
local_parts = ^[./|] : ^.*[@%!] : ^.*/\\.\\./
accept local_parts = postmaster
domains = +local_domains
require verify = sender
accept hosts = +relay_from_hosts
control = submission
require message = relay not permitted
domains = +local_domains : +relay_to_domains
require verify = recipient
accept
acl_check_data:
warn malware = *
message = This message contains a virus ($malware_name).
warn spam = root
add_header = X-Spam-Flag: YES\n\
X-Spam_score: $spam_score\n\
X-Spam_score_int: $spam_score_int\n\
X-Spam_bar: $spam_bar\n\
X-Spam_report: $spam_report
accept
begin routers
dnslookup:
driver = dnslookup
domains = ! +local_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
no_more
system_aliases:
driver = redirect
allow_fail
allow_defer
data = ${lookup mysql{SELECT goto FROM alias WHERE \
address='${quote_mysql:$local_part@$domain}' OR \
address='${quote_mysql:@$domain}'}}
dovecot_user:
driver = accept
condition = ${lookup mysql{SELECT goto FROM \
alias WHERE \
address='${quote_mysql:$local_part@$domain}' OR \
address='${quote_mysql:@$domain}'}{yes}{no}}
transport = dovecot_delivery
begin transports
remote_smtp:
driver = smtp
dovecot_delivery:
driver = pipe
command = /usr/lib/dovecot/deliver -d $local_part@$domain
message_prefix =
message_suffix =
delivery_date_add
envelope_to_add
return_path_add
log_output
user = vmail
address_pipe:
driver = pipe
return_output
address_reply:
driver = autoreply
begin retry
* * F,2h,15m; G,16h,1h,1.5; F,4d,6h
begin rewrite
begin authenticators
auth_plain:
driver = plaintext
public_name = PLAIN
server_prompts = Username:: : Password::
server_condition = ${if crypteq{$auth3}{${lookup mysql{SELECT password FROM \
mailbox WHERE username = '${quote_mysql:$auth2}'}}}{yes}{no}}
server_set_id = $auth2
auth_login:
driver = plaintext
public_name = LOGIN
server_condition = ${if crypteq{$auth2}{${lookup mysql{SELECT password FROM \
mailbox WHERE username = '${quote_mysql:$auth1}'}}}{yes}{no}}
server_prompts = Username:: : Password::
server_set_id = $auth1
auth_cram_md5:
driver = dovecot
public_name = CRAM-MD5
server_socket = /var/run/dovecot/auth-client
server_set_id = $auth2
Обнулим содержимое файла:
cd /etc/dovecot/
:>dovecot.conf
* Необходимо заменить MysqlPasswordForMailBase на пароль от вашего пользователя mail в mysdl который мы создали выше:
auth_mechanisms = plain login digest-md5 cram-md5
disable_plaintext_auth = no
first_valid_gid = 0
first_valid_uid = 1150
info_log_path = /var/log/dovecot.log
last_valid_uid = 1150
listen = *
log_path = /var/log/dovecot.log
mail_location = maildir:/var/vmail/%d/%u
mail_privileged_group = mail
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date ihave
maildir_copy_with_hardlinks = yes
passdb {
args = /etc/dovecot/dovecot-sql.conf
driver = sql
}
protocols = pop3 imap sieve
auth_verbose = yes
auth_debug = yes
auth_debug_passwords = yes
auth_username_format = %Lu
service auth {
unix_listener auth-client {
group = mail
mode = 0777
user = vmail
}
unix_listener auth-master {
group = mail
mode = 0777
user = vmail
}
user = root
}
service imap-login {
chroot = login
executable = /usr/lib/dovecot/imap-login
process_limit = 128
process_min_avail = 3
service_count = 1
user = dovecot
vsz_limit = 64 M
}
service imap {
executable = /usr/lib/dovecot/imap
}
service managesieve-login {
chroot = login
inet_listener sieve {
address = 127.0.0.1
port = 4190
}
process_limit = 128
process_min_avail = 3
service_count = 1
user = dovecot
vsz_limit = 64 M
}
service pop3-login {
chroot = login
executable = /usr/lib/dovecot/pop3-login
process_limit = 128
process_min_avail = 3
service_count = 1
user = dovecot
vsz_limit = 64 M
}
service pop3 {
executable = /usr/lib/dovecot/pop3
}
ssl = no
userdb {
args = /etc/dovecot/dovecot-sql.conf
driver = sql
}
verbose_proctitle = yes
protocol imap {
imap_max_line_length = 64 k
}
protocol pop3 {
pop3_uidl_format = %08Xu%08Xv
}
protocol lda {
auth_socket_path = /var/run/dovecot/auth-master
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
log_path = /var/log/dovecot-sieve.log
mail_plugins = "autocreate sieve"
postmaster_address = postmaster@dreamclever.ru
}
namespace {
type = private
separator = /
prefix =
#location defaults to mail_location.
inbox = yes
mailbox Sent {
auto = subscribe
special_use = \Sent
}
mailbox Drafts {
auto = subscribe
special_use = \Drafts
}
mailbox Trash {
auto = subscribe
special_use = \Trash
}
mailbox Junk {
auto = subscribe
special_use = \Junk
}
}
plugin {
autocreate = Trash
autocreate2 = Junk
autocreate3 = Drafts
autocreate4 = Sent
sieve = /var/vmail/%d/%n/dovecot.sieve
sieve_before = /var/vmail/sieve/dovecot.sieve
sieve_dir = /var/vmail/%d/%n
sieve_global_dir = /var/vmail/sieve
}
Копируем в файл /etc/dovecot/dovecot-sql.conf содержимое нижнего блока
Создаим файл конфигурации:
cd /etc/dovecot/
:>dovecot-sql.conf
* Необходимо заменить MysqlPasswordForMailBase на пароль от вашего пользователя mail в mysdl который мы создали выше:
driver = mysql
connect = host=localhost dbname=mail user=mail password=MysqlPasswordForMailBase
default_pass_scheme = MD5-CRYPT
password_query = SELECT username as user, password, '/var/vmail/%d/%n' as userdb_home, 'maildir:/var/vmail/%d/%n' as userdb_mail, 1150 as userdb_uid, 8 as userdb_gid FROM mailbox WHERE username = '%u' AND active = '1'
user_query = SELECT '/var/vmail/%d/%n' as home, 'maildir:/var/vmail/%d/%n' as mail, 1150 AS uid, 8 AS gid, concat('dirsize:storage=', quota) AS quota FROM mailbox WHERE username = '%u' AND active = '1'
Необходимо создать dovecot-sieve.log в директории /var/log и выставить владельца и права:
cd /var/log/
:>dovecot-sieve.log
chown mail:mail /var/log/dovecot-sieve.log
chmod 660 /var/log/dovecot-sieve.log
Для dovecot.log аналогично:
cd /var/log/
:>dovecot.log
chown mail:mail /var/log/dovecot.log
chmod 660 /var/log/dovecot.log
apt-get install spamassassin
Обнулим содержимое файла конфигурации:
cd /etc/spamassassin/
:>local.cf
Копируем в файл /etc/spamassassin/local.cf содержимое нижнего блока:
# Add *****SPAM***** to the Subject header of spam e-mails
#
# rewrite_header Subject *****SPAM*****
# Save spam messages as a message/rfc822 MIME attachment instead of
# modifying the original message (0: off, 2: use text/plain instead)
#
# report_safe 1
# Set which networks or hosts are considered 'trusted' by your mail
# server (i.e. not spammers)
#
# trusted_networks 212.17.35.
# Set the threshold at which a message is considered spam (default: 5.0)
#
required_score 4.5
# Use Bayesian classifier (default: 1)
#
# use_bayes 1
# Bayesian classifier auto-learning (default: 1)
#
# bayes_auto_learn 1
bayes_path /var/spamassassin/bayes
# Set headers which may provide inappropriate cues to the Bayesian
# classifier
#
# bayes_ignore_header X-Bogosity
# bayes_ignore_header X-Spam-Flag
# bayes_ignore_header X-Spam-Status
# Some shortcircuiting, if the plugin is enabled
ifplugin Mail::SpamAssassin::Plugin::Shortcircuit
endif # Mail::SpamAssassin::Plugin::Shortcircuit
После установки он по умолчанию выключен.
Поэтому открываем файл /etc/default/spamassassin и меняем строку:
ENABLED=1
sa-learn --rebuild
#Создать базы обучения
apt-get install clamav-daemon clamav-freshclam clamav-testfiles
adduser clamav Debian-exim
chmod -R g+w /var/spool/exim4
chmod -R g+s /var/spool/exim4
Выполним команду для просмотра прав:
ls -ld /var/spool/exim4/
Результат должен быть похож на:
drwxr-x— 5 Debian-exim Debian-exim 4096 2010-02-15 22:36 /var/spool/exim4/
Перезапустим clamav
/etc/init.d/clamav-daemon restart
Дополнительно поставить модуль dovecot:
apt-get install dovecot-sieve dovecot-managesieved
И просмотрим статус работы:
ps aux | grep -v grep | grep managesieve-login
netstat -an | grep LISTEN | grep :4190
Переходим по адресу mydomain.ru/postfix и нажимаем setup, нам отображается сообщение:
Please edit config.inc.php - change $CONF['configured'] to true after setting your database settings
Проходим в настройки и устанавливаем данное значение.
$CONF['configured'] = true;
Также находим строчки с подключением к базе и меняем на имя нашей базы и пароль от неё.
$CONF['database_user'] = 'mail';
$CONF['database_password'] = 'MysqlPasswordForMailBase';
$CONF['database_name'] = 'mail';
Прокручиваем страницу в конец и здесь нам предлагают установить пароль для установки (Change setup password), придумываем любой пароль.
* Важно: пароль должен содержать минимум три буквы.
После установки пароля нам необходимо скопировать сгенерированный hash скопировать в настройки (config.inc.php), у вас он будет другой не копируйте наше значение.
#If you want to use the password you entered as setup password, edit config.inc.php or config.local.php and set
$CONF['setup_password'] = '9cc4dd85618026504cb72654d4d95fa1:4d9965ff805c3f72b0f50b711329e4d5f20ab8ad';
Далее вводим наш пароль который мы придумали (не hash).
Логин админстратора пример: root@dka-develop.ru
И придумываем для администратора пароль, с этими данными мы будем заходить в администрование почтовых ящиков.
Нажимаем Add Admin, и нас поздравят с основной настройкой postfixadmin:
The admin root@dka-develop.ru has been added!
You are done with your basic setup.
You can now login to PostfixAdmin using the account you just created.
Переходим по ссылке с именем login to PostfixAdmin и входим с логином и паролем от нашего супер админа root@dka-develop.ru.
Далее переходим в список доменов, добавить домен:
Домен: dka-develop.ru
Алисы: 0
Ящики: 0
Активен: да
Стандартные алиасы: да
Обзор, создать ящик:
Имя: название ящика пример info
Домен: выбираем из списка, если один то он уже по умолчанию выбран
Пароль: придумываем любой пароль
Имя: заполнять не обязательно, но можно добавить чтобы было понятно назначение пример: Информационный
Квота: ограничение размера ящика, оставить пустым, если нет ограничений
Ящик создан и письмо отправлено, давайте посмотрим в директории /var/vmail/dka-develop.ru/info/new наше письмо.
* dka-develop.ru это наш путь у вас свой домен.
Все работает осталось немного, установить и настроить roundcube для просмотра и отправки писем, это почтовый клиент на подобее outlook, the bat... только в веб-интефейсе на подобее gmail.
Переходим на сайт https://roundcube.net/ и скачиваем последнюю версию * - Complete.
* Название файла может не совпадать, вы можете скачать другую версию, будьте внимательно и подставляйте свою версию.
cd /var/www
wget https://github.com/roundcube/roundcubemail/releases/download/1.3.0/roundcubemail-1.3.0-complete.tar.gz
tar -xzvf /var/www/roundcubemail-1.3.0-complete.tar.gz
ls -l
mv roundcubemail-1.3.0 roundcubemail
Переходим в директорию и выставляем права 770 и владельца root:www-data или вашпользователь:www-data, на директорию roundcubemail также нужно выставить такие значения:
chown www-data:www-data /var/www/roundcubemail
chmod 770 /var/www/roundcubemail
cd /var/www/roundcubemail/
chown -R www-data:www-data .
chmod -R 770 *
Настраиваем apache:
cd /etc/apache2/conf-enabled
:>roundcubemail.conf
Вставляем в файл:
Alias /webmail /var/www/roundcubemail
<Directory "/var/www/roundcubemail">
Options FollowSymLinks
DirectoryIndex index.php
Require all granted
</Directory>
Перезапускаем Apache:
service apache2 restart
Создадим базу для roundcubemail, подключаемся под root пользователем mysql, не путать root в системе linux (ubuntu|debian ...):
mysql -u root -p
Enter password:
Вводим пароль, затем выполняем команды, MysqlPasswordForMailBase необходимо заменить на свой пароль, этот пароль мы будем вводить дальше в конфигурации для подключения:
CREATE DATABASE roundcube;
GRANT ALL PRIVILEGES ON roundcube.* TO roundcube@localhost IDENTIFIED BY 'MysqlPasswordForMailBase';
exit
Переходим по адресу, где dka-develop.ru это ваш домен: http://dka-develop.ru/webmail/installer/
На первом шаге нажимаем Next и здесь нас интересует:
Database setup:
Database type: Mysql
Database server: localhost
Database name: roundcube
Database user: roundcube
Database pass: MyPassword11 # пароль который мы создавали выше
Language:
language: ru_RU
htmleditor: always
Плагины:
managesieve, markasjunk, newmail_notifier, zipdownload.
Нажимаем Create Config. Нам сообщают что конфиг успешно создан, нажимаем Continue (Продолжить):
The config file was saved successfully into RCMAIL_CONFIG_DIR directory of your Roundcube installation.
Нажимаем Initialized Database.
Переходим в диреторию roundcubeamail и открываем файл конфигурации config.inc.php:
cd /var/www/roundcubemail/config
И добавьте в конец следующие строчки:
$config['imap_auth_type'] = 'PLAIN';
$config['managesieve_port'] = 4190;
$config['managesieve_host'] = 'localhost';
$config['managesieve_mbox_encoding'] = 'UTF-8';
$config['newmail_notifier_basic'] = true;
$config['enable_installer'] = false;
Для безопасности необходимо удалить папку installer:
rm -r /var/www/roundcubemail/installer
Переходим по адресу, где dka-develop.ru это ваш домен: http://dka-develop.ru/webmail/
И входим под нашим пользователем info@dka-develop.ru
На этом все настройка почтового сервера завершена.
ClamAV returned lstat() failed: Permission denied. ERROR
Нужно в конфигурационных файлах
/etc/clamav/freshclam.conf
/etc/clamav/clamd.conf
изменить параметр на "yes":
AllowSupplementaryGroups yes
Подписывайтесь на наш канал в YouTube, ведь это ещё не конец!