Василий Наумкин
С нами с 08 декабря 2012; Место в рейтинге пользователей: #1Настройка DKIM и SPF на Ubuntu 12.04 + Sendmail
DKIM — это цифровая подпись писем, отправляемых с вашего сервера. Она гарантирует, что письмо отправлено именно с него, и не было изменено.
Наличие DKIM на отправляемой корреспонденции крайне положительно сказывается на прохождении antispam тестов, поэтому лучше бы её настроить.
Краткий принцип работы заключается в том, что на сервере лежит закрытый ключ, которым подписываются исходящие письма. Удалённый почтовый сервер (Яндекс или Google) при получении письма видит в заголовках эту подпись и проверяет ее путем запроса открытого ключа из DNS домена.
Пример заголовка с DKIM:
Если нет — это подделка и, скорее всего, спам.
Под катом пошаговое how-to с картинками, для серверов, настроенных по этой инструкции, как научить Sendmail работать с DKIM.
Наличие DKIM на отправляемой корреспонденции крайне положительно сказывается на прохождении antispam тестов, поэтому лучше бы её настроить.
Краткий принцип работы заключается в том, что на сервере лежит закрытый ключ, которым подписываются исходящие письма. Удалённый почтовый сервер (Яндекс или Google) при получении письма видит в заголовках эту подпись и проверяет ее путем запроса открытого ключа из DNS домена.
Пример заголовка с DKIM:
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=modx-test.com; s=mail; t=1378025116; bh=E27pqP5aWa/XXOeVzzjMW+iw0W7wbbCe2B4toIRxP9M=; h=To:Subject:Date:From:Reply-To:From; b=GqprdvEYgq/Ff95fCDNzV4k1JLaMA9Pz5p5PUyv2bI0UVZ/S1xl6IyAZK4j3FwMCW 5cLe4IGcmnd+dNzNhe2bSj/kCIJg7ZyLM3mXAzEirGXdiqCc/LAZQOGR7udbMmm5YP 42pkMa2lI9FqKxAKq5BrtXbrWE+n+Mxc5dpQcGMw=Если подпись, сгенерированная сервисом, используя содержимое письма и открытой подписи совпадает с той, что указана в заголовке, значит — письмо настоящее и его не модифицировали после отправки с родного сервера.
Если нет — это подделка и, скорее всего, спам.
Под катом пошаговое how-to с картинками, для серверов, настроенных по этой инструкции, как научить Sendmail работать с DKIM.
Скидки на 17-18 августа
Отсутствуют.
На прошлый уйкенд почти ничего не купили, так что мы решили пока приостановить практику выходных скидок.
Займёмся другими делами.
На прошлый уйкенд почти ничего не купили, так что мы решили пока приостановить практику выходных скидок.
Займёмся другими делами.
Апгрейд modx-test.com и очередные скидки
Сегодня у меня сразу две хорошие новости:
1. Для сайтов modx-test.com открыт полный доступ ко всем платным дополнениям из нашего репозитория, на пробу.
Не нужно больше задавать вопросы «а может ли компонент x делать y» — нужно просто создать свой сайт и загрузить интересующее вас дополнение, для пробы.
Ключ для работы с репозиторием автоматически устанавливается в каждый сайт, и целые сутки вы можете проверять, стоит ли покупать дополнение с поддержкой и обновлениями, или нет.
2. Традиционные выходные скидки сегодня на прославленный mSearch2 и Office — за компанию.
1. Для сайтов modx-test.com открыт полный доступ ко всем платным дополнениям из нашего репозитория, на пробу.
Не нужно больше задавать вопросы «а может ли компонент x делать y» — нужно просто создать свой сайт и загрузить интересующее вас дополнение, для пробы.
Ключ для работы с репозиторием автоматически устанавливается в каждый сайт, и целые сутки вы можете проверять, стоит ли покупать дополнение с поддержкой и обновлениями, или нет.
2. Традиционные выходные скидки сегодня на прославленный mSearch2 и Office — за компанию.
Скидки 27 - 28 июля
Изо всех сил стараемся внедрить новую традицию скидок у нас в магазине. Врать не буду, пример берем в Playstation Store и Google Play.
Итак, сегодня распродаём компонент синхронизации товаров MS2 и 1С — МойСклад — всего за 990р. Заодно добавляем бонус — бесплатную загрузку компонента переоценки товаров msRevaluation.
Итак, сегодня распродаём компонент синхронизации товаров MS2 и 1С — МойСклад — всего за 990р. Заодно добавляем бонус — бесплатную загрузку компонента переоценки товаров msRevaluation.
Linode увеличили HDD в 2 раза
Я понимаю, что уже надоело, но деваться некуда — они опять сделали это.
Да, подлые Linode, как матерые наркобарыги, не дают нам слезть с иглы великолепного хостинга. На сей раз в ход пошёл особо гадкий приём — бесплатное увеличение HDD в 2 раза (ссылка на оригинальную новость). Причем, увеличивают уже с учетом предыдущих +20%.
Как и в прошлый раз, заходим в админку, кликаем справа на кнопку «Upgrade Available» и распределяем новое место, кликая на имеющийся HDD (нужно будет выключить сервер).
Лично я увеличил своп до 1024мб, на всякий случай, а все остальное отдал на основной раздел — на моём тарифе 1536 диск теперь 72Gb.
Да, подлые Linode, как матерые наркобарыги, не дают нам слезть с иглы великолепного хостинга. На сей раз в ход пошёл особо гадкий приём — бесплатное увеличение HDD в 2 раза (ссылка на оригинальную новость). Причем, увеличивают уже с учетом предыдущих +20%.
Как и в прошлый раз, заходим в админку, кликаем справа на кнопку «Upgrade Available» и распределяем новое место, кликая на имеющийся HDD (нужно будет выключить сервер).
Лично я увеличил своп до 1024мб, на всякий случай, а все остальное отдал на основной раздел — на моём тарифе 1536 диск теперь 72Gb.
Обновления в магазине
Распродажа дополнений на выходных прошла очень хорошо, так что мы решили продолжать эту новую традицию и пересмотреть ценовую политику.
Итак, изменения:
— Цены, которые были снижены на 30% — 50% в честь открытия магазина, стали постоянными. Товаров дороже 1990р нет.
— Цена на Uploadify временно снижена до 490р.
— Цена на MarkItUp теперь всего 490р.
— Практически каждые выходные мы будем устраивать распродажи дополнений со скидками до 50%.
С чем я всех и поздравляю. Посмотреть новые цены.
Итак, изменения:
— Цены, которые были снижены на 30% — 50% в честь открытия магазина, стали постоянными. Товаров дороже 1990р нет.
— Цена на Uploadify временно снижена до 490р.
— Цена на MarkItUp теперь всего 490р.
— Практически каждые выходные мы будем устраивать распродажи дополнений со скидками до 50%.
С чем я всех и поздравляю. Посмотреть новые цены.
Подавление ошибок php
Некоторое время назад мне сделали замечание, что использовать @ — «плохая привычка». На предложение доказать, что это именно так, я получил ссылку на Хабр, со статьей про управление ошибками.
Окей, наконец-то я узнал, как именно ими управлять, но чем же плоха привычка подавлять сообщения об ошибках, если ты знаешь, что делаешь?
На мой взгляд, плохого здесь нет и быть не может. Применение @ — это такое же управление ошибками, как и функция error_reporting() или директива в php.ini.
Однако, детальный разбор показал несколько иное.
Окей, наконец-то я узнал, как именно ими управлять, но чем же плоха привычка подавлять сообщения об ошибках, если ты знаешь, что делаешь?
На мой взгляд, плохого здесь нет и быть не может. Применение @ — это такое же управление ошибками, как и функция error_reporting() или директива в php.ini.
Однако, детальный разбор показал несколько иное.
Скрипт установки MODX для Ubuntu
После недавней статьи про настройку сервера было много вопросов, касающихся всяких мелочей. Поэтому я поднапрягся, и переделал скрипты jkenters для автоматической установки MODx.
Первичный ключ xPDOObject
Как известно, при создании собственных таблиц в MODX принято наследовать или xPDOSimpleObject, или xPDOObject.
Отличие между ними ровно одно — в SimpleObject уже прописан первичный ключ id, а в Object — нет. То есть, если вы хотите, чтобы у вашей таблицы создавалось поле id с становилось primary key — нужно наследовать SimpleObject.
Я, однако, люблю простые таблицы ключ-значение, в которые добавляю первичным ключом два и более полей сразу. Например, в репозитории пакет может быть в нескольких категориях, значит нужно создать таблицу extraCategoryMember из двух полей category_id и package_id.
Ключ id мне здесь совершенно не нужен, ведь он будет расти при каждой операции добавления пакета в категорию, а таких операций может быть очень много. Конечно, вряд ли INT(10) скоро закончится, но зачем хранить лишнее?
Отличие между ними ровно одно — в SimpleObject уже прописан первичный ключ id, а в Object — нет. То есть, если вы хотите, чтобы у вашей таблицы создавалось поле id с становилось primary key — нужно наследовать SimpleObject.
Я, однако, люблю простые таблицы ключ-значение, в которые добавляю первичным ключом два и более полей сразу. Например, в репозитории пакет может быть в нескольких категориях, значит нужно создать таблицу extraCategoryMember из двух полей category_id и package_id.
Ключ id мне здесь совершенно не нужен, ведь он будет расти при каждой операции добавления пакета в категорию, а таких операций может быть очень много. Конечно, вряд ли INT(10) скоро закончится, но зачем хранить лишнее?
Установка компонентов через MODX API
Предлагаю всем желающим готовую функцию для установки компонентов через Api.
Можно делать из консоли, можно из сниппета — не важно. Собственно загрузка файла выделена в отдельную функцию, которая пытается работать через file_get_contents(), если это не запрещено. Иначе использует cUrl.
Параметров всего 2: имя компонента и id провайдера пакетов (по умолчанию — 1, то есть, modx.com).
Можно делать из консоли, можно из сниппета — не важно. Собственно загрузка файла выделена в отдельную функцию, которая пытается работать через file_get_contents(), если это не запрещено. Иначе использует cUrl.
Параметров всего 2: имя компонента и id провайдера пакетов (по умолчанию — 1, то есть, modx.com).