Установка і настройка поштового сервера PostfixAdmin на Ubuntu 16.04
- Увійдіть на свій VPS через SSH
- Установка PHP 7.0 і PHP всіх необхідних модулів
- Установка і настройка Nginx
- PostfixAdmin
- Встановіть і налаштуйте Postfix
- Установка і настройка Dovecot
- SpamAssassin
Увійдіть на свій VPS через SSH
ssh furious @ my_serverОновлення систему і встановіть необхідні пакети
sudo apt-get update && sudo apt-get -y upgrade sudo apt-get -y install wget nano dbconfig-common sqlite3Створіть системного користувача
З міркувань безпеки, ми створимо нового користувача системи, який буде власником всіх поштових скриньок.
sudo useradd -r -u 150 -g mail -d / var / vmail -s / sbin / nologin -c "Virtual Mail User" vmail sudo mkdir -p / var / vmail sudo chmod -R 770 / var / vmail sudo chown - R vmail: mail / var / vmailУстановка PHP 7.0 і PHP всіх необхідних модулів
Якщо ви не встановили PHP на вашому сервері, ви можете встановити останню стабільну версію PHP 7.0 і всі необхідні модулі, за допомогою наступної команди:
sudo apt-get -y install php-fpm php-cli php7.0-mbstring php7.0-imap php7.0-sqlite3Установка і настройка Nginx
Якщо у вас немає веб-сервера, встановленого на вашому комп'ютері, встановіть Nginx з офіційних репозиторіїв Ubuntu:
sudo apt-get -y install nginxСтворення нового блоку сервера Nginx з наступним змістом:
sudo nano /etc/nginx/sites-available/postfixadmin.your_domain.ru server {listen 80; server_name postfixadmin.your_domain.ru; return 301 https: // $ server_name $ request_uri; } Server {listen 443 ssl; server_name postfixadmin.your_domain.ru; root /var/www/postfixadmin-3.0; index index.php; charset utf-8; ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem; ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key; ssl_protocols TLSv1.2; ssl_ciphers "EECDH + ECDSA + AESGCM: EECDH + aRSA + AESGCM:! aNULL:! eNULL:! LOW:! 3DES:! MD5:! EXP:! PSK:! SRP:! DSS:! RC4"; ssl_prefer_server_ciphers on; ssl_session_cache shared: SSL: 10m; ssl_session_timeout 10m; ssl_ecdh_curve secp521r1; location / {try_files $ uri $ uri / index.php; } Location ~ * \ .php $ {fastcgi_split_path_info ^ (. + \. Php) (/.+) $; include fastcgi_params; fastcgi_pass unix: /run/php/php7.0-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name; fastcgi_buffer_size 16k; fastcgi_buffers 4 16k; }}Активуйте блок сервера, створивши символічне посилання:
sudo ln -s /etc/nginx/sites-available/postfixadmin.your_domain.ru /etc/nginx/sites-enabled/postfixadmin.your_domain.ruПеревірте конфігурацію Nginx і перезапустіть Nginx:
sudo nginx -t sudo service nginx restartPostfixAdmin
PostfixAdmin є PHP на основі веб - інтерфейсу, який дозволяє керувати базою даних, і використовує postfix для віртуальних доменів і користувачів. Остання версія PostfixAdmin, 3 -й версії, підтримує MySQL , PostgreSQL і базу даних SQLite. У цьому керівництві ми будемо використовувати останню.
Скачайте архів PostfixAdmin з SourceForge і розпакуйте його в каталог / var / www /:
Відкрийте файл конфігурації пошти та змініть наступні значення:
sudo nano /var/www/postfixadmin-3.0/config.inc.php $ CONF [ 'configured'] = true; $ CONF [ 'database_type'] = 'sqlite'; $ CONF [ 'database_name'] = '/var/vmail/postfixadmin.db'; // $ CONF [ 'database_host'] = 'localhost'; // $ CONF [ 'database_user'] = 'postfix'; // $ CONF [ 'database_password'] = 'postfixadmin'; // $ CONF [ 'database_name'] = 'postfix'; $ CONF [ 'domain_path'] = 'NO'; $ CONF [ 'domain_in_mailbox'] = 'YES'; sudo chown -R www-data: /var/www/postfixadmin-3.0Створення бази даних SQLite:
sudo touch /var/vmail/postfixadmin.db sudo chown vmail: mail /var/vmail/postfixadmin.db sudo usermod -a -G mail www-dataДля заповнення бази даних перейдіть до https://postfixadmin.your_domain.ru/setup.php і ви повинні побачити що - щось на зразок цього:
Testing database connection - OK - sqlite: //: xxxxx@//var/vmail/postfixadmin.db
Створіть нового користувача з правами адміністратора:
bash /var/www/postfixadmin-3.0/scripts/postfixadmin-cli admin add admin@your_domain.ru --password strong_password --password2 strong_password --superadmin 1 --active 1Встановіть і налаштуйте Postfix
Встановіть postfix за допомогою команди нижче:
sudo apt-get install postfixСтворіть наступні файли:
sudo nano /etc/postfix/sqlite_virtual_alias_maps.cf dbpath = /var/vmail/postfixadmin.db query = SELECT goto FROM alias WHERE address = '% s' AND active = '1' sudo nano /etc/postfix/sqlite_virtual_alias_domain_maps.cf dbpath = /var/vmail/postfixadmin.db query = SELECT goto FROM alias, alias_domain WHERE alias_domain.alias_domain = '% d' and alias.address = printf ( "% u ',' @ ', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active = '1' sudo nano /etc/postfix/sqlite_virtual_alias_domain_catchall_maps.cf dbpath = /var/vmail/postfixadmin.db query = SELECT goto FROM alias, alias_domain WHERE alias_domain.alias_domain = '% d' and alias. address = printf ( '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active = '1' sudo nano /etc/postfix/sqlite_virtual_domains_maps.cf dbpath = /var/vmail/postfixadmin.db query = SELECT domain FROM domain WHERE domain = '% s' AND active = '1' sudo nano /etc/postfix/sqlite_virtual_mailbox_maps.cf dbpath = /var/vmail/postfixadmin.db query = SELECT maildir FROM mailbox WHERE username = '% s' AND active = '1' sudo nano /etc/postfix/sqlite_virtual_alias_domain_mailbox_maps.cf dbpath = /var/vmail/postfixadmin.db query = SELECT maildir FROM mailbox, alias_domain WHERE alias_domain.alias_domain = '% d' and mailbox.username = printf ( "% u ',' @ ', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active =' 1 'Відредагуйте файл main.cf:
postconf -e "myhostname = $ (hostname -A)" postconf -e "virtual_mailbox_domains = sqlite: /etc/postfix/sqlite_virtual_domains_maps.cf" postconf -e "virtual_alias_maps = sqlite: /etc/postfix/sqlite_virtual_alias_maps.cf, sqlite: / etc / postfix / sqlite_virtual_alias_domain_maps.cf, sqlite: /etc/postfix/sqlite_virtual_alias_domain_catchall_maps.cf "postconf -e" virtual_mailbox_maps = sqlite: /etc/postfix/sqlite_virtual_mailbox_maps.cf, sqlite: /etc/postfix/sqlite_virtual_alias_domain_mailbox_maps.cf "postconf -e "smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem" postconf -e "smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key" postconf -e "smtpd_use_tls = yes" postconf -e "smtpd_tls_auth_only = yes" postconf -e "smtpd_sasl_type = dovecot" postconf -e "smtpd_sasl_path = private / auth" postconf -e "smtpd_sasl_auth_enable = yes" postconf -e "smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination" postconf -e "mydestination = localhost "p ostconf -e "mynetworks = 127.0.0.0/8" postconf -e "inet_protocols = ipv4" postconf -e "virtual_transport = lmtp: unix: private / dovecot-lmtp"Відкрийте файл master.cf, знайти розділи submission inet n і smtps inet n і відредагуйте наступним чином:
sudo nano /etc/postfix/master.cf smtp inet n - y - - smtpd #smtp inet n - y - 1 postscreen #smtpd pass - - y - - smtpd #dnsblog unix - - y - 0 dnsblog #tlsproxy unix - - y - 0 tlsproxy submission inet n - y - - smtpd -o syslog_name = postfix / submission -o smtpd_tls_security_level = encrypt -o smtpd_sasl_auth_enable = yes # -o smtpd_reject_unlisted_recipient = no -o smtpd_client_restrictions = permit_sasl_authenticated, reject # -o smtpd_helo_restrictions = $ mua_helo_restrictions # -o smtpd_sender_restrictions = $ mua_sender_restrictions # -o smtpd_recipient_restrictions = # -o smtpd_relay_restrictions = permit_sasl_authenticated, reject -o milter_macro_daemon_name = ORIGINATING smtps inet n - y - - smtpd -o syslog_name = postfix / smtps # -o smtpd_tls_wrappermode = yes -o smtpd_sasl_auth_enable = yes # -o smtpd_reject_unlisted_recipient = no -o smtpd_client_restrictions = permit_sasl_authenticated, reject # -o smtpd_helo_restrictions = $ mua_helo_restrictions # -o smtpd_sender_restrictions = $ mua_sender_restrictions # -o smt pd_recipient_restrictions = # -o smtpd_relay_restrictions = permit_sasl_authenticated, reject -o milter_macro_daemon_name = ORIGINATINGУвімкніть і перезапустіть службу postfix
systemctl enable postfix systemctl restart postfixУстановка і настройка Dovecot
Встановити Dovecot з підтримкою SQLite, використовуючи команду нижче:
sudo apt-get install dovecot-imapd dovecot-lmtpd dovecot-pop3d dovecot-sqliteВідкрийте файл /etc/dovecot/conf.d/10-mail.conf і змініть наступні значення:
mail_location = maildir: / var / vmail /% d /% n mail_privileged_group = mail mail_uid = vmail mail_gid = mail first_valid_uid = 150 last_valid_uid = 150Відкрийте файл /etc/dovecot/conf.d/10-auth.conf і змініть наступні значення:
auth_mechanisms = plain login #! include auth-system.conf.ext! include auth-sql.conf.extСтворіть новий файл dovecot-sql.conf.ext:
sudo nano /etc/dovecot/dovecot-sql.conf.ext driver = sqlite connect = /var/vmail/postfixadmin.db 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, 150 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, \ 150 AS uid, 8 AS gid, printf ( "dirsize: storage = ', quota) AS quota \ FROM mailbox WHERE username ='% u 'AND active =' 1 'У файлі /etc/dovecot/conf.d/10-ssl.conf включите підтримку SSL :
ssl = yesВідкрийте файл /etc/dovecot/conf.d/15-lda.conf і встановіть в параметрі postmaster_address адреса електронної пошти.
postmaster_address = [email protected]_domain.ruВідкрийте файл /etc/dovecot/conf.d/10-master.conf, знайдіть розділ служби LMTP і змінити його на:
service lmtp {unix_listener / var / spool / postfix / private / dovecot-lmtp {mode = 0600 user = postfix group = postfix}}Знайдіть розділ служби аутентифікації і змінити його на:
service auth {unix_listener / var / spool / postfix / private / auth {mode = 0666 user = postfix group = postfix} unix_listener auth-userdb {mode = 0600 user = vmail #group = vmail} user = dovecot}Змініть розділ служби auth-worker до таких функцій:
service auth-worker {user = vmail}Встановіть дозволу:
chown -R vmail: dovecot / etc / dovecot chmod -R o-rwx / etc / dovecotУвімкніть і перезапустіть службу dovecot
systemctl enable dovecot systemctl restart dovecotSpamAssassin
SpamAssassin є інструментом з відкритим кодом написаний на Perl, який допомагає відфільтрувати небажану пошту. Якщо ви хочете включити і налаштувати SpamAssassin ласка, продовжуйте з наступними кроками.
Щоб встановити SpamAssassin, виконайте наступну команду:
sudo apt-get install spamassassin sudo adduser spamd --disabled-loginВідкрийте файл / etc / default / spamassassin і внесіть наступні зміни:
ENABLED = 1 OPTIONS = "- create-prefs --max-children 5 -d 127.0.0.1 --username spamd --helper-home-dir / home / spamd / -s /home/spamd/spamd.log" PIDFILE = "/ home / spamd / spamd.pid" CRON = 1Для інтеграції SpamAssassin з Postfix, додайте наступний рядок в кінці файлу /etc/postfix/master.cf:
smtp inet n - - - - smtpd -o content_filter = spamassassin spamassassin unix - nn - - pipe user = nobody argv = / usr / bin / spamc -f -e / usr / sbin / sendmail -oi -f $ {sender} $ {recipient}Увімкніть і перезапустіть службу Spamassassin
systemctl enable spamassassin systemctl restart spamassassin systemctl restart postfixЯкщо все налаштовано правильно, то ви повинні в стані увійти в свій бекенда PostfixAdmin, перейшовши за посиланням https://postfixadmin.your_domain.ru/и створити свій перший віртуальний домен і поштовий ящик.
Якщо ви знайшли помилку, будь ласка, виділіть фрагмент тексту і натисніть Ctrl + Enter.