Приветствую тебя дорогой читатель.
Бывает такое что надо быстро поднять WEB проект на PHP или NODEjs, да ещё и с полноценным почтовым сервером и верным настройкам DKIM, DMARC, SPF.
В этом мануале я расскажу вам как сделать это быстро и просто.
И да, конечно же нас в основном интересует почтовая составляющая.
Что необходимо:
20-30 минут времени
VPS с открытым 25 портом. Для небольших проектов и нагрузок достаточно 2 ядра/2 гига/20-40гб ссд (если мы о технически современных хостерах)
Домен - рекомендую старые добрые TLD - com | net | org | info и так далее
Доступ к редактированию DNS вашего домена
Поехали:
Ставить будем myvestacp
В DNS вашего домена создаём запись типа "CNAME" для поддомена WWW которая указывает на ваш домен без WWW
В DNS вашего домена создаём запись типа "А" для домена (условно domain.com) которая указывает на айпи адрес вашей VPS
В DNS вашего домена создаём запись типа "А" для поддомена на котором будет висеть панель (условно cp.domain.com) которая указывает на айпи адрес вашей VPS.
В DNS вашего домена создаём сразу ещё несколько записей типа "А" на почтовые субдомены (подробней на скрине)
Далее по SSH логинимся в СВЕЖУЮ-Важно! VPS с Debian 11\12
(Выбор чем логиниться оставляю вам, есть PUTTY под винду, есть множество других клиентов, в том числе под МакОсь. Лично у меня в винде стоит WSL)
ENTER (Далее в мануале не буду указывать что после ввода команды необходимо нажать ENTER, думаю это должно быть понятно)
Пасс вводим с клавы или правой кнопки мышки разок щелкнем в терминале после того как скопировали его - пасс виден не будет, как и то что вы его вводите, не пугайтесь.
Обновляем систему
Ставим несколько нужных пакетов
Для целей безопасности создаем нового юзера с правами sudo и запрещаем логин по SSH для root
Запросит новый пасс, вводим аналогично тому как логинились, то есть не видя его. (Запишите заранее юзернейм и пасс)
Далее просто жмём ENTER отвечая на вопросы о email, phone и так далее и в конце отвечая на вопрос "is this information correct" ставим Y и жмём ENTER.
Даём новому пользователю права рута (вернее добавляем его в группу sudo, но суть от этого не меняется)
Запрещаем root логин по SSH
Откроется редактор nano, стрелочками вниз находим строку "PermitRootLogin"
Должно стоять как на примере, то есть "no". Если стоит любое другое значение, стрелочками на клавиатуре двигаем ползунок к тексту и backspace'ом либо delete'ом удаляем значение и пишем no.
Далее жмём ctrl+x (одновременно клавиши ctrl и букву X) и внизу появится вопрос о перезаписи, жмём Y затем ENTER - больше ничего трогать в файле не надо.
Выйдя обратно в командную строку, вводим для перезагрузки службы SSH
Ставим саму панель управления
Скачиваем скрипт установки:
Запускаем скрипт установки:
Спустя короткое время появится вот такой баннер в консоли:
И под ним, один за другим появятся вопросы (как только вы ответите на один, появится следующий и так далее):
Разберём вопросы:
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, она давно морально устарела):
Качаем скрипт:
Редактируем:
Практически в начале открытого файла, будут следующие строки:
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 раза.
Запускаем скрипт и ждём окончания установки.
Далее немного тюнинга почтового сервера
Открываем конфиг:
Поиск по файлу в редакторе 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 - больше ничего трогать в файле не надо.
Перезагружаем почтовую службу:
Перезагружаем VPS:
После перезагрузки переходим в браузере в панель
https:// cp.domain4xssmanual.com:8083/?secreturl100000000000
Авторизуемся:
username: admin
password: DD0bBF2N4v2oyPxGMNGxm6seSSSkVt0t
Перед вами будет панель.
Заходим слева в раздел WEB:
Здесь жмём на плюсик "Add web domain"
Появится вот такой раздел панели:
В поле domain добавляем свой домен:
domain4xssmanual. com
ip не трогаем, смотрим чтобы галочки стояли как на скрине - DNS support и MAIL support, жмём зеленую кнопку "Add"
Ждём пару-тройку секунд пока всё добавится
Далее заходим слева в раздел DNS и справа от нашего основного домена выбираем "LIST (сколько-то там) RECORDS":
Попадаем на вот такую страницу:
Теперь ваша задача скопировать себе в DNS вашего домена все пункты, что на скрине выше, а именно 4 записи типа "TXT" и 1 запись типа "MX".
Удобней это делать перейдя в редактирование каждой отдельной записи - справа от самой записи кнопка EDIT.
Нажимаем и оказываемся на вот такой странице:
В DNS вашего домена (у регистратора либо у вашего DNS провайдера, не в вашей панели) создаем запись типа "TXT" и копируем значение из поля "Record" (из вашей панели) себе в DNS в качестве субдомена, а значение "ip or value" в соответствующее значение в DNS вашего домена, далее нажимаем в панели кнопку "Back" и проделываем аналогично с остальными тремя записями типа "TXT".
В итоге должно получится как на скрине:
Аналогично с TXT записями, проделываем с MX записью:
Вот так должны выглядеть DNS записи домена по итогу (у регистратора либо у вашего DNS провайдера):
С DNS разобрались, теперь небольшой tweak для доставляемости почты, меняем hostname:
Логинимся по SSH в VPS:
Переходим в режим рута
запросит пароль, вводим его (пароль вашего newuser)
Редактируем файл hostname:
Там будет одна единственная строка: cp.domain4xssmanual.com
убираем поддомен, оставляем domain4xssmanual.com
Жмём ctrl+x (одновременно клавиши ctrl и букву X) и внизу появится вопрос о перезаписи, жмём Y затем ENTER
Pедактируем файл hosts
Изначально он будет выглядеть примерно так (примерно, потому как у вас может не быть ip6 записей, но они вам не интересны):
Приводим его в следующий вид:
Жмём ctrl+x (одновременно клавиши ctrl и букву X) и внизу появится вопрос о перезаписи, жмём Y затем ENTER
Перезагружаем VPS
После перезагрузки переходим в браузере в панель.
Будет вот такое предупреждение:
Не обращаем внимание, жмём Advanced и внизу появится ссылка перехода в панель.
Логинимся и переходим слева в раздел Mail:
В разделе mail, справа от вашего основного домена жмём "ADD ACCOUNT +" и попадаем на страницу создания почтовых ящиков:
Здесь в поле "Account" пишем имя ящика (та часть адреса email которая перед знаком @)
В поле Password пишем пароль либо жмём зеленую ссылку "generate" для генерации пароля.
Поле справа копируйте целиком, там ваш логин, пароль, ссылка на вэб почту, и данные для доступа через почтовые программы.
При желании, в поле "Send login credentials to email address" можете ввести любую почту куда вам отправить всё то что справа.
Жмём кнопку "Add"
Повторяем действия на странице где добавляются мейл аккаунты, столько раз, сколько нужно ящиков.
Далее ставим WordPress на основной домен.
Ну или любую другую cms или проект - для этого направляю вас на форум панели для дальнейших инструкций, а тут расскажу за WP.
Логинимся в SSH:
Вводим пароль, жмём ENTER.
Переходим в режим рута:
запросит пароль, вводим его (пароль вашего newuser) и жмём ENTER
Вводим команду установки wp (cms и бд настроятся сами)
Ждём чуть-чуть и в консоли появятся данные для входа в 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 писем, тем медленнее будет работать отправка, забьётся очередь и прочие неприятные "радости".
(Если в комментах возникнет достаточно запросов, могу запилить мануал про авто-прогрев айпи+домена в рамках вышеописанного сетапа).
Всем всего самого светлого и ясного.
Бывает такое что надо быстро поднять 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
В DNS вашего домена создаём запись типа "А" для домена (условно domain.com) которая указывает на айпи адрес вашей VPS
В DNS вашего домена создаём запись типа "А" для поддомена на котором будет висеть панель (условно cp.domain.com) которая указывает на айпи адрес вашей VPS.
В DNS вашего домена создаём сразу ещё несколько записей типа "А" на почтовые субдомены (подробней на скрине)
Далее по 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"
Должно стоять как на примере, то есть "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Спустя короткое время появится вот такой баннер в консоли:
И под ним, один за другим появятся вопросы (как только вы ответите на один, появится следующий и так далее):
Разберём вопросы:
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
Перед вами будет панель.
Заходим слева в раздел WEB:
Здесь жмём на плюсик "Add web domain"
Появится вот такой раздел панели:
В поле domain добавляем свой домен:
domain4xssmanual. com
ip не трогаем, смотрим чтобы галочки стояли как на скрине - DNS support и MAIL support, жмём зеленую кнопку "Add"
Ждём пару-тройку секунд пока всё добавится
Далее заходим слева в раздел DNS и справа от нашего основного домена выбираем "LIST (сколько-то там) RECORDS":
Попадаем на вот такую страницу:
Теперь ваша задача скопировать себе в DNS вашего домена все пункты, что на скрине выше, а именно 4 записи типа "TXT" и 1 запись типа "MX".
Удобней это делать перейдя в редактирование каждой отдельной записи - справа от самой записи кнопка EDIT.
Нажимаем и оказываемся на вот такой странице:
В DNS вашего домена (у регистратора либо у вашего DNS провайдера, не в вашей панели) создаем запись типа "TXT" и копируем значение из поля "Record" (из вашей панели) себе в DNS в качестве субдомена, а значение "ip or value" в соответствующее значение в DNS вашего домена, далее нажимаем в панели кнопку "Back" и проделываем аналогично с остальными тремя записями типа "TXT".
В итоге должно получится как на скрине:
Аналогично с TXT записями, проделываем с MX записью:
Вот так должны выглядеть DNS записи домена по итогу (у регистратора либо у вашего DNS провайдера):
С 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 записей, но они вам не интересны):
Приводим его в следующий вид:
Жмём ctrl+x (одновременно клавиши ctrl и букву X) и внизу появится вопрос о перезаписи, жмём Y затем ENTER
Перезагружаем VPS
rebootПосле перезагрузки переходим в браузере в панель.
Будет вот такое предупреждение:
Не обращаем внимание, жмём Advanced и внизу появится ссылка перехода в панель.
Логинимся и переходим слева в раздел Mail:
В разделе mail, справа от вашего основного домена жмём "ADD ACCOUNT +" и попадаем на страницу создания почтовых ящиков:
Здесь в поле "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 писем, тем медленнее будет работать отправка, забьётся очередь и прочие неприятные "радости".
(Если в комментах возникнет достаточно запросов, могу запилить мануал про авто-прогрев айпи+домена в рамках вышеописанного сетапа).
Всем всего самого светлого и ясного.
Последнее редактирование: