Pull to refresh
188
0

Пользователь

Send message

Грамотная настройка сервера отправки почты для скриптов PHP, настройка функции mail()

Reading time8 min
Views274K
В этом топике вы узнаете, как грамотно настроить, сервер исходящей почты и в частности функцию mail() в PHP. Сам являюсь жутким педантом. Люблю, что бы везде было все на своих местах, не терплю халтуры. Увидев один раз полную чушь в заголовках письма со своего сервера я разобрался с этим кардинально и безоговорочно. Под грамотной настройкой я подразумеваю такую, которая удовлетворяет потребности спам фильтров крупных почтовых систем, и просто выглядело красиво и осмысленно.

Как известно протокол SMTP не подразумевает никаких средств защиты от спама и аутентификации пользователя, поэтому крупными и не очень компаниями были придуманы «фиксы» безопасности протокола.
Если вы устанавливаете выделенный сервер с доменом размещенным на нем, очень рекомендуется выполнить данные настройки, что бы все было как надо.

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

Название заголовка выбрал именно такое, так как вначале своего пути я искал что-то вроде этого. Настраивать будем postfix, php, dns (ptr, spf), и другое.

Эта статья будет интересная людям, настраивающим выделеные сервера, но не менее интересна для обычных программистов.
К слову данную инструкцию я использую для своих проектов. Системы автоматизированного получения приглашений и получения виз в страны Шенгена: https://goingrus.com/ru, весь софт крутится на виртуальной машине.

Подробности под катом
Читать дальше →
Total votes 97: ↑71 and ↓26+45
Comments73

Пишем свой блог с фреймворком Fat-Free Framework

Reading time8 min
Views24K
На всякий случай — это перевод (многие не замечают этого в интерефейсе ХабраХабра).
«Fat-Free» можно перевести с английского как «Обезжиренный» — фреймворк и в самом деле поражает своим размером (55 КБ) и скоростью работы.


Я наконец-то нашёл лёгкий и быстрый фреймворк. Он умещается в файл размером всего 55Кб и имеет множество возможностей, о которых вы можете узнать на его официальном сайте, поэтому не буду повторяться. Вместо этого я решил сделать небольшой учебник, из которого вы узнаете как сделать свой блог на этом фреймворке.
Вам понадобится PHP 5.3 на сервере. Я использовал Ubuntu 11.04 для написания этого учебника, на которую легко устанавливается эта версия. Если вы работаете на RHEL или Centos то я предлагаю заглянуть вам на IUS Community Project для получения последней версии PHP.
Читать дальше →
Total votes 60: ↑45 and ↓15+30
Comments74

Конкурс по расследованию IT-инцидентов

Reading time2 min
Views14K

Совместно с Group-IB мы проводим конкурс по компьютерной криминалистике. Победитель получит возможность работать в Лаборатории Group-IB и заниматься интересной работой по расследованию IT-инцидентов в отличной компании.
Читать дальше →
Total votes 34: ↑27 and ↓7+20
Comments16

Volkswagen запрещает email’ы в нерабочее время

Reading time1 min
Views1.9K
По жалобам сотрудников, что получение электронной почты нарушает их покой, компания Volkswagen приняла решение изменить настройки Blackberry-серверов для сотрудников, которые получают почту на смартфоны Blackberry. Запрет начинает действовать через 30 минут после окончания рабочего дня (то есть в 18:15), и перестаёт действовать за 30 минут до его начала (в 7:00). Запрет не распространяется на голосовой трафик, а также не действует для старшего менеджмента.

Конечно, производительность труда сотрудников упадёт — многие привыкли работать в свободное время, например, проверяя почту в электричке по дороге на работу, или дома, хотя эти часы не оплачиваются работодателем. С другой стороны, Volkswagen поступил весьма предусмотрительно, потому что из-за вовлечения своих работников в круглосуточную занятость компания может подвергнуться давлению со стороны профсоюзов и соответствующих комитетов по охране труда.

Позиция профсоюзов такова: даже если сами сотрудники хотят читать почту 24 часа в сутки, работодатель должен запрещать такой трудоголизм, потому что бесплатная эксплуатация сотрудников в подобной форме недопустима.

Можно предположить, что примеру VW последуют и другие европейские компании. Некоторые доходят до экстрима и вообще отказываются от использования email, пропагандируя более эффективное общение через вики и профессиональные социальные сети. План полного отказа от email с 2014 года приняла одна из крупнейших в мире IT-компаний Atos (78 500 сотрудников в 42 странах).
Total votes 40: ↑30 and ↓10+20
Comments16

Dropbox — продолжаем меряться

Reading time3 min
Views13K
Скучно работается… Ну что же. попытаемся ещё больше автоматизировать то что предлагалось тут и здесь =)

На этот раз у нас остаётся лишь basy-скрипт. который позволяет довольно просто и вполне интерактивно нащёлкать себе рефералов. Да, MAC адрес автоматически обновляется, поэтому необходимость в виртуальной машине по сути отпадает… Хотя я бы всё же рекомендовал производить манипуляции со скриптом на ней. Ну просто потому что в процессе своей работы скриптик периодически затирает конфиг дроп-бокса.

Смотрим чего вышло и что с этим делать…
Читать дальше →
Total votes 180: ↑132 and ↓48+84
Comments73

AzaThread — многопоточность для PHP с блэкджеком

Reading time6 min
Views18K
В сети гуляет довольно много решений для эмуляции многопоточности в php. Чаще всего они основываются на форках, но есть и вариации на тему с использованием curl, proc_open и т.п.

Все встреченные варианты по тем или иным причинам меня не устроили и пришлось написать свое решение.
Набор требований у меня был следующий:
  • Использование форков;
  • Синхронный режим с сохранением интерфейса при отсутствии необходимых расширений;
  • Многократное использование дочерних процессов;
  • Полноценный обмен данными между процессами. Т.е. запуск с аргументами и получение результата по завершении;
  • Возможность обмена событиями между дочерним процессом-«потоком» и основным процессом во время работы;
  • Работа с пулом потоков с сохранением многократного использования, передачи аргументов и получения результатов;
  • Обработка ошибок выполнения;
  • Таймауты на выполнение работы, ожидание работы потоком, инициализацию;
  • Максимум производительности;

В результате получилась библиотека AzaThread (старое название — CThread).
Подробности
Total votes 156: ↑146 and ↓10+136
Comments66

Новая старая методика защиты от почтового спама на базе MTA Exim

Reading time16 min
Views29K
Хочу представить описание методики защиты корпоративной почты от спама, позволяющей использовать преимущества отдельных инструментов фильтрации адресов, избегая недостатков этих же методов.
Можно выделить, что эти приемы можно использовать на SMTP-прокси, закрывающем корпоративный почтовый сервер, находящийся в DMZ.

Зачастую администраторы избегают некоторых эффективных приемов фильтрации, из-за недостатков того или иного подхода. Например — фильтры DNSBL нередко дают ложные срабатывания на те узлы, которые попадают в него по ошибке — например, в составе всего блока адресов отдельного провайдера. Часто используемый способ фильтрации на основе простого определения PTR-записи тоже имеет свойство давать сбои в случаях, когда записи A и PTR — не совпадают, или просто возникли проблемы со службой DNS.

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

Данная методика существует давно, мне встречались разные реализации этой идеи разными специалистами, а эта вариация в более кратком виде была описана мною еще 5 лет назад в рассылке exim-users@exim.org (статью еще можно найти в архиве рассылки), но, несмотря на простоту реализации и наличие документации, сейчас они применяются почтовыми администраторами нечасто.

На примере почты компании «Horns'n'Hoofs» с доменом hornsnhoofs.com попробуем рассмотреть не выдуманные, а вполне работоспособные «в бою» приемы фильтрации.
Читать дальше →
Total votes 33: ↑33 and ↓0+33
Comments24

Интеграция JavaScript cookies в CURL-запросы

Reading time10 min
Views25K
В этой статье я расскажу об одной необычной проблеме, с которой мне однажды пришлось столкнуться по роду своей деятельности. Внимание: эта статья не для начинающих. Предполагается, что читатель уже имеет опыт веб-программирования и знаком с языком PHP, библиотекой CURL и основами HTTP.

Перейдем к описанию проблемы.
Мне нужно было написать скрипт бота для одного сайта с целью автоматизации некоторого процесса из нескольких шагов, не считая авторизации.
Читать дальше →
Total votes 51: ↑40 and ↓11+29
Comments68

Новичкам про управление шириной канала в Linux

Reading time7 min
Views74K
Некоторое время назад меня попросили настроить в удаленном филиале простейшую балансировку трафика. Работают они, бедолаги, через ADSL, и отправка электронных писем большого объема (сканы документов) забивает им весь обратный канал, что приводит к проблемам в работе с офисными онлайн-программами через VPN.
В качестве шлюза у них используется Linux (Fedora). До этого я пару раз видел, как подобная балансировка настраивается через ipfw на FreeBSD, а так как знаю механизм iptables достаточно хорошо, не ожидал особых проблем. Но поискав в Интернете, я был неприятно удивлен тем, что iptables мне тут совсем не помощник. И знания о порядке прохождения пакетов через его таблицы и правила мне почти не пригодятся. Нужно изучать tc из пакета iproute2.

Неожиданно для себя, я потратил два дня, для того чтобы более-менее разобраться в балансировке трафика средствами iproute2. Сначала попалась не самая лучшая для новичка статья про HTB(здесь). Различные примеры из Интернет тоже порой вводили в ступор, так как в них часто не было описания конкретных опций или смысла их применения. Поэтому я и попытался собрать полученные мною знания в одну статью, а главное описать все на доступном для новичков уровне.
Читать дальше →
Total votes 115: ↑109 and ↓6+103
Comments21

Как на самом деле работает mod_rewrite. Пособие для продолжающих

Reading time17 min
Views278K
image
Эта статья выросла из идеи продвинутого обучения наших сотрудников технической поддержки работе с mod_rewrite. Практика показала, что после изучения имеющихся в большом количестве учебников на русском языке саппортам хорошо дается решение шаблонных задач, но вот самостоятельное составление правил происходит методом проб и большого количества ошибок. Проблема заключается в том, что для хорошего понимания работы mod_rewrite требуется изучение оригинальной англоязычной документации, после чего — либо дополнительные разъяснения, либо часы экспериментов с RewriteLog.

В статье изложен механизм работы mod_rewrite. Понимание принципов его работы позволяет четко осознавать действие каждой директивы и ясно представлять себе, что происходит в тот или иной момент внутри mod_rewrite при обработке директив.

Я предполагаю, что читатель уже знаком с тем, что такое mod_rewrite, и не буду описывать его основы, которые легко найти в интернете. Также нужно отметить, что в статье освещается работа mod_rewrite при использовании его директив в файле .htaccess. Отличия при работе в контексте <VirtualHost> изложены в конце статьи.

Итак, вы изучили mod_rewrite, составили несколько RewriteRule и успели столкнуться с бесконечными перенаправлениями, со случаем, когда правило почему-то не ловит ваш запрос, а также с непредсказуемой работой группы правил, когда последующее правило неожиданно изменяет запрос, кропотливо подготовленный правилами предыдущими.

Почему так происходит?
Читать дальше →
Total votes 208: ↑203 and ↓5+198
Comments25

Пишем консольный переводчик для *nix на Python

Reading time4 min
Views17K
Здравствуйте. Наверняка Вам встречались незнакомые английские слова или фразы, и Вам постоянно приходилось лезть в браузер, открывать сайт с онлайн переводчиком и переводить, при этом думая как хорошо было бы, если это было реализовано бы в виде софта под *nix.
Читать дальше →
Total votes 40: ↑30 and ↓10+20
Comments26

Массовая почтовая рассылка через Exim или как не попасть в спам

Reading time4 min
Views98K
Жизнь была прекрасна и все было в этом мире хорошо, пока почта с моего сайта не стала активно посылаться в спам практически всеми крупными почтовыми серверами. Особенно усердствовал в этом Gmail. Частенько меня принимали за спамера в Yandex, реже в mail.ru и rambler.
image
Исходя из совокупности представленных факторов стало понятно, что надо что-то делать с настройками своего почтового сервера Exim. Посмотреть, как это было сделано, приглашаю под хабракат.
Читать дальше →
Total votes 88: ↑80 and ↓8+72
Comments41

Параллельные вычисления, класс-обёртка для pcntl_fork()

Reading time3 min
Views7.1K
Хочу показать свой базовый класс, который я использую для PHP скриптов.
Приемущество его в том, что легко можно «распараллелить» работу.
Используется pcntl_fork() со всеми «вытекающими».

(тестировалось только на линукс)
Читать дальше →
Total votes 43: ↑33 and ↓10+23
Comments47

Поддержка мышки в Midnight Commander запущенного из под tmux/screen

Reading time1 min
Views10K
в топике про tmux был поднят вопрос о неработоспособность мыши в случае когда mc запущен в сессии tmux либо screen.

После небольшого исследования функции init_xterm_support, выяснилось что включить поддержку мыши, не прибегая к пересборке mc, можно прямо сейчас, достаточно «правильно» (как того ожидает mc) установить переменную COLORTERM.

image

Таким образом, если вам необходимо чтобы мышь работала в обычном режиме, поместите следующие строки в файл ~/.profile

if [ $TERM = "screen" ]; then
    export TERM=xterm
fi
if [ -n "$TMUX" ]; then
    export COLORTERM=rxvt
fi


Так же отследить решение проблемы можно будет в соответствующем тикете вот тут www.midnight-commander.org/ticket/2479

PS: Буду рад если кому то данная информация пригодится…

UPD: забыл добавить что желательно добавить в ~/.tmux.conf
следующую строку.
setw -g xterm-keys on


если этого не сделать то сочетание shift-стрелки, shift-Fx работать не будут…
Total votes 51: ↑47 and ↓4+43
Comments12

Обработка входящей почты на PHP

Reading time2 min
Views37K
Хочу поделиться рецептом, как совместить php-скрипт и почтовый сервер Postfix для автоматической обработки входящей почты.

С помощью такой связки мы собираем статистику по количеству возвратов bounce-писем:Undelivered Mail Returned to Sender.

На других сайтах, я встречал подобный функционал, например, чтобы публиковать контент, отправив его на закрепленный за пользователем почтовый ящик.

Как это сделать...
Total votes 73: ↑62 and ↓11+51
Comments43

Регулярные выражения для валидации распространенных видов данных

Reading time2 min
Views490K
Для проверки текстовых полей на валидность обычно используют регулярные выражения. Существует несколько наиболе распространенных видов таких даных, как например номер кредитки, дата в определенном формате и т. д. На сайте html5pattern.com собирается коллекция регулярных выражений для таких данных (там это позиционируется, как возможное содержимое html5-атрибута pattern у inpit-элементов, но эти регулярные выражения можно использовать и для привычной валидации с помощью javascript). Актуальные для российской аудитории примеры, вместе с соответствующими регулярными выражениями вы можете посмотреть под катом.
Читать дальше →
Total votes 133: ↑97 and ↓36+61
Comments66

За баранкой пылесоса или умный Firefox

Reading time5 min
Views4.2K
Браузер, который сам ходит по ссылкам, открывает/закрывает табы, парсит или сохраняет весь контент на файловую систему — интересно посмотреть на такое, не так ли? Лично мне интересно было создать что-то подобное. Никакой фантастики! В общем в очередной раз во мне проснулось нечто вроде программистской лени вдохновения и вместо того, чтобы писать обычный crawler (он же spider или по-простому парсер сайта) на PHP, Perl или Ruby, я начал разбираться, как это сделать на FireFox.
Читать дальше →
Total votes 39: ↑31 and ↓8+23
Comments27

Практическое применение Asterisk в домашних условиях

Reading time5 min
Views34K
Как и у многих коллег по цеху, дома у меня построена небольшая сеть. И, конечно же, есть домашний сервер, этакий плацдарм для испытания новых технологий. С регулярной периодичностью тихими вечерами под монотонное бубнение какого-нибудь подкаста, меня посещают мысли поковырять что-то новое и интересное. Объявление провайдера об открытии услуги sip-телефонии натолкнуло меня на мысль пойти в сторону voip. Интересное и перспективное направление. Казалось бы, что тут такого – поставил софтфон, а еще лучше железный sip-шлюз и радуйся жизни. Но разве это тот путь, который мы выбрали, пойдя по пути инженера, сисадмина, программиста (нужное подчеркнуть). Гораздо интереснее будет поставить свой собственный VoIP-сервер, повесить на нем голосовую почту и пускай красивым женским голосом отвечает на звонки, когда никто не может снять трубку. Конечно выбор пал на Asterisk.
Читать дальше →
Total votes 47: ↑45 and ↓2+43
Comments33

Asterisk от простого — к сложному

Reading time4 min
Views169K

Вступление


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

Я ничего не имею против надстроек к Астериску, которые облегчают жизнь, но я боюсь, что скоро появился поколение администраторов Астериска, которые консоли в живую не видели ниразу.

Целью моих статей является желание показать, что астериск красив сам по себе, без дополнительных надстроек, что можно, используя минимальные, ускоряющие работу скриптовые языки — творить чудеса. Хочется показать, ищущим и желающим познать новое, людям нюансы и тонкости работы системы.
Читать дальше →
Total votes 48: ↑45 and ↓3+42
Comments41

Стратегия восстановления поврежденной таблицы в MySQL

Reading time4 min
Views11K
Началось все с того, что в один прекрасный момент ядро прибило демона mysqld и mysql_safe автоматом его перезапустил и все бы хорошо, да только таблицы в БД использовались MyISAM. В итоге пришлось воспользоваться myisamcheck но это совсем другая история. В процессе проверки и починки индексов пострадала одна таблица и было принято решение восстанавливать из бекапов, хорошо, что раз в сутки делаются.

Исходные данные:
  • имеем сервер БД с MySQL на борту;
  • поврежденную таблицу логов(статистики) чего угодно, что постоянно заполняется и может например не использоваться какое-то время;
  • суточный бекап;
  • бинарные логи с последнего суточного(полного) бекапа.

Задача:
  • сервер должен быть доступен для работы;
  • новые данные должны попадать в таблицу;
  • восстановить целостность данных.

Ожидаемый результат:
данные в поврежденной таблицы восстановлены без останова базы дынных;
таблица содержит все данные включая текущие.
Читать дальше →
Total votes 39: ↑36 and ↓3+33
Comments9

Information

Rating
Does not participate
Location
Varna, Varna, Болгария
Registered
Activity