• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Панель управления для проекта и полноценный mail server за 30 минут

TROUBLE

OLD SCHOOL
Пользователь
Регистрация
05.07.2023
Сообщения
548
Решения
1
Реакции
353
Гарант сделки
16
Приветствую тебя дорогой читатель.


Бывает такое что надо быстро поднять WEB проект на PHP или NODEjs, да ещё и с полноценным почтовым сервером и верным настройкам DKIM, DMARC, SPF.
В этом мануале я расскажу вам как сделать это быстро и просто.
И да, конечно же нас в основном интересует почтовая составляющая.

Что необходимо:
20-30 минут времени
VPS с открытым 25 портом. Для небольших проектов и нагрузок достаточно 2 ядра/2 гига/20-40гб ссд (если мы о технически современных хостерах)
Домен - рекомендую старые добрые TLD - com | net | org | info и так далее
Доступ к редактированию DNS вашего домена

Поехали:
Ставить будем myvestacp
myVesta is Debian fork of VestaCP that is under development by one of the VestaCP developers.
В общем поддерживаемый форк старой весты под дебиан.

В DNS вашего домена создаём запись типа "CNAME" для поддомена WWW которая указывает на ваш домен без WWW
cname.png


В DNS вашего домена создаём запись типа "А" для домена (условно domain.com) которая указывает на айпи адрес вашей VPS
В DNS вашего домена создаём запись типа "А" для поддомена на котором будет висеть панель (условно cp.domain.com) которая указывает на айпи адрес вашей VPS.
В DNS вашего домена создаём сразу ещё несколько записей типа "А" на почтовые субдомены (подробней на скрине)


Screenshot_6.png



Далее по SSH логинимся в СВЕЖУЮ-Важно! VPS с Debian 11\12
(Выбор чем логиниться оставляю вам, есть PUTTY под винду, есть множество других клиентов, в том числе под МакОсь. Лично у меня в винде стоит WSL)

ssh root@100.0.0.200 - (тут айпи вашей VPS)
ENTER (Далее в мануале не буду указывать что после ввода команды необходимо нажать ENTER, думаю это должно быть понятно)

Пасс вводим с клавы или правой кнопки мышки разок щелкнем в терминале после того как скопировали его - пасс виден не будет, как и то что вы его вводите, не пугайтесь.

Обновляем систему
apt update && apt upgrade -y

Ставим несколько нужных пакетов
apt install wget curl sudo nano -y

Для целей безопасности создаем нового юзера с правами sudo и запрещаем логин по SSH для root

adduser newuser (ну или какой вы хотите юзернейм дать новому пользователю)

Запросит новый пасс, вводим аналогично тому как логинились, то есть не видя его. (Запишите заранее юзернейм и пасс)
Далее просто жмём ENTER отвечая на вопросы о email, phone и так далее и в конце отвечая на вопрос "is this information correct" ставим Y и жмём ENTER.

Даём новому пользователю права рута (вернее добавляем его в группу sudo, но суть от этого не меняется)
usermod -aG sudo newuser

Запрещаем root логин по SSH
nano /etc/ssh/sshd_config

Откроется редактор nano, стрелочками вниз находим строку "PermitRootLogin"
Screenshot_1.png

Должно стоять как на примере, то есть "no". Если стоит любое другое значение, стрелочками на клавиатуре двигаем ползунок к тексту и backspace'ом либо delete'ом удаляем значение и пишем no.
Далее жмём ctrl+x (одновременно клавиши ctrl и букву X) и внизу появится вопрос о перезаписи, жмём Y затем ENTER - больше ничего трогать в файле не надо.

Выйдя обратно в командную строку, вводим для перезагрузки службы SSH
systemctl restart sshd

Ставим саму панель управления

Скачиваем скрипт установки:
curl -O https://c.myvestacp.com/vst-install-debian.sh
Запускаем скрипт установки:
bash vst-install-debian.sh

Спустя короткое время появится вот такой баннер в консоли:
Screenshot_1_2.png


И под ним, один за другим появятся вопросы (как только вы ответите на один, появится следующий и так далее):

Screenshot_2.png


Разберём вопросы:

Would you like to continue [y/n]: - конечно же жмём y и ENTER (далее после каждого ответа жмём ENTER)

Please enter admin email address: - вводим адрес электронной почты для админ аккаунта

Please enter secret URL address for hosting panel (or press enter for none).
Secret URL must be without special characters, just letters and numbers. Example: mysecret8205
Enter secret URL address: - вводим так называемый секретный урл (это цифро буквенное значение которое будет идти следом за доменом с портом, по которому вы будете заходить в дальнейшем в свою панель)

Please enter Vesta port number (press enter for 8083): - Здесь можно указать порт по которому вы будете заходить в панель, советую просто нажать ENTER, оставив порт 8083 по умолчанию.

Please enter FQDN hostname: - сюда вводим наш домен с субдоменом (sub.domain.com), который ещё в начале направили на ip адрес записью типа "A" в DNS вашего домена.

Нажимая ENTER после крайнего вопроса, пойдёт процесс установки, оставляем SSH соединение открытым и ждём минут 10.
По окончанию установки, в консоли вы увидите примерно следующее:

https:// cp.domain4xssmanual.com:8083/?secreturl100000000000
username: admin
password: DD0bBF2N4v2oyPxGMNGxm6seSSSkVt0t


Обязательно! Скопируйте данную информацию и сохраните, так как вы более не увидите нигде свой пароль, а secret url придётся находить командой.
Не выходим из SSH!
Сразу проведём несколько корректировок панели:

Ставим несколько версий PHP (По умолчанию там 7.4, она давно морально устарела):
Качаем скрипт:
wget -nv -O ./vesta-inst-php.sh https://c.myvestacp.com/tools/multi-php-install.sh
Редактируем:
mcedit ./vesta-inst-php.sh
Практически в начале открытого файла, будут следующие строки:

inst_56=0
inst_70=0
inst_71=0
inst_72=0
inst_73=0
inst_74=0
inst_80=0
inst_81=0
inst_82=0

"0" означает не устанавливать, "1" означает устанавливать
меняем значение - стрелочками на клавиатуре двигаем ползунок к тексту и backspace'ом либо delete'ом удаляем значение 0 и пишем значение 1

Должно получится вот так:
inst_56=0
inst_70=0
inst_71=0
inst_72=0
inst_73=0
inst_74=1
inst_80=1
inst_81=1
inst_82=1

Сохраняем нажав клавишу F2 затем ENTER и выходим из редактора mcedit нажатием ESC 2 раза.

Запускаем скрипт и ждём окончания установки.
sudo bash ./vesta-inst-php.sh
Далее немного тюнинга почтового сервера

Открываем конфиг:
nano /etc/exim4/exim4.conf.template
Поиск по файлу в редакторе nano осуществляется с помощью клавиш ctrl+w
Находим ограничение на количественную отправку 1 письма:
recipients_max = 15
recipients_max_reject = true
Строки так и находятся одна над другой, просто удалите их - когда ползунок находится на той строке, что вы хотите удалить, просто нажмите ctrl+k и строка удалится.

В том же файле находим лимит на отправку почты с PHP скриптов и через встроенный SMTP:

deny message = Web site is sending too much emails [limitlog]: deny / account / $authenticated_id / $sender_rate / $sender_rate_period
ratelimit = 40 / 1h / $authenticated_id

И

deny message = Email account is sending too much emails [limitlog]: deny / email / $authenticated_id / $sender_rate / $sender_rate_period
ratelimit = 40 / 1h / $authenticated_id

В обоих случаях меняем "ratelimit = 40" на "ratelimit = 3600" что равно 1 письму каждую секунду (можно и больше, но и этого хватит за глаза)
Далее жмём ctrl+x (одновременно клавиши ctrl и букву X) и внизу появится вопрос о перезаписи, жмём Y затем ENTER - больше ничего трогать в файле не надо.

Перезагружаем почтовую службу:
systemctl restart exim4
Перезагружаем VPS:
reboot
После перезагрузки переходим в браузере в панель
https:// cp.domain4xssmanual.com:8083/?secreturl100000000000
Авторизуемся:
username: admin
password: DD0bBF2N4v2oyPxGMNGxm6seSSSkVt0t
auth.png

Перед вами будет панель.
Заходим слева в раздел WEB:
screenshot221.png


Здесь жмём на плюсик "Add web domain"

web_domain_add.png


Появится вот такой раздел панели:

add_domain.png


В поле domain добавляем свой домен:
domain4xssmanual. com

ip не трогаем, смотрим чтобы галочки стояли как на скрине - DNS support и MAIL support, жмём зеленую кнопку "Add"

Ждём пару-тройку секунд пока всё добавится

Далее заходим слева в раздел DNS и справа от нашего основного домена выбираем "LIST (сколько-то там) RECORDS":

Screenshot_dns1.png


Попадаем на вот такую страницу:

Screenshot_dns2.png


Теперь ваша задача скопировать себе в DNS вашего домена все пункты, что на скрине выше, а именно 4 записи типа "TXT" и 1 запись типа "MX".
Удобней это делать перейдя в редактирование каждой отдельной записи - справа от самой записи кнопка EDIT.
Нажимаем и оказываемся на вот такой странице:

edit_dns_in_panel.png


В DNS вашего домена (у регистратора либо у вашего DNS провайдера, не в вашей панели) создаем запись типа "TXT" и копируем значение из поля "Record" (из вашей панели) себе в DNS в качестве субдомена, а значение "ip or value" в соответствующее значение в DNS вашего домена, далее нажимаем в панели кнопку "Back" и проделываем аналогично с остальными тремя записями типа "TXT".

В итоге должно получится как на скрине:

txt_in_dns.png


Аналогично с TXT записями, проделываем с MX записью:

mx.png


Вот так должны выглядеть DNS записи домена по итогу (у регистратора либо у вашего DNS провайдера):

dns_all.png


С DNS разобрались, теперь небольшой tweak для доставляемости почты, меняем hostname:

Логинимся по SSH в VPS:
ssh newuser@100.0.0.200 (помним же что в начале создали нового юзера с правами root)
Переходим в режим рута
sudo su root
запросит пароль, вводим его (пароль вашего newuser)

Редактируем файл hostname:
nano /etc/hostname

Там будет одна единственная строка: cp.domain4xssmanual.com
убираем поддомен, оставляем domain4xssmanual.com

Жмём ctrl+x (одновременно клавиши ctrl и букву X) и внизу появится вопрос о перезаписи, жмём Y затем ENTER

Pедактируем файл hosts
nano /etc/hosts

Изначально он будет выглядеть примерно так (примерно, потому как у вас может не быть ip6 записей, но они вам не интересны):
hosts1.png


Приводим его в следующий вид:

hosts2.png


Жмём ctrl+x (одновременно клавиши ctrl и букву X) и внизу появится вопрос о перезаписи, жмём Y затем ENTER

Перезагружаем VPS
reboot

После перезагрузки переходим в браузере в панель.
Будет вот такое предупреждение:

warn.png


Не обращаем внимание, жмём Advanced и внизу появится ссылка перехода в панель.

Логинимся и переходим слева в раздел Mail:

Screenshot_mail1.png


В разделе mail, справа от вашего основного домена жмём "ADD ACCOUNT +" и попадаем на страницу создания почтовых ящиков:

Screenshot_mail3.png


Здесь в поле "Account" пишем имя ящика (та часть адреса email которая перед знаком @)
В поле Password пишем пароль либо жмём зеленую ссылку "generate" для генерации пароля.

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

При желании, в поле "Send login credentials to email address" можете ввести любую почту куда вам отправить всё то что справа.
Жмём кнопку "Add"

Повторяем действия на странице где добавляются мейл аккаунты, столько раз, сколько нужно ящиков.

Далее ставим WordPress на основной домен.
Ну или любую другую cms или проект - для этого направляю вас на форум панели для дальнейших инструкций, а тут расскажу за WP.
forum. myvestacp. com

Логинимся в SSH:
ssh newuser@100.0.0.200 (помним же что в начале создали нового юзера с правами root)
Вводим пароль, жмём ENTER.

Переходим в режим рута:
sudo su root
запросит пароль, вводим его (пароль вашего newuser) и жмём ENTER

Вводим команду установки wp (cms и бд настроятся сами)
sudo /usr/local/vesta/bin/v-install-wordpress domain4xssmanual.com

Ждём чуть-чуть и в консоли появятся данные для входа в WP, копируем, сохраняем, пользуемся.

Письма с wp (да и любой другой cms) будут отправляться через встроенный mail server без дополнительной настройки.

Парам-парам-пам. Всё. Вы прекрасны и у вас теперь полноценный почтовый+web сервер, чёткие настройки DNS и довольно безопасная панель управления всем этим.


P.S. Если интересует только почта и простой html сайт без cms:
Исключаем все действия с поддоменом и вешаем панель на основной домен
Исключаем установку нескольких версий PHP
Исключаем редактирование hostname и hosts
По пути /home/admin/web/domain4xssmanual.com/public_html меняем файл index.html на свой

P.P.S. Подойдёт ли для спама? Да, подойдёт, НО:
Надо греть айпи+домен
Если есть вариант у хостера указать rDNS, то будет лучше, хотя и не обязательно.
База должна быть валидной и тематической, поскольку чем больше bounce писем, тем медленнее будет работать отправка, забьётся очередь и прочие неприятные "радости".
(Если в комментах возникнет достаточно запросов, могу запилить мануал про авто-прогрев айпи+домена в рамках вышеописанного сетапа).

Всем всего самого светлого и ясного.
 
Последнее редактирование:
curl -O http://c.myvestacp.com/vst-install-debian.sh
поменяй на httpS://, иначе любой из серверов между виртуалкой и c.myvestacp.com может напихать в этот скрипт своего добра.
с httpS, конечно, тоже может, но это уже совсем другая история :)
 
поменяй на httpS://, иначе любой из серверов между виртуалкой и c.myvestacp.com может напихать в этот скрипт своего добра.
с httpS, конечно, тоже может, но это уже совсем другая история :)
Когда печатал, пропустил. Спасибо.
 
а насколько важно настраивать PTR запись? вроде бы не заметил информации об этом в мануале. А так мануал очень крутой, спасибо, как раз искал подобное
 
а насколько важно настраивать PTR запись? вроде бы не заметил информации об этом в мануале. А так мануал очень крутой, спасибо, как раз искал подобное
Если айпишник впски не в блеках, домен не newTLD и чётко по ману, то письма заходят в гугл. Если с PHP скрипта или CMS, то отмечаются там как "Важные". Аналогично во всех бигах. Это всё без PTR, которая и есть rDNS.
 
Последнее редактирование:
могу запилить мануал про авто-прогрев айпи+домена в рамках вышеописанного сетапа
заливай, это же самое интересное)
 
Для чего такие отягощения https://poste.io/ (не реклама) развернул за 5 минут в докере и все
Я показал лишь 1 вариант, ты другой, а вообще их под сотню. У каждого свои приемущества и недостатки. С твоим несмотря на то что он поднимается в контейнере, никто не отменял первичную настройку системы и перекидку днс - собственно этому по большей части и посвящён мой мануал. Ещё следует учитывать что контейнеры имеют свойство падать и все до одного опенсурсы, которые исключительно мейл серверы, сразу идут в спам т.к. в хэдерах видно что это исключительно почтовый сервер, а не проект или сайт. Тоже самое с iredmail, haraka и так далее.
 
Я показал лишь 1 вариант, ты другой, а вообще их под сотню. У каждого свои приемущества и недостатки. С твоим несмотря на то что он поднимается в контейнере, никто не отменял первичную настройку системы и перекидку днс - собственно этому по большей части и посвящён мой мануал. Ещё следует учитывать что контейнеры имеют свойство падать и все до одного опенсурсы, которые исключительно мейл серверы, сразу идут в спам т.к. в хэдерах видно что это исключительно почтовый сервер, а не проект или сайт. Тоже самое с iredmail, haraka и так далее.
С установкой особых проблем нет. Большой гемор это прогрев серваков и сегодня далеко не факт что после первых 20к не улетит в бан сервак. Еще правильный рандом файлов и текста для рассылок надо учитывать и это не считая валидации мыл которая тоже важна. Было бы интересно увидеть статьи про альтернативные виды рассылок типа вебмайлинг, рассылка с доноров которые кстати тоже можно прогревать и рассылать.
 
С установкой особых проблем нет. Большой гемор это прогрев серваков и сегодня далеко не факт что после первых 20к не улетит в бан сервак. Еще правильный рандом файлов и текста для рассылок надо учитывать и это не считая валидации мыл которая тоже важна. Было бы интересно увидеть статьи про альтернативные виды рассылок типа вебмайлинг, рассылка с доноров которые кстати тоже можно прогревать и рассылать.
Сегодня и от авторитетных отправителей письма в спам попадают. Айпи и домен это расходник - в моем понимании задача в том чтобы как можно быстрее разослать как можно больше в инбокс. айпишник банят все по разному, а у некоторых даже чистый айпи уже будет в блоке. По опыту, не спеша подготовив всё, прогрев, можно несколько кк выжать из такого сервака как в мане. Валидация обязательно. Лучшие рассылки получаются когда находишь smtp мисконфиг релея у какого нибудь среднего мейл провайдера и это происходит кстати часто.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх