Отправляем почту через яндекс

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

создал на pdd.yandex.ru доменную почту, создал ящик noreply и стал гуглить, как же люди решают эту проблему через postfix.

 

Нашлось две статьи

Номер раз  .

Краткое содержание:

postfix

Вариант красивый, кроме одного но. в 2015 году яндекс SMTP работает только TLS и с радостью выдает ошибку 503 с URL http://help.yandex.ru/mail/mail-clients/ssl.xml

 

Ладно, нагуглил еще один вариант, с posfix.

Краткое содержание:

screencapture-estmnenie-com-postfix-send-mail-via-smtp-yandex-html-1430338599764

 

но там нам предлагают поюзать Stunnel4, для соединения с smtp.yandex.ru через SSL, что совсем не входило в мои планы.

 

Тут же люди предлагают поюзать небольшую утелитку ssmtp, которая как раз делает то, что мне нужно, и не устраивает из этого простого дела очень сложное мероприятие.

screencapture-debian-pro-1128-1430338866458

Сделал снепшот сервера, снес нафиг postfix

yum remove postfix

и все что там связано с sendmail

 

killall sendmail
chkconfig —level 0123456 sendmail off
yum remove ‘sendmail*’

 

все настроил, но не взлетело.

Пишет

send-mail: Connection lost in middle of processing
send-mail: Connection lost in middle of processing

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

 

 

Stylebot Tampermonkey GreaseMonkey

В продолжении темы модификации существующего сайта, расширения CSS

Stylebot

https://chrome.google.com/webstore/detail/stylebot/oiaejidbmkiecgbjeifoejpgmdaleoha

 

так же для js это Tampermonkey Хром и GreaseMonkey firefox

—-

для приятной работы

Chromium Wheel Smooth Scroller  — плавная прокрутка в хроме

Full Page Screen Capture — делает скрин страницы

Как принимать сайт

Это большая статья, в которой описываться, как принимать сайт, чтобы у вас потом было как можно меньше проблем с ним.

Статья будет обновляться по мере появления свободного времени.

 

1. HTML код. В 2015 году логично, что все сайты должны быть написано на html5. В начале странице должен быть код

<!DOCTYPE html>

Если там что то другое, следует узнать, почему разработчик выбрал другой стандарт. При выборе другого стандарта, со временем вы сталкиваетесь с разными проблемами, когда другие сервисы (соц. кнопки лайки) ожидают от вас код на html5 и сами написано с разметкой html5.

 

2. Проверка на стандарты. Проверьте CSS на соблюдение стандартов W3C. Сейчас это ссылка https://jigsaw.w3.org/css-validator/ . Если есть ошибка, необходимо их устранить.

 

3. Проверьте HTML на стандарты. То же, что и во втором пункте, только проверка HTML. Сейчас это  можно сделать по ссылке http://validator.w3.org/

 

4. Проверьте сайт на наличие JS ошибки. Для этого, проще всего открыть сайт (несколько страниц) в хроме, нажать f12 (в windows) и перейти на вкладку Консоль.

На картинке видно, что на сайте 10 ошибок. По хорошему там должно быть 0.

error1

 

5. Проверить сайт на загрузку всех файлов. Так же нажимаем f12 и переходим на вкладку Network. Перезагружаем страницу, и смотрим, чтобы не было красных строк с ошибками 404 или 500.

На примере видно, что они файл не загружен. 404 — ошибка, означает, что файл не найден. На новом сайте, при приемке такое не должно быть.

error2

Хочется заметить, что это не универсальный способ проверить, все ли файлы, которые есть на сайте, загружаются. Если у вас есть доступ к серверу, посмотрите в логах сервера, есть ли ошибки 404 или 500. Но если это внешний файл, ошибки 404 не будет в логах, в этом случае подходит только просмотр через хром.

6. Проверьте, что ваш сайт успешно работает (загружается) при отключенном интернете. Возможно, какие то JS подключены с внешних источников, вот так:

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>

на примере фрейворк jquery загружается с гугл сдн.  Если сайт гугл перестанет работать, ваш сайт не должен пострадать. Это легко сделать следующим образом

<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.11.2.min.js"><\/script>')</script>

Если вы во всем этом ничего не понимаете, просто проверьте, что сайт будет работать при «отключенном» интернете.

7. Проверьте, что все кнопки из социальных сетей загружаются только после загрузки сайта. Ни один раз уже было такое, что на фейсбуке, вконтакте проблемы, их код мне нравиться не загружается. Что происходит в таком случае? У пользователя ваш сайт всегда находится в состоянии «идет загрузка страницы».

Как это сделать?  Используйте обработчик load в jQuery

 $(window).load(function() {
 $('<script/>').attr('src', 'https://apis.google.com/js/plusone.js').appendTo('body');
 });

На примере показано, что кнопка g+ будет загружена только после того, как ваш сайт успешно загружен. В этом случае у вас не будет провисание в скорости загрузки сайта, даже в том случае, если apis.google.com перестал работать.

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

 

продолжение следует.

 

 

 

 

 

Принудительно запускаем fsck во время следующей перезагрузки

По некоторым причинам вам может понадобиться принудительно заставить систему выполнить fsck во время перезагрузки. Для этого достаточно создать пустой файл с именем forcefsck в вашей системе

touch /forcefsck


Проверить диск

umount /dev/sdb1 #thumb drive
fsck -AR -y

Быстро вставить из Ворда

Заказчик часто присылает отформатированный текст в ворде. Его надо перенести на сайт, с сохранением табличек, список и тд. Но если выделить все это и вставить в WYSIWYG, вы получите много лишних тегов MS OFFICE. они примерно такие:

<h1 align="left" style="margin: 6pt 0cm 12pt; text-indent: 0cm; page-break-before: always;">
<o:p></o:p>

ужас ужас, грязь, и мусор.

Чтобы этого не было, лучше вначале вставить сюда http://ckeditor.com/demo переключиться на исходник, и тогда уже все вставить на сайт.

Но я еще перед этим удаляю STYLE, у меня свои стили для сайта. Это делается через Sublime — EDIT — TAG — REMOVE

Notepad++

Я обожаю эффективно работать.

Если что-то делаешь долго, и это очень не нравиться, нужно делать так, чтобы это было легко и быстро.

У меня всегда открыт notepad++ с 10 вкладками для всего.  Если нужно что-то записать, сразу туда.

Одна из фич notepad++ это multi cursor, который есть в саблайме, пхпшторм, да наверное везде он.

Включается он так:

multiEdit

Бекап mysql routines

Недавно столкнулся с такой проблемой. Развернул бекап mysql базы в среде разработке, и не нашел хранимые процедуры. Бекап я делаю через штатную програмку mysqldump. Она хороша тем, что это официальный инструмент для бекапа, он входит в пакет mysql.

Итак, чтобы mysqldump сохранял процедуры, нужно добавить ключ

--routines

Полностью команда:

#!/bin/sh
data=`/bin/date +%d.%m.%Y_%H-%M-%S`
/usr/bin/mysqldump --user=root --password=pass --routines name_db > /root/sql/sql-dump_${data}.sql

mysqldump есть еще много нюансов работы. Один из важным моментов — она блокирует БД, на время работы, так что, если ваше БД больше гига, лучше это делать на слейв сервере.

А так можно всю БД забекапить

/usr/local/bin/mysqldump --all-databases --default-character-set=utf8 --user=root --password=passroot > /home/webmaster/sql-dump.sql

Путь до mysqldump  может быть другой.

Узнать его можно командой

which

which mysqldump

Атака SlowHTTP

Есть такой вид атаки SlowHTTP. Это когда берется большой файл (1мб хватит) и начинает «тянуться» клиентом оооочень долго. При этом сокет сервера занят. 256  сокетов может открыть apache (если нет nginx).  Чем интересна данная атака, что для нее не нужно много ресурсов. Мне удавалось программой slowhttptest повесить свои, вполне серьезные продакшен сервера.

Решается эта проблема ограничением на соединение от одного IP, в примере 50 соединений на 80 порт с одного IP.

-A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 50 -j REJECT --reject-with tcp-reset