Решением данной задачи я хочу добиться проходом по всем шагам ручного исполнения по установки малого почтового сервера в малой компании под управлением Postfix, где в качестве управления им будет использоваться Webинтерфейс или не забываем кто хочет использовать обычную консоль командной строки.

Обновляю систему до актуального состояни:

ekzorchik@srv-serv:~$ sudo apt-get update && sudo apt-get upgrade -y

Apparmor отключен

IPv6 – отключен

Корректирую полное (FQDN) имя системы:

ekzorchik@srv-serv:~$ sudo nano /etc/hostname

srv-serv.polygon.local

ekzorchik@srv-serv:~$ sudo nano /etc/hosts

192.168.1.50 srv-serv.polygon.local srv-serv

ekzorchik@srv-serv:~$ sudo service hostname start

hostname stop/waiting

После делаю Logoff / Logon для принятия изменений

Проверяю:

ekzorchik@srv-serv:~$ hostname

srv-serv.polygon.local

Т.к. данная система будет являться почтовым сервером, то понадобиться правильно настроить DNS с этой задачей в малой сети прекрасно справится пакет dnsmasq:

ekzorchik@srv-serv:~$ sudo apt-get install dnsmasq -y

ekzorchik@srv-serv:~$ sudo nano /etc/dnsmasq.conf

interface=eth1

domain=polygon.local

server=/polygon.local/192.168.1.50

server=/1.168.192.in-addr.arpa/192.168.1.50

mx-host=polygon.local,srv-serv.polygon.local,10

ptr-record=50.1.168.192.in-addr.arpa,"srv-serv.polygon.local"

ekzorchik@srv-serv:~$ sudo service dnsmasq restart

* Restarting DNS forwarder and DHCP server dnsmasq [ OK ]

ekzorchik@srv-serv:~$ nslookup srv-serv.polygon.local

Server: 127.0.0.1

Address: 127.0.0.1#53

Name: srv-serv.polygon.local

Address: 192.168.1.50

Устанавливаем простую конфигурацию почтового сервере на базе postfix:

ekzorchik@srv-serv:~$ sudo apt-get install mail-server^ -y

General type of mail configuration: Internet Site

System mail name:srv-serv.polygon.local

После приводим настройки Postfix к адаптированному виду для работы в локальной сети:

ekzorchik@srv-serv:~$ sudo dpkg-reconfigure postfix

General type of mail configuration: Internet Site

System mail name:srv-serv.polygon.local

Root and postmaster mail recipient:postmaster

Other destinations to accept mail for (blank for none):srv-serv.polygon.local,polygon.local, localhost.polygon.local, , localhost

Force synchronous updates on mail queue? No

Local networks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.1.0/24

Use procmail for local delivery? Yes

Mailbox size limit (bytes): 0

Local address extension character: +

Internet protocols to use:ipv4

Далее нужно указать какой формат почтовых ящиков будет использоваться:

ekzorchik@srv-serv:~$ sudo postconf -e 'home_mailbox = Maildir/'

Далее настроим SMTP аутентификацию используя SASL (saslauthd), либо через утилиту postconf либо внося изменения посредством правки:

ekzorchik@srv-serv:~$ sudo nano /etc/postfix/main.cf

либо так:

ekzorchik@srv-serv:~$ sudo postconf -e 'smtpd_sasl_local_domain ='

ekzorchik@srv-serv:~$ sudo postconf -e 'smtpd_sasl_auth_enable = yes'

ekzorchik@srv-serv:~$ sudo postconf -e 'smtpd_sasl_security_options = noanonymous'

ekzorchik@srv-serv:~$ sudo postconf -e 'broken_sasl_auth_clients = yes'

ekzorchik@srv-serv:~$ sudo postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'

ekzorchik@srv-serv:~$ sudo postconf -e 'inet_interfaces = eth1'

Далее добавим следующие строки:

ekzorchik@srv-serv:~$ sudo nano /etc/postfix/sasl/smtpd.conf

pwcheck_method: saslauthd

mech_list: plain login

Далее задействуем сертификаты — создаю TLS сертификат:

ekzorchik@srv-serv:~$ touch smtpd.key

ekzorchik@srv-serv:~$ chmod 600 smtpd.key

ekzorchik@srv-serv:~$ openssl req -newkey rsa:2048 -keyout smtpd.key -x509 -days 3650 -out smtpd.crt

Generating a 2048 bit RSA private key

……………..+++

…………………………+++

unable to write ‘random state’

writing new private key to ‘smtpd.key’

Enter PEM pass phrase:712mbddr@

Verifying – Enter PEM pass phrase:712mbddr@

—–

Common Name (e.g. server FQDN or YOUR name) []:srv-serv.polygon.local

ekzorchik@srv-serv:~$ openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650

Generating a 1024 bit RSA private key

….++++++

………….++++++

unable to write ‘random state’

writing new private key to ‘cakey.pem’

Enter PEM pass phrase:712mbddr@

Verifying – Enter PEM pass phrase:712mbddr@

Common Name (e.g. server FQDN or YOUR name) []:srv-serv.polygon.local

ekzorchik@srv-serv:~$ sudo mv smtpd.key /etc/ssl/private/

ekzorchik@srv-serv:~$ sudo mv smtpd.crt /etc/ssl/certs/

ekzorchik@srv-serv:~$ sudo mv cakey.pem /etc/ssl/private/

ekzorchik@srv-serv:~$ sudo mv cacert.pem /etc/ssl/certs/

Донастраиваю Postfix на использованием TLS шифрования как для входящих так и исходящих сообщений:

ekzorchik@srv-serv:~$ sudo postconf -e 'smtpd_tls_security_level = may'

ekzorchik@srv-serv:~$ sudo postconf -e 'smtpd_tls_auth_only = no'

ekzorchik@srv-serv:~$ sudo postconf -e 'smtp_tls_note_starttls_offer = yes'

ekzorchik@srv-serv:~$ sudo postconf -e 'smtpd_tls_key_file = /etc/ssl/private/smtpd.key'

ekzorchik@srv-serv:~$ sudo postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt'

ekzorchik@srv-serv:~$ sudo postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem'

ekzorchik@srv-serv:~$ sudo postconf -e 'smtpd_tls_loglevel = 1'

ekzorchik@srv-serv:~$ sudo postconf -e 'smtpd_tls_received_header = yes'

ekzorchik@srv-serv:~$ sudo postconf -e 'smtpd_tls_session_cache_timeout = 3600s'

ekzorchik@srv-serv:~$ sudo postconf -e 'tls_random_source = dev:/dev/urandom'

ekzorchik@srv-serv:~$ sudo postconf -e 'myhostname = srv-serv.polygon.local'

Перезапускаю демон Postfix:

ekzorchik@srv-serv:~$ sudo service postfix restart

* Stopping Postfix Mail Transport Agent postfix postmulti: fatal: config variable inet_interfaces: host not found: eth1

[ OK ]

* Starting Postfix Mail Transport Agent postfix postmulti: fatal: config variable inet_interfaces: host not found: eth1

Правлю:

ekzorchik@srv-serv:~$ sudo nano /etc/postfix/main.cf

inet_interfaces = all

ekzorchik@srv-serv:~$ sudo service postfix restart

* Stopping Postfix Mail Transport Agent postfix [ OK ]

* Starting Postfix Mail Transport Agent postfix

Следующим шагом настраиваю POSTFIX использовать SASL для SMTP аутентификации:

(Saslauthd требуется для того, чтобы устанавливать безопасные соединения с вашим почтовым сервером)

ekzorchik@srv-serv:~$ sudo apt-get install libsasl2-2 sasl2-bin libsasl2-modules

ekzorchik@srv-serv:~$ sudo nano /etc/default/saslauthd

START=yes

PWDIR="/var/spool/postfix/var/run/saslauthd"

PARAMS="-m ${PWDIR}"

PIDFILE="${PWDIR}/saslauthd.pid"

MECHANISMS="pam"

OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"

ekzorchik@srv-serv:~$ sudo dpkg-statoverride --force --update --add root sasl 755 /var/spool/postfix/var/run/saslauthd

dpkg-statoverride: warning: –update given but /var/spool/postfix/var/run/saslauthd does not exist

это сообщение о том, что не существует такой директории просто игнорируем, потому как при следующем запуске saslauthd необходимые каталоги будут созданы

ekzorchik@srv-serv:~$ ls -l /var/spool/postfix/var

ls: cannot access /var/spool/postfix/var: No such file or directory

ekzorchik@srv-serv:~$ sudo /etc/init.d/saslauthd start

* Starting SASL Authentication Daemon saslauthd

Проверяю что каталоги созданы:

ekzorchik@srv-serv:~$ sudo apt-get install tree

ekzorchik@srv-serv:~$ tree /var/spool/postfix/var

/var/spool/postfix/var

└── run

└── saslauthd

├── cache.flock

├── cache.mmap

├── mux

├── mux.accept

└── saslauthd.pid

2 directories, 5 files

Теперь проверяем что отрабатываем SMTP-AUTH и TLS:

ekzorchik@srv-serv:~$ telnet localhost 25

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

220 srv-serv.polygon.local ESMTP Postfix (Ubuntu)

ehlo localhost → набираем эту строку

250-srv-serv.polygon.local

250-PIPELINING

250-SIZE 10240000

250-VRFY

250-ETRN

250-STARTTLS

250-AUTH PLAIN LOGIN

250-AUTH=PLAIN LOGIN

250-ENHANCEDSTATUSCODES

250-8BITMIME

250 DSN

quit

221 2.0.0 Bye

Connection closed by foreign host.

Если нужно использовать порт для SMTP 587 вместо 25, то (со строки 16 снимаем символ комментария):

ekzorchik@srv-serv:~$ sudo nano +16 /etc/postfix/master.cf

submission inet n - - - - smtpd

Перезапускаю Postfix для принятия настроек:

ekzorchik@srv-serv:~$ sudo service postfix restart

ekzorchik@srv-serv:~$ telnet localhost 587

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

220 srv-serv.polygon.local ESMTP Postfix (Ubuntu)

ehlo localhost

250-srv-serv.polygon.local

250-PIPELINING

250-SIZE 10240000

250-VRFY

250-ETRN

250-STARTTLS

250-AUTH PLAIN LOGIN

250-AUTH=PLAIN LOGIN

250-ENHANCEDSTATUSCODES

250-8BITMIME

250 DSN

quit

221 2.0.0 Bye

Connection closed by foreign host.

ekzorchik@srv-serv:~$ sudo netstat -tulpn | grep master

tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 1156/master

tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 1156/master

Следом устанавливаем пакет dovecot который даст возможность осуществлять клиентам доступ к почтовому ящику через IMAP, IMAPS, POP3, и POP3S.

ekzorchik@srv-serv:~$ sudo apt-get install dovecot-postfix -y

ekzorchik@srv-serv:~$ dovecot --version

2.0.19

ekzorchik@srv-serv:~$ sudo nano /etc/dovecot/dovecot.conf

login_trusted_networks = 192.168.1.0/24

ekzorchik@srv-serv:~$ sudo service dovecot restart

dovecot stop/waiting

dovecot start/running, process 2618

ekzorchik@srv-serv:~$

Далее устанавливаю Web-сервер Apache2 на систему в связке с LAMP (Linux,Apache,Mysql,PHP):

ekzorchik@srv-serv:~$ sudo apt-get install lamp-server^ -y

New password for the MySQL “root” user: 712mbddr@

Repeat password for the MySQL “root” user: 712mbddr@

Уменьшаем болтливость Web-сервера Apache 2:

ekzorchik@srv-serv:~$ sudo nano /etc/apache2/conf.d/security

ServerTokens Prod

ServerSignature Off

ekzorchik@srv-serv:~$ sudo service apache2 restart

С официального сайта скачиваю самую последнюю версия deb пакета postfixadmin

ekzorchik@srv-serv:~$ wget -c http://sourceforge.net/projects/postfixadmin/files/postfixadmin/postfixadmin-2.92/postfixadmin_2.92-1_all.deb

ekzorchik@srv-serv:~$ file postfixadmin_2.92-1_all.deb

postfixadmin_2.92-1_all.deb: Debian binary package (format 2.0)

Устанавливаю, но в процессе получаю сообщение в консоль что в системе отсутствуют некоторые зависимые пакеты:

ekzorchik@srv-serv:~$ sudo dpkg -i postfixadmin_2.92-1_all.deb

[sudo] password for ekzorchik:

Selecting previously unselected package postfixadmin.

(Reading database … 50122 files and directories currently installed.)

Unpacking postfixadmin (from postfixadmin_2.92-1_all.deb) …

dpkg: dependency problems prevent configuration of postfixadmin:

postfixadmin depends on dbconfig-common; however:

Package dbconfig-common is not installed.

postfixadmin depends on wwwconfig-common; however:

Package wwwconfig-common is not installed.

postfixadmin depends on php5-imap; however:

Package php5-imap is not installed.

dpkg: error processing postfixadmin (–install):

dependency problems – leaving unconfigured

Errors were encountered while processing:

postfixadmin

Устанавливаю их:

ekzorchik@srv-serv:~$ sudo apt-get install -f -y

в процессе установки понадобиться ответить на вопрос:

Web server to reconfigure automatically: apache2

Configure database for postfixadmin with dbconfig-common? Yes

Database type to be used by postfixadmin: mysql

Password of the database’s administrative user: 712mbddr@

MySQL application password for postfixadmin: 712mbddr@

Password confirmation: 712mbddr@

Если посмотреть основной конфиг /etc/postfixadmin/config.inc.php, то увидим что в нем используются переменные описанные в файле:

ekzorchik@srv-serv:~$ sudo nano /etc/postfixadmin/dbconfig.inc.php

$dbuser='postfixadmin';

$dbpass='712mbddr@';

$basepath='';

$dbname='postfixadmin';

$dbserver='';

$dbport='';

$dbtype='mysql';

это те переменные которые я указывал в процессе ответов на вопросы мастера установки.

По умолчанию если открыть браузер в качестве URL адреса указать полное FQDN имя сервера, то увидем надпись, что Web-сервер Apache 2 работает,

http://srv-serv.polygon.local

It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.

Поправим настройки чтобы в качестве главной страницы был Webинтерфейс администрирования почтовым сервером:

ekzorchik@srv-serv:~$ sudo ln -s /usr/share/postfixadmin/ /var/www/postfixadmin

ekzorchik@srv-serv:~$ sudo nano /etc/apache2/sites-available/default

<VirtualHost *:80>

ServerAdmin webmaster@localhost

DocumentRoot /var/www/postfixadmin

<Directory />

Options FollowSymLinks

AllowOverride All

</Directory>

ekzorchik@srv-serv:~$ sudo service apache2 restart

Теперь обновим Web страницу с открытым адресом: http://srv-serv.polygon.local получаем:

Web-интерфейс входа в PostfixAdmin

 

, но пока нам нечего вводить в требуемые поля, поэтому в строке URL указываем путь до элемента настройки:

http://srv-serv.polygon.local/postfixadmin/setup.php

в самом низу страницы указываем пароль, к примеру пусть будет: 712mbddr@ и нажимаем кнопку Generate password hash

Создаю хеш административного пароля

 

 

 

 

после чего полученный хеш нужно добавить в конфигурационный файл config.inc.php:

ekzorchik@srv-serv:~$ sudo nano +35 /etc/postfixadmin/config.inc.php

$CONF['setup_password'] = 'fd3e70c9a0666ee014b2e588099a277a:ddf1a6e2809fea767c1d4c48bbba4f2233d02eae';

после чего создаем администратора по управлению почтовым сервером:

Setup password: 712mbddr@

Admin: ekzorchik@ekzorchik.ru

Password: 712mbddr@

Password (again): 712mbddr@

И нажимаем кнопку — Add Admin

и получаю сообщение, что администратор с почтовым ящиком ekzorchik@ekzorchik.ru и паролем 712mbddr@ успешно стал Администратором почтового сервера:

The admin ekzorchik@ekzorchik.ru has been added!

Теперь в целях безопасности ограничим доступ к скрипту к панели настройки setup.php создадим файл .htaccess следующего содержания:

ekzorchik@srv-serv:~$ sudo nano /var/www/postfixadmin/.htaccess

<Files "setup.php">

deny from all

</Files>

ekzorchik@srv-serv:~$ sudo service apache2 reload

Теперь при обращении с панели настройки обратившийся получит сообщение:

Forbidden

You don’t have permission to access /postfixadmin/setup.php on this server.

А вот теперь можно и зайти на URL управления почтовым сервером, для этого в строке адреса браузера указываем: http://srv-serv.polygon.local/login.php вводим аутентификационные данные:

Login (email): ekzorchik@ekzorchik.ru

Password: 712mbddr@

Language: выбираю Русский — Russian

и нажимаю Login (Войти) и в случае правильного указания вы увидите сам Webинтерфейс администрирования.

Авторизовавшись попадаю в Административную часть

 

Первым делом создаю домен:

Список доменов — Новый домен –

Создаю новый домен polygon.local

 

После нажатия «Добавить домен» на основе указанной информации выше получаю хорошую новость: – Домен был добавлен! (polygon.local)

Теперь перейдя в список доменов можно управлять созданным почтовым доменом или завести новый домен:

Список доменов

Информация по созданному домену

 

Далее создадим еще один почтовый ящик в домене Polygon.local

Обзор — Создать ящик и заполняем поля:

Название: ekzorchik

домен: polygon.local

Пароль: (для POP3/IMAP) 712mbddr@

Пароль (еще раз, для POP3/IMAP): 712mbddr@

Имя: 712mbddr@

Квота: 2048Mb

Активен: да

Отправить приветственное письмо: да

По окончанию нажимаю Создать ящик» – Почтовый ящик был успешно создан! (ekzorchik@polygon.local)

Теперь настрою почтовый клиент (Outlook 2010) на доступ к созданному почтовому ящику ekzorchik@polygon.local на системе Windows XP x86

Настраиваю почтовую программу Outlook 2010 на созданный почтовый ящик

 

Не забываю указать через “Другие Настройки…” некоторые дополнения настроек

Дополнительные настройки почтового подключения к ящику

 

 

 

 

 

Указываю что почта будет хранится на сервере

Подключение к почтовому серверу

 

 

 

 

 

 

 

Теперь проверяю что настройки верны:

Проверяю что почтовый клиент успешно подключается к почтовому серверу

 

Через Webинтерфейс управления почтовым сервером отправляю письмо

http://srv-serv.polygon.local/ – послать письмо

Через Web-интерфейс Postfixadmin посылаю тестовое письмо

 

 

 

 

 

 

 

на созданный выше ящик и наблюдаю его в клиенте Outlook 2010, видно из скриншота ниже что было успешно доставлено письмо отправленное через Webинтерфейс, а клиент Outlook 2010 успешно его загрузил.

На созданный почтовый ящик письмо успешно доходит

 

 

 

 

 

и что ещё хорошо, если настраивать подключение к почтовому ящику через IMAP то тоже все нормально происходит.

Данной заметкой я подробно насколько возможно показал, как сделать простенький почтовый сервер на базе моей любимой операционной системе Ubuntu 12.04.5 Server amd64. Такой заметкой я поднимаюсь еще на один шаг к пониманию всего то что можно сделать работая в системе Ubuntu и способствованию стандартизации применяемых сервисов в малой компании где системный администратор, как правило преимущественно он один всю работу должен стандартизировать, чтобы обслуживать было проще. Не стоит разводить зоопарк различных операционных систем, я к примеру за легкость и единообразие. На этом все, не смею Вас задерживать — с уважением, автор блога — ekzorchik.

От ekzorchik

Всем хорошего дня, меня зовут Александр. Я под ником - ekzorchik, являюсь автором всех написанных, разобранных заметок. Большинство вещей с которыми мне приходиться разбираться, как на работе, так и дома выложены на моем блоге в виде пошаговых инструкции. По сути блог - это шпаргалка онлайн. Каждая новая работа где мне случалось работать вносила новые знания и нюансы работы и соответственно я расписываю как сделать/решить ту или иную задачу. Это очень помогает. Когда сам разбираешь задачу, стараешься ее приподнести в виде структурированной заметки чтобы было все наглядно и просто, то процесс усвоения идет в гору. Также прошу на https://win.ekzorchik.ru https://lin.ekzorchik.ru https://net.ekzorchik.ru https://voip.ekzorchik.ru https;//home.ekzorchik.ru