Локализация интерфейса Wix-установщика

Делал немецкому ComputerBild кастомную версию дистрибутива. Заодно поменял и язык интерфейса установщика. Делается через добавление директивы -cultures и указание нужной языковой пары в .wxs файле сценария:

lightArgs: -ext WixUIExtension -cultures:de-de

Языковые пары для WixUI и подробности применения.

Но локализация оказалась странная – на немецком оказался не весь интерфейс:

Wix. Не все тут на немецком. А должно бы...

Антиспам, я не спам!

Суть проблемы: отправленные письма возвращаются с 554-ой ошибкой (“Email Error – 554 Message not allowed…”). Это принимающие сервера раскручивают цепочку отправителя, то есть меня, видят несоответствия и отказываются принимать письмо.

Настроил, что надо и проверил рейтинг здесь и получил 9/10. Альтернативная мерялка.

Что делал на примере @denglad.com.

Шаг первый. Прописал все доверенные IP, которые участвуют при оправке письма в SPF записи. У меня получилось так:

v=spf1 ip4:5.196.198.20 a mx ip4:151.80.168.26 ~all

Где 151.80.168.26 – IP с которого уходит письмо, а 5.196.198.20- IP на котором расположен сам почтовый сервер для denglad.com.

То есть принимающий сервер видит в записи, что оба IP являются доверенными и ставит зелёный флажок.

Да, тут надо еще вот что отметить…

Так сложилось, что я шлю свои письма не “из России”. То есть до сервера за бугром проброшен тоннель, письма идут на сервак и с него уходят адресатам. Так что IP отправителя значится как 151.80.168.26, а не питерский AvangardDSL или мобильный МТС. 🙂

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

А теперь уж просто по привычке – должно быть.

Шаг второй. Связал в PTR записи свой IP и mail-сервер от имени которого уходят письма, что бы при обратном запросе по IP всплывало имя сервака, отправившего письмо.

То есть при запросе host mail.denglad.com я должен видеть

mail.denglad.com has address 5.196.198.20

А при ответном запросе host 5.196.198.20 должно приехать

*someIP4*.in-addr.arpa domain name pointer mail.denglad.com

У бывшего хостера пару IP<->mailserver можно было самостоятельно связать из контрольной панели. В случае с БитВеб пришлось писать в саппорт. Добавили оперативно.

Да, PTR запись, которую можно прописать для своего домена в разделе контрольных записей (A-/MX-/и т.д.) решением проблемы не является. Для чего она там для меня осталось загадкой.

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

Осталось разобраться с цифровой подписью и получить 10/10 рейтинг.

Как попасть в выдачу Гугля за 30 минут?

Элементарно!

В панели Google Webmaster Tools у нужного сайта в разделе Сканирование -> Просмотреть как Googlebot ввести адрес новой страницы и жамкнуть Добавить в индекс.

Войля: не прошло и часу – страница уже там 😉

Еще про хостинг

Аж 10 лет жил на CIFNet – околосврусовском хостинге хороших русских пацанов в Чикаго. Но из Штатов пришлось съехать из-за других, уже нехороших русских и белорусских пацанов. Чёрные деньки… ;(

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

Пошли пробы всякого трэша, вроде Евробайта, Битвеба, Кейвеба. Тогда же попробовал ФастВПС, Фоззи, ИнтоВПС, Линод, Хецнер, ВПСуа.

В итоге осел в Нидерландах у Sinaro.Host. Описал ситуацию, причины переезда. Пацаны сказали 🙂 – у нас такого не будет, давай к нам! Вот почти пять лет – полёт нормальный.

Уже после выбора хостинга попалась ссылка на rootwelt#. На первый взгляд сладко и разумно. Но уже не пробовал…

Пора валить! Меняю *nix сервер

Примерно так меня обрадовал мой хостёр Fornex, получив очередную порцию бредовых “абузов” от немецких “антиспамеров” clean-mx (Герхард, кстати (шеф этой лавки), потом объявился – мы с ним и раньше общались – извинился за долгий ответ и рапортовал, что логично включил сайты в whitelist).

Оба повели себя, как неадекваты: немцам плевать на отправляемые им false positive заявки, а хостёру плевать на бредовость полученной писанины.

Валить, так валить.

В результате я успешно переехал с сервера в Германии на говносервер во Франции от БитВеб (эти – ещё одни неадекваты) к отличным пацанам SinaroHost. Стало дешевле и вроде, в среднем по больнице, чуток быстрее (пингомерялки раз и дваз).

Попутно пришлось пройтись по всем граблям, по которым ходил в прошлый свой переезд три года назад. Опишу для себя будущего, где они лежат. Мало ли чего…

1. Копирование файлов с сервера на сервер

Я тащил все объемы данных через пару zip -r denglad ./ в Германии -> свой комп -> unzip denglad.zip во Франции. Мне сказали, что я не прав и лучше вот так:

rsync -avux root@<fornex_ip>:/path/to/your/data/on/remote/server/SITENAME /path/on/the/local/server/

После чего на серваке во Франции будет копия данных из Германии.

Два момента: 

  • для источника SITENAME указываем, для получателя – нет
  • фигачить надо из под настоящего SSH клиента (в FAR’е оно опять не взлетает)

2. Запуск скрипта по приходу письма на определенный email

На старом сервере было сделано по описанию отсюда. Сейчас таблицы виртуальных юзеров не обнаружилось. Но по адресу /etc/exim/aliases обнаружилась таблица реальных email, прописанных на сервере.

Залепил в описании действий для нужного ящика заказдеся@:

[email protected]:”|/var/www/scriptus/order2database.php”,[email protected]

А скрипту выставил права

chmod a+x /var/www/sriptus/order2database.php

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

3. Апачевский Alias на директорию и символьная ссылка aka symlink

Суть в том, что для .ru сайта не существует целого набора папок и их содержимого. Они – точная копия .com папок.  Нафига?

Тут два пути: для статики и для скриптов.

Со статикой рецепт более очевидный  и делается на Apache. Он на поверхности и виден сразу в конфиге к .ru сайту:

 Alias /images/ “/var/www/USERNAME/data/www/SITECOM/images/”

php_admin_value open_basedir “/var/www/USERNAME/data:.:/var/www/USERNAME/data/www/SITECOM/:.”

То есть сам алиас и права на доступ к паке .com сайта.

С динамикой (со скриптами и вызовами из них других скриптов) облом. Пришлось задействовать symlink и создавать “призрака” для каждой нужной папки:

 ln -s /var/www/USERNAME/data/www/SITECOM/comrufolder ./comrufolder

Не очевидно – раз. Я, например, забыл, что использовал symlink на прошлом сервере и недоумевал, чего прописанные через Alias скрипты не работают (когда память вернулась, вспомнил что на рабочей Windows7 у меня тоже реализованы символьные ссылки – через mklink). 😉

Ну и второй момент: символьная ссылка – она на уровне системы и если, например будет SITE2COM, то папку /comrufolder/ там уже не создашь – линка на SITECOM ведёт. Придётся папку иначе называть.

4. Выгоняю пуделя и делаю SSL A-класса

Чтобы https-сайт засветился зелёненькой буковкой A при тестировании на SSLLabs надо отключить протокол SSL3 и слабые алгоритмы шифрования (у меня это был RC4).

У меня вебсервер крутится на Apache и правки нужно вносить в /etc/httpd/conf.d/ssl.conf (был бы nginx – правил бы его конфиг). Добавил две строки:

SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK

И перезапустил Apache:

service httpd restart

Похожий подъём с переворотом для Nginx.

5. Убираю версию Nginx и PHP из ответа сервера

Добавляю в файл настроек Nginx или в подключаемом /etc/letsencrypt/options-ssl-nginx.conf (только для https)

server_tokens off;

Но можно и в /etc/nginx/nginx.conf, в раздел http {}, конечно же… 😉

И реложу Nginx

service nginx reload

Добавляю в основной /etc/php.ini, если в системе один нативный php или в php.ini для каждого юзера в папке /user/data/php-alt/

expose_php = off

и реложу либо php

service php-fpm reload

либо апач оптом, если есть альтернативные версии php

service httpd reload

Полезные CLI-команды для *nix

  • df -h – информация о свободном месте на диске
  • yum repolist – просмотр всех установленных репозитариев
  • grep -r 'letsencrypt' /etc/httpd – поиск файлов с вхождением текста, начиная с папки
  • uname -a – просмотр полной информации о версии ядра
  • rm -r testfldr – удаление файла или папки
  • ls -l testfldr – просмотр, куда ведёт symlink
  • yum list installed | grep geo – показывает установленные пакеты, с вхождением ‘geo’ в имя
  • rpm -ql GeoIP – покажет все установленные пакеты с вхождением ‘GeoIP’ в имя
  • rpm -qa | grep kernel – покажет все установленные ядра системы
  • yum remove [kernel_version] – удалит ядро с этим именем
  • shutdown -r now или reboot – перезагрузка системы
  • cp -R folderFROM folderTO – копирование папки ИЗ В

Вот, Денисик, что помнил записал, что вспомню – допишу.

Питайся правильно, дорогой! 😀