Упал почтовый сервер, быстро перетащил все на новый, запустил, но споткнулся об авторизацию 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 выручает когда надо продублировать поток сообщений для ящика на нашем сервере и стороннего почтового адреса (например дубль входящих сообщений на рабочий и личный ящик сотрудника).
Называется это 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 1.5 но в результате конфликтов аякс версий с другими модулями вернулся к штатному. Просто надо поправить CSS и задать поле itemid в настройках модуля чтобы результаты поиска показывались не на главной странице (где у нас куча дополнительных модулей типа слайдеров, рекламы и т.д.) а на отдельной странице. Продолжить чтение →
Случилось так что проломали один из серваков. В файлы .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 (1.5.3.1) модуль платежа через 2checkout.com. Поймал баг – магазин отдает сумму в дефолтной валюте, и если у нас к примеру, дефолтная валюта – доллар а цену мы выбрали в рублях – то при оформлении заказа получаем на странице оплаты цифру рублевой цены но уже в долларах. Например: товар стоит $3, в рублях это примерно 90руб. Оформляем через 2checkout.com и видим $90. Продолжить чтение →
Понадобился виртуальный номер. Ситуация такая – мы хотим некий номер для публикации скажем на нашем сайте. Но принимать телефонные звонки на свой стационарный или сотовый. Или к примеру нам срочно(!) нужен дополнительный номер для некоей разовой акции – опубликовали, приняли пару звонков, отвалились. Этот же номер можно настроить на прием SIP транка. Из того что нашёл и опробовал успешно – контора zadarma.ru но подобных сервисов достаточно (если кто пользуется по аналогичной схеме – прием звонков с переадресацией вызова – дайте знать, поиск хорошего тарифа всегда хорошо). В общем все достаточно просто – регистрируемся на сайте Zadarma (по сути это оператор voip телефонии), подключаем себе номер (не обязательно прямой – можно выбрать бесплатный вариант) и после этого активируем переадресацию. Важно что переадресация платная. Берут поминутно. У других операторов может быть подобный сервис – например у телфина берут абонентку, здесь тарификация поминутная, минута что-то около рубля (кто знает где дешевле – отметьтесь в комментах плиз, перебирать всех sip/voip операторов не очень хочется). В общем себе на заметку, и может кто-то подскажет другие варианты. Сам думаю ещё один номер взять у оператора сотовой связи – можно ли привязать на одну симку тот же МТС?
В связи с распространением макоси и железок типа файловых хранилищ популярным становится webdav как способ получения доступа к содержимому этих самых железок.
Для винды нашёл bitkinex, но задача была – забирать файлики напрямую на машину с FreeBSD. Из консольных клиентов нашёл – cadaver но поскольку внятных примеров в мане нет пишу себе на заметку.
Продолжить чтение →
По умолчанию 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
Проапдейтил php c 4 ветки до пятой (5.4), отвалился ipb. Пришлось откатиться до 5.3
Удаляем все пакеты php5 (с зависимостями)
pkg_deinstall -r -f php5
И ставим php53 и php53-extensions. Все.
Заг – специально для поисковиков, поскльку скорее всего именно так можно описать проблему. Например мы перенастроили на гейте сеть на другой шлюз, переключились на резервный интерфейс.
Перенастраиваем 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 ведет бинарный лог – все транзкции пишутся в файл, и в далнейшем мы имеем возможность восстановить состояние базы на определенный момент. Есть при этом неприятный момент – бинарный лог бстро занимает свободное прострнство на диске. При этом удалять руками файлы типа 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;
Периодически возникает желание пройтись по дереву портов и очистить те порты в которых забыл сделать 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).
Процесс резервного копирования разделяют на два типа – условно скажем – на физический и логический. Физический применим в таблицам типа 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 (установка mc).
./de.po:15: keyword "msgctxt" unknown
./de.po:15:8: parse error
Посоветовали обновить gettext. Помогло.
Столкнулся с ошибкой в процессе апгрейда портов с помощью portupgrade. Попробовал обновить порты на которые ругался portupgrade руками, что-то поломал и получил не собирающиеся порты с ошибками типа:
./m4.texinfo:3499 Unknown command.
Нашел в сети способ который оказался более менее универсальным.
Продолжить чтение →