Обо мне

4X_Pro
4X_Pro
Живу в Сети с 25 ноября 2000 г.
Веду блог с 8 января 2011 г.

Контакты

Немного рекламы

Рубрика: "Администрирование" - Xpro.Su: заметки о жизни в Интернете

Рубрика: "Администрирование"

Почтовая рассылка с собственного сервера

Администрирование, Сайтостроительство, Linux Оставить отзыв »

Часто при массовой рассылке новостей или уведомлений с сайта, стоящего на собственном сервере, возникают проблемы с тем, что письма либо не доходят, либо уходят в спам. Я решил составить небольшой список мер, которые помогут этого избежать.

  1. Первое, что следует сделать — это настроить запись обратного DNS (она же reverse DNS, она же запись PTR-типа). Сделать это обычно можно через интерфейс хостинга. Если там подобной опции нет, то придется обратиться в техподдержку. Проверить корректность работы обратного DNS можно тут:
  2. Если ваш хостер поддерживает IPv6, обязательно создайте в DNS запись типа AAAA с вашим IPv6-адресом. Без него могут не проходить письма на GMail.
  3. Убедитесь, что в заголовках письма есть строка Precedence: bulk.
  4. Обязательно указывайте в полях From и To имена получателя и отправителя. Убедитесь, что они и поле Subject корректно кодируются в Base64, если содержат кириллицу или какие-то спецсимволы (и наоборот, если там только латиница и пробелы, они НЕ ДОЛЖНЫ кодироваться). Для этого, возможно, потребуется модифицировать скрипт отправки в CMS, через которую делается рассылка.
  5. Если есть возможность, реализуйте отписку одним кликом и пропишите адрес для нее в поле заголовка List-Unsubscribe: <URL>.
  6. Сделайте SPF-запись для своего домена. Делается она следующим образом: в редакторе DNS нужно создать запись TXT-типа такого вида (запись создается для корня домена):

    v=spf1 ip4:ваш_IP ip6:ваш_IPv6 a mx ~all

    Если вы используете привязку домена к Яндекс.Почте, то запись нужно чуть изменить:

     v=spf1 ip4:ваш_IP ip6:ваш_IPv6 include:_spf.yandex.ru a mx ~all
  7. Установите OpenDKIM, настройте его работу для подписи отправляемых писем и сделайте необходимые записи в DNS. Описание процесса настройки для postfix (внимание: нужно использовать вариант с chroot, если у вас настройки postfix по умолчанию) и для sendmail в Ubuntu.
  8. Создайте DMARC-запись (в редакторе DNS нужно создать запись типа TXT для имени _dmarc) такого вида:
    v=DMARC1; p=none; sp=none; rua=mailto:postmaster@ваш.домен
    (вместо postmaster может быть другой адрес, главное, чтобы он существовал и был в этом же домене)
  9. Если у вас используется сертификат для HTTPS, настройте его использование и для отправки почты через TLS-соединение вместо обычного SMTP (однако не все сертификаты допускают такое использование). Пример настройки для Postfix.
  10. Регулярно проверяйте логи сервера (обычно это /var/log/mail.log или /var/log/messages.log) на предмет ошибок почты и неработающих адресов (по коду ошибки 550) и удаляйте их из списка рассылки. (Особенно это важно для Mail.Ru, который после примерно двух десятков попыток отправки писем на несуществующие адреса на какое-то время блокирует дальнейший прием писем с сервера.)
  11. Для проверки корректности SPF и DKIM записей можно использовать сервисы MxToolbox и Mail-Tester. С помощью MxToolbox можно также удостовериться, что сервер не внесен в черные списки.

Если выполнить все эти пункты, то доля дошедших до подписчиков писем значительно повысится.

SSHFS вместо FTP

Администрирование, Сайтостроительство, Linux, Личная эффективность Оставить отзыв »

Довольно часто мне приходится заниматься отладкой скриптов прямо на рабочем сервере. Обычно в этом случае я использовал Filezilla, который хорош всем, кроме одного: после каждого изменения какого-либо файла он требует подтвердить его загрузку на сервер, на что и время теряется, и очень раздражает лишнее переключение между окнами. И вот недавно нашел другой вариант: использовать sshfs. Если есть подключение к серверу по SSH, то с ее помощью можно работать с удаленными файлами так же как с локальными. Все изменения будут отправляться на сервер сразу же после сохранения в редакторе, без каких-либо дополнительных действий или подтверждений. В результате отладка ускоряется в разы!

Чтобы использовать sshfs, нужно сначала установить соответствующий пакет. В Debian и Ubuntu это делается так:

Читать далее »

Отправка уведомлений на почту и в Telegram

Администрирование, Linux Оставить отзыв »

При написании shell-скриптов, работающих по cron, иногда бывает нужно отправить пользователю уведомление о какой-то ситуации. Простейший способ — отправить EMail с помощью команды mail (работает, если на сервере установлен какой-либо MTA, например, postfix, и пакет mailutils; если MTA нет, можно воспользоваться утилитой msmtp, которая отправляет почту через внешний почтовый сервер):

echo "Текст сообщения" | mail -s "Тема сообщения" admin@example.com

Но иногда требуется сообщить о чем-либо более оперативно, чтобы уведомление пришло на мобильный телефон. Лучшим решением в этом случае является отправка SMS через шлюз EMail=>SMS, но бесплатных шлюзов сейчас не осталось. Поэтому я нашел другое решение: отправлять сообщения в Telegram с помощью Bot API. Делается это так:

Читать далее »

Буфер обмена в Putty под Linux

Разное, Администрирование, Linux Оставить отзыв »

Каждый, кто пользовался SSH-клиентом Putty под Linux, сталкивался с тем, что в ней не работают привычные способы работы с буфером обмена: ни Ctrl+C/Ctrl+V, ни Ctrl+Ins/Shift+Ins, ни меню по правой кнопке мыши. Тем не менее, поддержка буфера обмена в Putty все же имеется. Делается это так: просто выделяем нужный текст мышью и щелкаем по выделению левой кнопкой. Все, данные в буфере! Но чтобы вставить их оттуда куда-либо еще, например, в текстовый редактор, нужно нажать не Ctrl+V, как обычно, а щелкнуть средней кнопкой (или колесиком) мыши. Аналогично, если нужно вставить данные в Putty из другой программы, тоже нужно щелкать средней кнопкой мыши по окну Putty.

Удаление файлов старше N дней

Администрирование, Linux 1 отзыв »

Часто требуется удалить только те файлы, которые последний раз изменялись раньше определенного количества дней. Например, старые файлы сессий или временные файлы. В Linux это делается достаточно просто командой

find путь -type f -mtime +дни -print | xargs rm -f

Здесь find находит по указанному пути. все файлы со временем модификации более чем указанное количество дней назад, выводит их список, который передается утилите xargs, которая для каждого полученного аргумента вызывает rf -f. В случае, если команда выполняется через cron, пути нужно прописывать полностью, например:

/usr/bin/find ./ -type f -mtime +2 -print | /usr/bin/xargs /bin/rm -f

Как перейти на формат WebP с минимальными изменениями сайта

Администрирование, Сайтостроительство, Ускорение сайтов Оставить отзыв »

Некоторое время назад появился новый формат для графических изображений — WebP. Этот формат обладает рядом преимуществ по сравнению с JPEG: поддерживает как сжатие с потерями, так и сжатие без потерь, а также прозрачность изображений (альфа-канал), и во многих случаях сжимает изображения эффективнее (на моих сайтах — изображения в WebP получаются 30-35% меньше). Но к сожалению, полностью перейти на этот формат пока не так просто. Во-первых, сейчас его полноценно поддерживают только Web-броузеры, работающие на основе WebKit, а Firefox и IE/Edge — нет. Во-вторых, исправить на уже существующем сайте расширения всех файлов с .jpg на .webp может быть весьма трудоемкой задачей. Но недавно я нашел интересное решение, которое предложил Vincent Orback на Github: использовать подмену JPEG на WebP с помощью mod_rewrite. Для этого добавим в .htaccess такие строки:

Читать далее »

Несколько советов, как делать резервные копии баз данных

Администрирование, Сайтостроительство, Linux 3 отзывов »

На первый взгляд, сделать резервную копию базы данных какого-либо сайта предельно просто, если есть доступ к утилите mysqldump и планировщику заданий cron. Добавляем в планировщик запись вида:

3 14 * * * /usr/bin/mysqldump -u root -pпароль имя_базы > путь/backup.sql

и все, каждый день в 3 часа 14 минут будет сниматься дамп. Время для резервного копирования следует выбирать так, чтобы в этот момент нагрузка на сервер была минимальной за сутки.
Но такое решение недостаточно надежно. Если база повредится, скажем, в 3:12, то дамп будет перезаписан пустым файлом.
Для защиты от этого имеет смысл сохранять перед снятием новой копии сохранять старую, а также делать отдельные копии через определенные промежутки времени. Например, я сохраяю еженедельную и ежемесячную, а чтобы меньше нагружать SQL-сервер, просто копирую файлы дампа:

Читать далее »

Доступ к MySQL на VDS через SSH-туннелирование

Администрирование, Сайтостроительство, Инструменты веб-мастера Оставить отзыв »

Думаю, многие обладатели VDS сталкивались с такой проблемой: на VDS запущен MySQL, висящий только на localhost и недоступный снаружи из соображений безопасности, и нужно внести какие-то изменения в базу. Приходится либо подключаться по SSH и работать через консольный клиент (что далеко не всегда удобно), либо ставить phpMyAdmin. Но есть и другой способ: использовать SSH-туннелирование, и пробросить порт MySQL-сервера с VDS на локальный компьютер. Через командную строку это делается следующим образом:

ssh -L локальный_порт:localhost:удаленный_порт логин@сервер

где локальный порт — номер порт на домашнем компьютере, удаленный порт — порт на сервере.
То же самое можно сделать и через SSH-клиент PuTTY. Заходим там в настройках соединения в Connection/SSH/Tunnels, вводим в source port номер локального порта (например, 3307), в destanation — localhost и удаленный порт (localhost:3306), и нажимаем "Add". Соединяемся с сервером, запускаем на своем компьютере локальный SQL-клиент (например, HeidiSQL) и в настройках соединения ставим localhost 3307. И все, база на VDS теперь так же легко доступна, как база на домашнем компьютере!

Настройка кеширования статики в Apache

Администрирование, Ускорение сайтов 6 отзывов »

Далеко не все знают, что по умолчанию в Apache кеширование отключено. Это означает, что каждый раз, когда пользователь просматривает страницу, ему приходится каждый раз скачивать все файлы сайта: и CSS, и JavaScript, и картинки. Это создает лишнюю нагрузку на сервер, расходует траффик пользователя и замедляет работу сайта. Что же сделать, чтобы этого не было? Очень просто: прописать в настройках Apache выдачу заголовков, которые позволят использовать кеширование на стороне пользователя. Делается это очень просто:

Читать далее »

Настройка suexec под Debian

Администрирование Оставить отзыв »

Недавно потребовалось на своем VDS с Debian 7 создать отдельного пользователя и предусмотреть для него возможность запуска скриптов от его имени. Как выяснилось, это не особо сложно:

Читать далее »