Postfix: Difference between revisions
No edit summary |
No edit summary |
||
| (6 intermediate revisions by 2 users not shown) | |||
| Line 24: | Line 24: | ||
==Начало работы с Postfix== |
==Начало работы с Postfix== |
||
'''''Важно помнить о необходимости переключении сетевого адаптера в нужные вам режимы! Для данной настройки использовались NAT и Host-only Adapter. Для обновления и установки пакетов использовался - NAT, для использования браузера - Host-only Adapter.''''' |
|||
Прежде всего вам будет необходимо установить и настроить почтовый сервер Ubuntu 20.04. Для этого вам понадобится пакет chrony для синхронизации времени, настройка веб-сервера: NGINX + PHP + MariaDB, также установить и настроить PostfixAdmin, ну и установить сам Postfix. |
Прежде всего вам будет необходимо установить и настроить почтовый сервер Ubuntu 20.04. Для этого вам понадобится пакет chrony для синхронизации времени, настройка веб-сервера: NGINX + PHP + MariaDB, также установить и настроить PostfixAdmin, ну и установить сам Postfix. |
||
Первым делом вам необходимо прописать несколько команд в консоле: |
|||
<code>sudo -s</code> |
|||
<code>apt update</code> |
|||
<code>apt upgrade</code> |
|||
Затем вы должны задать имя серверу. Это необходимо сделать, потому что большенство антиспам систем выполняют проверки, обращаясь к серверу по имени в ожидании ответа. Это вы должны сделать при помощи команды: |
|||
<code>hostnamectl set-hostname [имя сервера]</code> |
|||
Далее для синхронизации времени устанавливаем пакет chrony |
|||
<code>apt install chrony</code> |
|||
Затем задаем временную зону и запускаем сервис для обновления времени |
|||
<code>timedatectl set-timezone [ваш регион]</code> |
|||
<code>systemctl enable chrony</code> |
|||
[[File:linux1.png]] |
|||
Затем открываем заранее порты на брандмауэре при помощи iptables |
|||
<code>iptables -I INPUT 1 -p tcp --match multiport --dports 25,110,143,465,587,993,995 -j ACCEPT</code> |
|||
<code>iptables -I INPUT 1 -p tcp --match multiport --dports 80,443 -j ACCEPT</code> |
|||
[[File:linux2.png]] |
|||
Для сохранения правил устанавливаем пакет |
|||
<code>apt install iptables-persistent</code> |
|||
<code>netfilter-persistent save</code> |
|||
[[File:linux3.png]] |
|||
Теперь устанавливаем nginx и разрешаем автозапуск сервиса |
|||
<code>apt install nginx</code> |
|||
<code>systemctl enable nginx</code> |
|||
Для того, чтобы проверить работоспособность веб-сервера, обратитесь к нему в браузере по адресу http://[IP-адрес сервера]. Чтобы узнать ваш IP-адрес воспользуйтесь командой <code>hostname -I</code>. Если вы правильно настроили NGINX, то вы увидите заголовок 'Welcome to nginx!' |
|||
[[File:linux4.jpg]] |
|||
Далее устанавливаем php и php-fpm, после чего можно приступить к настройке NGINX |
|||
<code>apt install php php-fpm</code> |
|||
<code>nano /etc/nginx/sites-enabled/default</code> |
|||
В разделе http - server необходимо указать, чтобы первым индексным файлом был index.php, а также добавляем настройку для обработки запросов php(location ~ \.php$): |
|||
<code>set $root_path /var/www/html;</code> |
|||
<code>fastcgi_pass unix:/run/php/php8.1-fpm.sock;</code> |
|||
<code>fastcgi_index index.php;</code> |
|||
<code>fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;</code> |
|||
<code>include fastcgi_params;</code> |
|||
<code>fastcgi_param DOCUMENT_ROOT $root_path;</code> |
|||
[[File:linux5.png]] |
|||
Теперь разрешаем автозапуск php-fpm и перезапускаем nginx |
|||
<code>systemctl enable php8.1-fpm</code> |
|||
<code>systemctl restart nginx</code> |
|||
Для проверки, создаем индексный файл в директории сайта со следующим содержимым |
|||
<code>nano /var/www/html/index.php</code> |
|||
<code><?php phpinfo(); ?></code> |
|||
[[File:linux6.png]] |
|||
Открываем сайт в браузере по IP-адресу, который использовали ранее. На странице должна быть подробная информация по php. |
|||
[[File:linux7.jpg]] |
|||
С помощью следующей команды устанавливаем сервер баз данных и включаем автозапуск |
|||
<code>apt install mariadb-server</code> |
|||
<code>systemctl enable mariadb</code> |
|||
После задаем пароль для пользователя sql root и устанавливаем дополнительные компоненты для PHP |
|||
<code>mysqladmin -u root password</code> |
|||
<code>apt install php-mysql php-mbstring php-imap</code> |
|||
Чтобы применить установленные пакеты перезагрузите обработчик скриптов, и затем скачайте PostfixAdmin |
|||
<code>systemctl restart php8.1-fpm</code> |
|||
<code>wget https://sourceforge.net/projects/postfixadmin/files/latest/download -O postfixadmin.tar.gz</code> |
|||
[[File:linux8.png]] |
|||
Создаем каталог postfixadmin в директории сайтов nginx и распаковываем в него архив |
|||
<code>mkdir /var/www/html/postfixadmin</code> |
|||
<code>tar -C /var/www/html/postfixadmin -xvf postfixadmin.tar.gz --strip-components 1</code> |
|||
Внутри папки портала создаем каталог template_c и задаем права на каталог |
|||
<code>mkdir /var/www/html/postfixadmin/templates_c</code> |
|||
<code>chown -R www-data:www-data /var/www/html/postfixadmin</code> |
|||
Теперь создаем базу данных postfix и учетную запись в mariadb |
|||
<code>mysql -u root -p</code> |
|||
<code>CREATE DATABASE postfix DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;</code> |
|||
<code>GRANT ALL ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'postfix123';</code> |
|||
Для выхода из командной оболочки воспользуйтесь <code>\q</code> |
|||
[[File:linux9.png]] |
|||
Далее необходимо создать конфигурационный файл postfixadmin |
|||
<code>nano /var/www/html/postfixadmin/config.local.php</code> |
|||
<code><?php</code> |
|||
<code>$CONF['configured']= true;</code> |
|||
<code>$CONF['default_language']= 'ru';</code> |
|||
<code>$CONF['database_password']= 'postfix123';</code> |
|||
<code>$CONF['emailcheck_resolve_domain']= 'NO';</code> |
|||
<code>?></code> |
|||
Теперь запускаем браузер и вводим адрес <code>http://<IP-адрес сервера>/postfixadmin/public/setup.php</code> |
|||
Вам откроется страница для установки PostfixAdmin |
|||
[[File:linux11.png]] |
|||
Дважды задаем пароль установки. и генерируем хэш, кликнул по Generate setup_password hash |
|||
[[File:linux12.png]] |
|||
Теперь необходимо открыть конфигурационный файл и добавить туда строчку, которая появилась под кнопкой командой ранее(отмечено галочками на скриншоте) |
|||
<code>nano /var/www/html/postfixadmin/config.local.php</code> |
|||
<code>$CONF['setup_password'] = '$2y$10$A...S2oK';</code> |
|||
Обязательно проверьте правильно ли вы все ввели!!! |
|||
[[File:linux13.png]] |
|||
Далее обновите страницу. Внизу страницы должна появится форма добавления суперпользователя - вводим данные. |
|||
[[File:linux14.png]] |
|||
<code>Setup password - задаваемый вами выше</code> |
|||
<code>Админ - root@[имя сервера, которое вы задавали в начале]</code> |
|||
<code>Пароль - [любой, но не менее 3 символов]</code> |
|||
<code>Пароль(еще раз) - [повторить]</code> |
|||
Если вы все сделали правильно, ниже вы увидите <code>Администратор [ваш админ] успешно добавлен</code> |
|||
[[File:linux15.png]] |
|||
Установка завершена. Переходим в браузере на страницу <code>http://<IP-адрес сервера>/postfixadmin/public/login.php</code> и входим в систему |
|||
[[File:linux16.png]] |
|||
Возвращаемся в виртуальную машину и устанавливаем сам Postfix |
|||
<code>apt-get install postfix postfix-mysql</code> |
|||
Выбираем Internet Site |
|||
В строке System mail name автоматически будет вставлено имя вашего сервера |
|||
[[File:linux18.png]] |
|||
Проверяем работу сервера. Отправляем письмо |
|||
[[File:linux17.png]] |
|||
Письмо получено |
|||
[[File:linux19.png]] |
|||
Latest revision as of 22:40, 17 January 2023
Что такое Postfix - это агент передачи почты, который является свободным программным обеспечением. Postfix создавался как альтернатива Sendmail. ПО повышало производительность, обеспечивало устойчивость, гибкость и безопасность решения. Postfix был разработан Вейтсом Веннемой, когда он работал в Исследовательском центре имени Томаса Уотсона компании IBM. Первые версии стали доступны в середине 1999 года.
Архитектура
Архитектура выполнена в стиле UNIX. В UNIX простые программы выполняют минимальный набор функций. Когда почтовая система не вовлечена в работу ненужные домены прекращают свою работу, благодаря чему освобождается память и в случае необходимости запускаются master-доменом. В дополнении к этому имеет меньшую ресурсоёмкость в момент простоя системы, а также обладает более простой и понятной конфигурацией по сравнению с Sendmai, где всю работу выполняет одна большая программа.
Базовая настройка
Самая простая настройка конфигурации – пустой файл. Как оказалось, вполне допустимая и приводит тому, что создается почтовый сервер, который выполняет локальную доставку почты в пределах домена локального хоста. Любые не локальные сообщения отправляются дистанционным серверам.
Так же есть второй вариант – null клиент. Система не выполняет локальную доставку, а направляет исходящую почту на указанный почтовый сервер. При данной конфигурации указывается несколько параметров: mydomain – основной домен компьютера; myorigin – основной почтовый домен, добовляемый к почтовым адресам. Третьим параметром будет mydestination, письмо доставит программа local (в том случае, если файл .forward не найден). Если в mydestination несколько записей, они рассматриваются как псевдонимы одного домена. Null клиенту локальная доставка не нужна, поэтому параметр mydestination — пустой. Также программа local будет проводить поиск псевдонима адреса в таблицах alias_maps. Наконец, параметр relayhost оповещает Postfix о том, что нелокальные сообщения нужно посылать на указанный компьютер, а не адресатам. Квадратные скобки говорят о том, что указанная строка обрабатывается как имя компьютера, то есть A не MX запись DNS. Null клиент не должен получать почту с других систем – комментируем строчку smtpd в файле master.cf – программа smtpd не запустится.
Совместимость
Postfix может быть собран почти на любо й Unix-подобной, которые поддерживают POSIX и имеющие компилятор C. В пример можно привести AIX, BSD, HP-UX, IRIX, GNU/Linux, MacOS X, Solaris, Tru64 UNIX.
Безопасность
Postfix имеет защиту на нескольких уровнях. Большее количество серверных Postfix-программ имеют возможность выполняться в среде с измененным корневым каталогом (chroot). Они являются отдельными программами не имеющие связей Родитель-дочерний. Ни одна из них не имеет бита setuid. Каталог, в который направлена почта, доступен для записи группе postdrop, для нее — программа postdrop setgid.
Что касается доступа, почтовые домены ретранслируют почту на сторонние адреса только для надежных агентов. Открытая ретрансляция с неизвестных адресов, как известно, не сулит ничего хорошего. Postfix по умолчанию закрыт как ретранслятор. Стандартные настройки сильно ограничены, вероятнее всего вам будет необходимо снизить ограничения. Доступы конфигурируются списками ограничения доступа access restriction list. Самым важным параметром будет smtpd_recipient_restrictions, так как адресом получателя будет проще управлять. По крайней мере, можно установить является ли он локальным.
Начало работы с Postfix
Важно помнить о необходимости переключении сетевого адаптера в нужные вам режимы! Для данной настройки использовались NAT и Host-only Adapter. Для обновления и установки пакетов использовался - NAT, для использования браузера - Host-only Adapter.
Прежде всего вам будет необходимо установить и настроить почтовый сервер Ubuntu 20.04. Для этого вам понадобится пакет chrony для синхронизации времени, настройка веб-сервера: NGINX + PHP + MariaDB, также установить и настроить PostfixAdmin, ну и установить сам Postfix.
Первым делом вам необходимо прописать несколько команд в консоле:
sudo -s
apt update
apt upgrade
Затем вы должны задать имя серверу. Это необходимо сделать, потому что большенство антиспам систем выполняют проверки, обращаясь к серверу по имени в ожидании ответа. Это вы должны сделать при помощи команды:
hostnamectl set-hostname [имя сервера]
Далее для синхронизации времени устанавливаем пакет chrony
apt install chrony
Затем задаем временную зону и запускаем сервис для обновления времени
timedatectl set-timezone [ваш регион]
systemctl enable chrony
Затем открываем заранее порты на брандмауэре при помощи iptables
iptables -I INPUT 1 -p tcp --match multiport --dports 25,110,143,465,587,993,995 -j ACCEPT
iptables -I INPUT 1 -p tcp --match multiport --dports 80,443 -j ACCEPT
Для сохранения правил устанавливаем пакет
apt install iptables-persistent
netfilter-persistent save
Теперь устанавливаем nginx и разрешаем автозапуск сервиса
apt install nginx
systemctl enable nginx
Для того, чтобы проверить работоспособность веб-сервера, обратитесь к нему в браузере по адресу http://[IP-адрес сервера]. Чтобы узнать ваш IP-адрес воспользуйтесь командой hostname -I. Если вы правильно настроили NGINX, то вы увидите заголовок 'Welcome to nginx!'
Далее устанавливаем php и php-fpm, после чего можно приступить к настройке NGINX
apt install php php-fpm
nano /etc/nginx/sites-enabled/default
В разделе http - server необходимо указать, чтобы первым индексным файлом был index.php, а также добавляем настройку для обработки запросов php(location ~ \.php$):
set $root_path /var/www/html;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
include fastcgi_params;
fastcgi_param DOCUMENT_ROOT $root_path;
Теперь разрешаем автозапуск php-fpm и перезапускаем nginx
systemctl enable php8.1-fpm
systemctl restart nginx
Для проверки, создаем индексный файл в директории сайта со следующим содержимым
nano /var/www/html/index.php
<?php phpinfo(); ?>
Открываем сайт в браузере по IP-адресу, который использовали ранее. На странице должна быть подробная информация по php.
С помощью следующей команды устанавливаем сервер баз данных и включаем автозапуск
apt install mariadb-server
systemctl enable mariadb
После задаем пароль для пользователя sql root и устанавливаем дополнительные компоненты для PHP
mysqladmin -u root password
apt install php-mysql php-mbstring php-imap
Чтобы применить установленные пакеты перезагрузите обработчик скриптов, и затем скачайте PostfixAdmin
systemctl restart php8.1-fpm
wget https://sourceforge.net/projects/postfixadmin/files/latest/download -O postfixadmin.tar.gz
Создаем каталог postfixadmin в директории сайтов nginx и распаковываем в него архив
mkdir /var/www/html/postfixadmin
tar -C /var/www/html/postfixadmin -xvf postfixadmin.tar.gz --strip-components 1
Внутри папки портала создаем каталог template_c и задаем права на каталог
mkdir /var/www/html/postfixadmin/templates_c
chown -R www-data:www-data /var/www/html/postfixadmin
Теперь создаем базу данных postfix и учетную запись в mariadb
mysql -u root -p
CREATE DATABASE postfix DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'postfix123';
Для выхода из командной оболочки воспользуйтесь \q
Далее необходимо создать конфигурационный файл postfixadmin
nano /var/www/html/postfixadmin/config.local.php
<?php
$CONF['configured']= true;
$CONF['default_language']= 'ru';
$CONF['database_password']= 'postfix123';
$CONF['emailcheck_resolve_domain']= 'NO';
?>
Теперь запускаем браузер и вводим адрес http://<IP-адрес сервера>/postfixadmin/public/setup.php
Вам откроется страница для установки PostfixAdmin
Дважды задаем пароль установки. и генерируем хэш, кликнул по Generate setup_password hash
Теперь необходимо открыть конфигурационный файл и добавить туда строчку, которая появилась под кнопкой командой ранее(отмечено галочками на скриншоте)
nano /var/www/html/postfixadmin/config.local.php
$CONF['setup_password'] = '$2y$10$A...S2oK';
Обязательно проверьте правильно ли вы все ввели!!!
Далее обновите страницу. Внизу страницы должна появится форма добавления суперпользователя - вводим данные.
Setup password - задаваемый вами выше
Админ - root@[имя сервера, которое вы задавали в начале]
Пароль - [любой, но не менее 3 символов]
Пароль(еще раз) - [повторить]
Если вы все сделали правильно, ниже вы увидите Администратор [ваш админ] успешно добавлен
Установка завершена. Переходим в браузере на страницу http://<IP-адрес сервера>/postfixadmin/public/login.php и входим в систему
Возвращаемся в виртуальную машину и устанавливаем сам Postfix
apt-get install postfix postfix-mysql
Выбираем Internet Site
В строке System mail name автоматически будет вставлено имя вашего сервера
Проверяем работу сервера. Отправляем письмо
Письмо получено

















