Налаштування та налаштування поштового сервера за допомогою PostfixAdmin

У цій статті ми покажемо вам, як налаштувати та настроїти поштовий сервер за допомогою Postfix, Dovecot, Spamassassin, SQLite та PostfixAdmin у VPS з Ubuntu 16.04 з Nginx та PHP 7.0. Цей посібник повинен працювати і на інших VPS-системах Linux, але був протестований і написаний для Ubuntu 16.04 VPS.

Увійдіть до свого VPS через SSH

ssh my_sudo_user @ my_server

Оновіть систему та встановіть необхідні пакети

sudo apt-get update && sudo apt-get -y оновлення sudo apt-get -y встановити wget nano dbconfig-common sqlite3

Створити користувача системи

З міркувань безпеки ми створимо нового користувача системи, який буде власником всіх поштових скриньок.

sudo useradd -r -u 150 -g mail -d / var / vmail -s / sbin / nologin -c "Користувач віртуальної пошти" 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 встановити php-fpm php-cli php7.0-mbstring php7.0-imap php7.0-sqlite3

Встановіть і налаштуйте Nginx

Якщо на вашому комп'ютері не встановлено веб-сервер, встановіть Nginx з офіційних сховищ Ubuntu:

sudo apt-get -y встановити nginx

Створіть новий сервер Nginx із таким вмістом:

sudo nano /etc/nginx/sites-available/postfixadmin.your_domain.com
сервер {слухати 80; server_name postfixadmin.your_domain.com; повернути 301 https: // $ server_name $ request_uri; } сервер {слухати 443 ssl; server_name postfixadmin.your_domain.com; root / var / www / postfixadmin-3.0; index index.php; кодування 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; ssl_session_cache shared: SSL: 10m; ssl_session_timeout 10m; ssl_ecdh_curve secp521r1; розташування / {try_files $ uri $ uri / index.php; } місце ~ * .php $ {fastcgi_split_path_info ^ (. +. php) (/.+) $; включати fastcgi_params; fastcgi_pass unix: /run/php/php7.0-fpm.sock; fastcgi_index index.php; включати 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.com /etc/nginx/sites-enabled/postfixadmin.your_domain.com

Перевірте конфігурацію Nginx та перезапустіть nginx:

Судо nginx -t Судо служба nginx перезавантаження

PostfixAdmin

PostfixAdmin - це веб-інтерфейс на базі PHP, який дозволяє вам керувати базою даних, яку використовує postfix для віртуальних доменів та користувачів. Остання версія PostfixAdmin, версія 3, підтримує бази даних MySQL PostgreSQL та SQLite. У цьому посібнику ми використаємо останню.
Завантажте архів PostfixAdmin з SourceForge і знайдіть його в каталозі / var / www /:

wget -q -O - "http://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-3.0/postfixadmin-3.0.tar.gz" | Судо Тар-xzf - -C / 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'] = 'НІ'; $ 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.com/setup.php і ви повинні побачити щось на зразок нижче:
Тестування підключення до бази даних - Гаразд - sqlite: //: xxxxx@//var/vmail/postfixadmin.db

Створіть нового адміністратора:

bash / var / www / postfixadmin-3.0 / script / postfixadmin-cli admin add admin@your_domain.com --password strong_password --password2 strong_password --superadmin 1 - active 1

Встановити та налаштувати постфікс

Встановити постфікс за допомогою команди нижче:

sudo apt-get install postfix

Створіть наступні файли:

 sudo nano /etc/postfix/sqlite_virtual_alias_maps.cf
dbpath = /var/vmail/postfixadmin.db query = ВИБЕРІТЬ ГОТУВАТИ З ІЛИ псевдоніма WHERE address = '% s' AND active = '1'
 sudo nano /etc/postfix/sqlite_virtual_alias_domain_maps.cf
dbpath = /var/vmail/postfixadmin.db query = ВИБЕРІТЬ ГОТУЄТЬСЯ з ПІІСу, alias_domain WHERE alias_domain.alias_domain = '% d' та alias.address = printf ('% u', '@', alias_domain.target_domain) І псевдонім. активний = 1 і alias_domain.active = '1'
 sudo nano /etc/postfix/sqlite_virtual_alias_domain_catchall_maps.cf
dbpath = /var/vmail/postfixadmin.db query = ВИБЕРЕТИ ГОТУЄТЬСЯ з ПІІСу, alias_domain WHERE alias_domain.alias_domain = '% d' та alias.address = printf ('@', alias_domain.target_domain) І alias.active = 1 І alias_domain .active = '1'
 sudo nano /etc/postfix/sqlite_virtual_domains_maps.cf
dbpath = /var/vmail/postfixadmin.db query = ВИБІР домен від домену 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) І поштову скриньку. активний = 1 і alias_domain.active = '1'

Редагувати main.cf Файл:

postconf -e "myhostname = $ (ім'я хоста-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 = allow_sasl_authenticated, allow_mynetworks, reject_unauth_destination" postconf -e "mydestination = localhost "с ostconf -e "mynetworks = 127.0.0.0 / 8" postconf -e "inet_protocols = ipv4" postconf -e "virtual_transport = lmtp: unix: private / dovecot-lmtp"

Відкрийте master.cf файл, знайти подання inet n і smtps inet n розділи і редагувати наступним чином:

sudo nano /etc/postfix/master.cf
smtp inet n - y - - smtpd #smtp inet n - y - 1 postcreen #smtpd pass - - y - - smtpd #dnsblog unix - - y - 0 dnsblog #tlsproxy unix - - y - 0 tlsproxy подання inet n - y - - smtpd -o syslog_name = постфікса / уявлення -o smtpd_tls_security_level = шифрувати -o smtpd_sasl_auth_enable = так # -o smtpd_reject_unlisted_recipient = немає -o smtpd_client_restrictions = permit_sasl_authenticated, відхиляти # -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 = ПОХОДЖЕННЯ smtps inet n - y - - smtpd -o syslog_name = postfix / smtps # -o smtpd_tls_wrappermode = так-а smtpd_sasl_auth_enable = так # -o smtpd_reject_unlisted_recipient = немає-o smtpd_client_restrictions = allow_sasl_authenticated, відхилити # -o smtpd_helo_restrictions = $ mua_helo_restrictions # -o smtpd_sender_restrictions = $ mua_sender_restrictions # -o smtpd_recipient_restrict іони = # -o smtpd_relay_restrictions = permit_sasl_authenticated, reject -o milter_macro_daemon_name = ПОХОДЖЕННЯ

Увімкніть та перезапустіть службу postfix

systemctl дозволити postfix systemctl перезапустити постфікс

Встановити та налаштувати 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 #! включити auth-system.conf.ext! включити 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 = ВИБРАТЕ ім'я користувача як користувач, пароль, '/ var / vmail /% d /% n' як userdb_home, 'maildir: / var / vmail / % d /% n 'як userdb_mail, 150 як userdb_uid, 8 як userdb_gid З поштову скриньку WHERE username ='% u 'AND active =' 1 'user_query = SELECT' / var / vmail /% d /% n ' maildir: / var / vmail /% d /% n 'поштою, 150 AS uid, 8 AS gid, printf (' dirsize: storage = ', kvota) AS квота FROM mailbox WHERE username ='% u 'AND active =' 1 '

В /etc/dovecot/conf.d/10-ssl.conf підтримка файлу: підтримка SSL:

ssl = так

.

Відкрийте /etc/dovecot/conf.d/15-lda.conf файл і встановіть postmaster_address адреса електронної пошти.

postmaster_address = postmaster@vps.your_domain.com

Відкрийте /etc/dovecot/conf.d/10-master.conf файл, знайдіть розділ служби lmtp та змініть його на:

Сервіс lmtp {unix_listener / var / spool / postfix / private / dovecot-lmtp (режим = 0600 користувач = postfix group = postfix}}

знайдіть розділ служби auth та змініть його на:

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}

Змініть розділ служби авторизації на наступне:

авторитет служби (користувач = vmail)

Встановити дозволи:

chown -R vmail: dovecot / etc / dovecot chmod -R o-rwx / etc / dovecot

Увімкніть і перезапустіть службу dovecot

systemctl дозволити dovecot systemctl перезапустити dovecot 

SpamAssassin

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 - ім'я користувача 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} $ {одержувач}

Увімкніть та перезапустіть службу спаму

systemctl enable spamassassin systemctl restart spamassassin systemctl restart postfix

Якщо все правильно налаштовано, ви повинні мати змогу ввійти у свій вихідний файл PostfixAdmin, перейшовши до https://postfixadmin.your_domain.com/ і створіть свій перший віртуальний домен та поштову скриньку.

джерело

залишити коментар

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.