Postfix Sasl | Courier-imap, Postfix

Упал почтовый сервер, быстро перетащил все на новый, запустил, но споткнулся об авторизацию SASL.
Первый момент – не показывает AUTH при пробах телнетом. Оказалось все просто, проверяем дает ли postfix авторизоваться без tls (смотрим main.cf):

smtpd_tls_auth_only = yes

Если есть такая строка то подключившись телнетом мы не увидим строки типа:

250 AUTH .....

Теперь предположим что имап и поп3 у нас работает а при отправке сасл не даёт авторизоваться. Самый простой вариант – использовать courier-authdaemond.
Он у нас уже прописан в rc.conf и запущен.

Правим конфиг sasl – /usr/local/lib/sasl2/smtpd.conf пишем в него:

pwcheck_method: authdaemond
log_level: 3
mech_list: PLAIN LOGIN
authdaemond_path:/var/run/authdaemond/socket

И права на директорию /var/run/authdaemond даем группе postfix.
Иначе можем поймать ошибку:

SASL authentication failure: cannot connect to Courier authdaemond: Permission denied

Postfix дублирование сообщений на два ящика | FreeBSD, Postfix

Простая фича postfix выручает когда надо продублировать поток сообщений для ящика на нашем сервере и стороннего почтового адреса (например дубль входящих сообщений на рабочий и личный ящик сотрудника).

Называется это BCC (что-то типа скрытых копий). Настраивается в master.cf куда добавляем строки с указанием на карты соответствия адреса получателя и адресата копии.

sender_bcc_maps = hash:/usr/local/etc/postfix/sender_bcc
recipient_bcc_maps = hash:/usr/local/etc/postfix/recipient_bcс

Создаем сами файлы:

touch /usr/local/etc/postfix/sender_bcc
touch /usr/local/etc/postfix/recipient_bcс

В файлы пишем пары адресов – ящик в нашем домене и ящику куда надо выслать копию. Разделитель – Tab.
Сохраняем и пересоздаем базы командами.

postmap /usr/local/etc/postfix/sender_bcc
postmap /usr/local/etc/postfix/recipient_bcс

Перезапускаем postfix или делаем reload.

PS: Все сообщения сервера можно дублировать директивой

always_bcc = backup@domain.com

Настройка поиска в Joomla | Joomla

Пытался найти нормальный модуль поиска для Joomla 1.5 но в результате конфликтов аякс версий с другими модулями вернулся к штатному. Просто надо поправить CSS и задать поле itemid в настройках модуля чтобы результаты поиска показывались не на главной странице (где у нас куча дополнительных модулей типа слайдеров, рекламы и т.д.) а на отдельной странице. Продолжить чтение →

Поиск строки в файлах | FreeBSD

Случилось так что проломали один из серваков. В файлы .js дописана строка с фреймом, в фрейм отображается зараженный модуль, фрейм скрыт за край окна браузера.

Ищем строку выводящую зловредный код:

find /www/sitedir -name '*.*' -exec grep -l "width:100px;height:100px;position:absolute;left:-100px" {} \;

Получим список файлов, строку в файлах убираем (руками, sed, awk, копируем из резервной копии)

Запрещаем писать в файлы .js:

find /www/sitedir -name '*.js*' -exec chflags uchg {} \;

Если надо снять запрет на запись:

find /www/sitedir -name '*.js*' -exec chflags nouchg {} \;

Далее смотрим что случилось, апгрейдим, латаем, переодим на новый сервак, в общем кто как решает подобные проблемы…

OpenCart и 2checkout.com | OpenCart

Прикрутил к магазину на OpenCart (1.5.3.1) модуль платежа через 2checkout.com. Поймал баг – магазин отдает сумму в дефолтной валюте, и если у нас к примеру, дефолтная валюта – доллар а цену мы выбрали в рублях – то при оформлении заказа получаем на странице оплаты цифру рублевой цены но уже в долларах. Например: товар стоит $3, в рублях это примерно 90руб. Оформляем через 2checkout.com и видим $90. Продолжить чтение →

Виртуальный телефонный номер | УАТС

Понадобился виртуальный номер. Ситуация такая – мы хотим некий номер для публикации скажем на нашем сайте. Но принимать телефонные звонки на свой стационарный или сотовый. Или к примеру нам срочно(!) нужен дополнительный номер для некоей разовой акции – опубликовали, приняли пару звонков, отвалились. Этот же номер можно настроить на прием SIP транка. Из того что нашёл и опробовал успешно – контора zadarma.ru но подобных сервисов достаточно (если кто пользуется по аналогичной схеме – прием звонков с переадресацией вызова – дайте знать, поиск хорошего тарифа всегда хорошо). В общем все достаточно просто – регистрируемся на сайте Zadarma (по сути это оператор voip телефонии), подключаем себе номер (не обязательно прямой – можно выбрать бесплатный вариант) и после этого активируем переадресацию. Важно что переадресация платная. Берут поминутно. У других операторов может быть подобный сервис – например у телфина берут абонентку, здесь тарификация поминутная, минута что-то около рубля (кто знает где дешевле – отметьтесь в комментах плиз, перебирать всех sip/voip операторов не очень хочется). В общем себе на заметку, и может кто-то подскажет другие варианты. Сам думаю ещё один номер взять у оператора сотовой связи – можно ли привязать на одну симку тот же МТС?

cadaver webdav | FreeBSD

В связи с распространением макоси и железок типа файловых хранилищ популярным становится webdav как способ получения доступа к содержимому этих самых железок.

Для винды нашёл bitkinex, но задача была – забирать файлики напрямую на машину с FreeBSD. Из консольных клиентов нашёл – cadaver но поскольку внятных примеров в мане нет пишу себе на заметку.
Продолжить чтение →

SEO, opencart, lighttpd | Lighttpd

По умолчанию opencart поставляется с файлом .htaccess для апача. Пути типа

/index.php?route=product/product*&manufacturer_id=

закрыты для поисковиков в роботс чтобы избежать дублей страниц если у нас включен SEO (ЧПУ). И поэтому наш магазин не индексируется поисковиками. Надо либо настроить SEO либо убрать ограничения из роботс.

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

Добавляем в описание хоста лайти:

url.rewrite-once = ( "^/$" => "/index.php?route=common/home" )
url.rewrite-if-not-file = ( "^/(.*)" => "/index.php?_route_=$1" )

В конфиге лайти снимаем комментарий с «mod_rewrite»,

server.modules = (
  "mod_access",
  "mod_auth",
 "mod_redirect",
  "mod_rewrite",
)

Включаем SEO на opencart. Если у нас прописан для товара SEO алиас – все будет работать.
В админку входим по пути site/admin/index.php

Даунгрейд php5 | FreeBSD, IPB

Проапдейтил php c 4 ветки до пятой (5.4), отвалился ipb. Пришлось откатиться до 5.3

Удаляем все пакеты php5 (с зависимостями)

pkg_deinstall -r -f php5

И ставим php53 и php53-extensions. Все.

 

natd не работает сеть | FreeBSD

Заг – специально для поисковиков, поскльку скорее всего именно так можно описать проблему. Например мы перенастроили на гейте сеть на другой шлюз, переключились на резервный интерфейс.
Перенастраиваем natd прописываем нужный интерфейс в rc.conf

natd_interface="xl1"

И здесь же меняем шлюз по умолчанию.

Далее правим rc.firewall (например нат у нас с дивертом):

${fwcmd} add divert natd all from any to any via ${oif2}

Делаем /etc/netstart и … ничего не работает.

Просто мы забыли перезапустит natd. Идем в /etc/rc.d и делаем:

./natd restart

Нат перезапустися с учетом конфигурации на новом интерфейсе.

Очистка бинарного лога mysql | FreeBSD, MYSQL

По дефолту mysql ведет бинарный лог – все транзкции пишутся в файл, и в далнейшем мы имеем возможность восстановить состояние базы на определенный момент. Есть при этом неприятный момент – бинарный лог бстро занимает свободное прострнство на диске. При этом удалять руками файлы типа mysqld-bin.00000Х не стоит – mysql следит за состоянием бинарного лога.

Итак если лог заниимает слишком много места добавляем в /etc/my.cnf строку в секцию [mysqld]:

expire_logs_days=60

Псл этого перезапускаем сервер. Все логи старше 60 дней сервер потрёт.

Проверяем состояние переменной:

mysql> show variables like "%exp%";
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| expire_logs_days         | 60    |
| ft_query_expansion_limit | 20    |
+--------------------------+-------+

Если логи не потрелиcь (или если не хотим перезапускать сервис) – делаем:

mysql> flush logs;

Очистка портов | FreeBSD

Периодически возникает желание пройтись по дереву портов и очистить те порты в которых забыл сделать make clean. Если сделать make clean в корне (/usr/ports) – начнется нудный процесс прохода по всем портам. Нашел в сети строку:

find /usr/ports/ -name 'work' -type d -exec make clean -C "{}/../" \;

Найдет все порты с каталогом work и запустить в них make clean.

PS: Вот ещё полезная строчка:

du -hd 1 /var

Покажет какой каталог занимает сколько места (глубина прохода 1).

autobackupmysql.sh автоматизируем бэкап Mysql | FreeBSD, MYSQL

Процесс резервного копирования разделяют на два типа – условно скажем – на физический и логический. Физический применим в таблицам типа myisam – когда мы можем просто заблокировать таблицы и скопировать файлы (MYD, MYI, frm). Этот тип выполняется к примеру скриптом mysqlhotcopy.

/usr/home/mysqlhotcopy.sh -u user -p pass --allowold --keepold --quiet database /path_to_back

Для «логического» бэкапа (бэкапа который генерирует логическую труктуру таблиц и запросы к базе, способные воссоздать таблицы) используется mysqldump.

mysqldump -uUSER -pPASS --databases base_name > /path_to_back/database.sql

Собственно для второго типа бэкапа есть скрипт autobackupmysql.sh – клон скрипта automysqlbackup.sh. Есть в портах, требует bash.

Поскольку в сети информации описывающей этот скрипт не нашел – пишем для себя.

Продолжить чтение →

Не собирается glib с ошибкой ./de.po:15: keyword “msgctxt” | FreeBSD

Поймал ошибку при сборке glib (установка mc).

./de.po:15: keyword "msgctxt" unknown
./de.po:15:8: parse error

Посоветовали обновить gettext. Помогло.

Не собирается порт ./m4.texinfo: Unknown command. | FreeBSD

Столкнулся с ошибкой в процессе апгрейда портов с помощью portupgrade. Попробовал обновить порты на которые ругался portupgrade руками, что-то поломал и получил не собирающиеся порты с ошибками типа:

./m4.texinfo:3499 Unknown command.

Нашел в сети способ который оказался более менее универсальным.
Продолжить чтение →