PostgreSQL
coub
express.js
freeware
git
jquery
laravel
links
linux
macos
mysql
node.js
php
powershell
python
ubuntu
vim
virtualbox
анекдот
блог
игры
интересно
стихи
цитаты
You have to
login
to post a new comment.
Базовая настройка sendmail, Ubuntu
December 25, 2012
Я не администратор, поэтому относитесь к этой заметке с осторожностью.
Рассматривается такя ситуация: надо заставить sendmail сервера отправлять почту, но ничего в ответ не принимать. Строго для оповещений с сайтов. У меня вдс-ка с предустановленным exim4 на который, насколько я понимаю, "ссылается" sendmail. Т.е. фактически работает exim4.
Сначала настраиваем хост (my-host-name это имя нашего хоста с которого все будет ездить)
Теперь надо настроить сам sendmail. В моем случае, нужно перенастроеить exim4. Делается это примерно так:
Идем проверяем свою почту. Если письмо пришло - все ок и ура. Если нет - идем гуглить дальше :)
Дальше надо убедиться что на нашем сервере недоступен smtp, для этого нам надо сходить с локальной машины постучаться в 25 порт сервера и получить отлуп. Делается это например так:
Ещё маленькая фишка. Бывает так что по каким-то причинам, сервис рулящий веб-приложением надо перезапускать регулярно. В моем случае это node.js и делаю я это по крону раз в N времени. Так вот если перезапустить процесс кроном, то sendmail перестает работать, потому как приложение не знает где он, в path пути до него просто нет и соот-но он просто не находится. Точно так же можно передавать любые другие настройки переменных окружения. Как это делать смотрим ниже.
Сначала посмотрим где sendmail
Пользовался вот этим источником. Рекомендую на него взглянуть, надеюсь он ещё дышит.
Рассматривается такя ситуация: надо заставить sendmail сервера отправлять почту, но ничего в ответ не принимать. Строго для оповещений с сайтов. У меня вдс-ка с предустановленным exim4 на который, насколько я понимаю, "ссылается" sendmail. Т.е. фактически работает exim4.
Сначала настраиваем хост (my-host-name это имя нашего хоста с которого все будет ездить)
sudo mcedit /etc/hostsВ файле должны быть строки вида
127.0.0.1 localhost 111.111.111.111 hostname.my-hoster.net my-host-nameДалее меняем имя хоста в файле
sudo mcedit /etc/hostnameФайл должен выглядеть вот так (полностью, т.е. только имя хоста и все)
my-host-nameТеперь перегружаем службу которая грубо говоря обновляет имя хоста глобально
sudo /etc/init.d/hostname.sh stop sudo /etc/init.d/hostname.sh start # если такого скрипта нет, то пробуем иначе: sudo service hostname restartREM ещё такой вариант есть, для Debian 9 (stretch)
hostnamectl set-hostname my-host-nameТеперь выполняем команды
hostname hostname -fЕсли все правильно сделано, то они обе должны вернуть значение my-host-name (т.е. имя вашего хоста)
Теперь надо настроить сам sendmail. В моем случае, нужно перенастроеить exim4. Делается это примерно так:
sudo dpkg-reconfigure exim4-configПосле этого в мастере просто нужно выбирать значения (именно для exim4)
- internet site..
- вводим название вашего хоста (my-host-name)
- ip для smtp устанавливаем только 127.0.0.1 т.к. нам не нужны внешние подключения по smtp
- другие допустимые назначения оставляем по умолчанию
- домены для разрешенного релея - оставляем пустым
- машины для релея - оставляем пустым
- кол-во днс запросов на ваше усмотрение, я не ограничивал
- метод доставки я оставил тот же который был, т.е. /var/mail
- разделять не разделять файлы конфигурации - на ваше усмотрение, аргументы там описаны, я разделять не стал
sendmail -i my-email@my-host.comДалее вводим тект тестового сообщения. И по готовности нажимаем Ctrl+d
Идем проверяем свою почту. Если письмо пришло - все ок и ура. Если нет - идем гуглить дальше :)
Дальше надо убедиться что на нашем сервере недоступен smtp, для этого нам надо сходить с локальной машины постучаться в 25 порт сервера и получить отлуп. Делается это например так:
telnet my-host-name 25 Trying 111.111.111.111... telnet: Unable to connect to remote host: Connection refusedЕсли все так, то все тип-топ. Порт закрыт.
Ещё маленькая фишка. Бывает так что по каким-то причинам, сервис рулящий веб-приложением надо перезапускать регулярно. В моем случае это node.js и делаю я это по крону раз в N времени. Так вот если перезапустить процесс кроном, то sendmail перестает работать, потому как приложение не знает где он, в path пути до него просто нет и соот-но он просто не находится. Точно так же можно передавать любые другие настройки переменных окружения. Как это делать смотрим ниже.
Сначала посмотрим где sendmail
which sendmail /usr/local/bin/sendmailОк, видим путь. Если вдруг не видим то идем смотреть тоже самое но под sudo. Теперь идем в кронтаб и добавляем переменные окружения там.
crontab -eОткроется редактирование заданий для текущего пользователя. То есть все задания будут выполнены с правами текущего пользователя и сервис запустится с правами этого пользователя, если он запускается конечно согласно вашему плану :)
# это переменная которая рассказывает где искать sendmail, # другие нужные пути можно писать через разделитель - двоеточие # там будут искаться необходимые нам утилиты PATH=/usr/local/bin # это пример переменной окружения которую будет использовать само приложение NODE_ENV=production # это собственно само задание, гуглим по формату crontab чтобы понять что к чему # в данном случае скрипт будет срабатывать в 30 минут каждого четного часа */30 */2 * * * /home/user/blog/scripts/restart.shНу вот примерно так. Прошу не воспринимать эту заметку как полное руководство к действию, вполне возможно что для вашего случая все будет значительно отличаться. Но возможно это как-то поможет или хотя бы наведет на мысли в нужном направлении :) Успехов!
Пользовался вот этим источником. Рекомендую на него взглянуть, надеюсь он ещё дышит.
Comments
No comments here yet.