Задать вопрос
  • Можно ли запретить скачивание, но разрешить cross-origin запросы в .htaccess?

    shurshur
    @shurshur
    nAnley, можно взять да и посмотреть, какие заголовки прилетают в этих двух случаях, и написать фильтры под это дело.
  • Как отправить сообщение в Telegram по ссылке?

    shurshur
    @shurshur
    А ты бы хотел, чтобы при открытии какого-то телеграмного профиля у тебя были подставлены, например, матерные слова или оскорбления?
  • Можно ли запретить скачивание, но разрешить cross-origin запросы в .htaccess?

    shurshur
    @shurshur
    Совсем запретить - нет, нельзя. Любой может повторить те же самые заголовки, что делает браузер.
  • Почему cURL отправляет файл сертификата для Telegram-бота через терминал и через php по-разному?

    shurshur
    @shurshur
    Нет, проблема не в @, это всего лишь указание curl, что данные берутся не из значения параметра, а из файла, например:

    curl -d foobar - будет передана строка foobar;
    curl -d @foobar - будет передано содержимое файла с именем foobar.

    Скорее всего, надо файл не аплоудить, а просто передать его содержимое через параметр:

    'certificate' => file_get_contents($certPath)
  • Как сделать авторизацию через дискорд?

    shurshur
    @shurshur
    shaesnow, OAuth2 - стандартный протокол авторизации, реализаций море, примеров море, и я даже не глядя в гугл уверен, что есть и примеры реализаций, заточенных прямо на авторизацию именно через дискорд.
  • Как исправить ошибку Email rejected per DMARC policy?

    shurshur
    @shurshur
    Rokis, главное чтоб теперь не ломанули, потому что сражаться потом с яндексом приятного мало :)
  • Какие есть сервисы по типу SparkPost?

    shurshur
    @shurshur
    shaesnow, серверов у тебя явно нет, так как их содержание само по себе обходится в большие деньги и риски (сами сервера и комплектуху-то регулярно надо обновлять). Значит, арендуешь и перепродаёшь. Раз дохода даже одного бакса нет, то это значит, что объёмы мизерные, а наценка копеечная. И вся она уходит в лицензии на тот самый софт.

    Например, серваки с Celeron у Селектела начинаются от 2 тыс., с Xeon - от 4 тыс. Если предположить наценку в 500 рублей (наверное, за столько можно продавать), то 10 серверов дают дохода 5000 рублей. Пусть это 5 серверов по 2000 и 5 по 4000, наценка даёт 5000 рублей. Те две лицензии 4950 в месяц. Получается, оборот 35000, доход 50 рублей :)

    Конечно, цифры я взял с потолка, но для примерного понимания того, какой это хреновый бизнес, вполне подойдут. А ведь по-хорошему надо регистрировать если не ИП, то хотя бы самозанятость, платить налоги, вести бухгалтерию...

    Бизнес не может работать так, что сто рублей недостачи его похоронят. Это с самого начала была плохая затея. Рекомендую найти работу, это гораздо выгоднее и надёжнее.
  • Как реализовать передачу файлов между двумя компьютерами?

    shurshur
    @shurshur
    FeeFort, если там есть база данных, то есть и сервер. Вот на нём поднять веб-сервер и отдавать эти файлы.
  • Как обойти блокировку исходящего 25 порта на своем SMTP сервере?

    shurshur
    @shurshur
    Можно проверить, работает ли через порт 587, но в целом на домовом провайдере отправлять почту - так себе решение. Лучше арендовать для почтовика виртуалку или использовать сторонние сервисы для отправки почты типа SES.
  • Как исправить ошибку Email rejected per DMARC policy?

    shurshur
    @shurshur
    Rokis,
    Условий немало сравнивая с тем, что раньше было достаточно добавить php код для обработки формы и письма доставлялись без каких-либо проблем.


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

    Поэтому нынешние правила контроля отправителей - они правильные и неопходимые.

    но тестер показывает что ничего не изменилось.


    Значит, надо разбираться. В тестовом письме появился заголовок DKIM-Signature? Если нет, значит, настроено было неправильно.

    Мне кстати эта статья сразу же не очень нравится, поскольку там предлагают unix-сокет заменить на inet. Это имеет смысл только если надо разнести opendkim и postfix на разные серверы, а на одном сервере-то зачем? Впрочем, это несущественная мелочь (тем более opendkim вешается на localhost, недоступный из инета) и на работоспособность не должна влиять.

    Только тестовое письмо с сервера (с адреса mysite.ru) стало отправляться и то в папку спама.


    Да, потому что DMARC - это рекомендация, а не приказ. Сервер получателя принимает решение на основе комплекса факторов. Спамеры тоже не дураки и пытаются всех обманывать, см. например https://qna.habr.com/q/5993

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

    X-Spam-Flag: YES
    X-Spam-Score: 6.821
    X-Spam-Level: ******
    X-Spam-Status: Yes, score=6.821 tagged_above=-999 required=5
         tests=[BAYES_50=2.5, DATE_IN_FUTURE_03_06=3.027,
         NO_FM_NAME_IP_HOSTN=0.001, PDS_BTC_ID=0.499, RDNS_NONE=0.793,
         SPF_NONE=0.001] autolearn=no autolearn_force=no


    Для теста можно использовать этот сервис https://dkimvalidator.com/ , туда отправляешь письмо, на сайте показывается, каким оно пришло, со всеми заголовками и информацией о проверке его SpamAssassin. Вот дальше это этого и надо плясать.

    Возможно есть более простое решение для отправки писем на php через mail()?


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

    1. Сервер получателя не проверяет имя сервера как таковое. Он берёт IP сервера и делает с ним стандартные проверки: наличие PTR-записи, наличие для полученного имени A-записи, присутствие IP в DNSBL

    Имя указывается не в одном месте: это и адрес, указываемый в команде MAIL From протокола SMTP, и адрес, указываемый в заголовке From: письма. Эти адреса могут различаться. Почтовый сервер получает и проверяет первый адрес (хотя далее спам-фильтр может проверить всё содержимое письма, включая заголовок From:), а получатель видит второй.

    Например, если сервер отправителя передал MAIL From:foobar@site.ru, то сервер получателя проверит, что IP отправителя подпадает под SPF в TXT-записи домена site.ru (SPF домена хостера проверяться не будет), и добавит соответствующую оценку в спам-фильтр (такую, как SPF_PASS, SPF_FAIL, SPF_NEUTRAL).

    2. php должен быть настроен на отправку писем через правильный почтовик. В данном случае - надо проверить sendmail_path в php.ini. В доставленном письме по заголовкам Received: должно быть видно, что письмо прошло через свой локальный postfix.

    3. Получатели будут видеть то, что написано в заголовке From: письма. Туда можно в теории написать что угодно, хоть trump@whitehouse.gov.

    4. Почтовый сервер можно настроить на отправку с разными доменами. Например, пусть есть сервер mail.server.ru, можно в домене server.ru вообще не настраивать OSPF/DKIM/DMARC, а настроить в доменах site.ru и project.ru, далее с сервера отправлять именно с этими адресами. В специально для этого OpenDKIM можно настроить разные ключи на разные домены.

    5. Приватный ключ по той инструкции лежит в /etc/postfix/dkim/домен.private. Рядом кладётся публичный, который надо прописатьв в DNS (там в файлике готовая строчка для вставки в доменную зону TXT-записи). Приватный ключ, разумеется, никому показывать нельзя, он должен храниться только на этом сервере.

    6. Надо смотреть, что пишут тестеры, тот же dkimvalidator. В письме должен появиться заголовок DKIM-Signature. Надо также обратить внимание на проверки SpamAssassin и целенаправленно решать всё что там существенно мешает. Например, если там SPF_FAIL, то исказть, где именно в SPF что-то пошло не так.
  • Как реализовать передачу файлов между двумя компьютерами?

    shurshur
    @shurshur
    Román Mirilaczvili,
    Записать массив байтов в БД


    Это менее эффективно, чем положить там же рядом картинку в файл.
  • Какие есть сервисы по типу SparkPost?

    shurshur
    @shurshur
    shaesnow, экономить надо начинать с 1750+3200 рублей в месяц, ведь там вообще не космические технологии, и всё то же самое можно сделать бесплатно.
  • Какие есть сервисы по типу SparkPost?

    shurshur
    @shurshur
    shaesnow, есть целый ряд сервисов рассылки писем с API и с бесплатным пакетом, которого хватит на небольшие нужды. В интернетах полно обзоров.
  • Как исправить ошибку Email rejected per DMARC policy?

    shurshur
    @shurshur
    Чтобы отправлять почту, в наше время нужно выполнить много условий?

    1. Нужна PTR-запись для IP отправителя, и должна существовать соответствующая A-запись (например, 111.22.33.44 указывает на mail.site.ru, должна существовать A-запись для mail.site.ru, необязательно на тот же IP).

    2. Нужно описать SPF (TXT-запись с v=spf1 у домена site.ru), по которому данный IP должен быть доверенным для отправки почты.

    3. Нужно настроить DKIM и подписывать письма ключом, публичная часть которого описана в DNS.

    4. Должна быть описана политика DMARC в TXT-записи _dmarc.site.ru. При этом если там указано p=reject, то получателю предписывается полностью отвергать почту от недоверенных отправителей.

    Вот вероятнее всего что-то из этого сделано не так.
  • С чего сейчас начать карьеру веб-разработчика?

    shurshur
    @shurshur
    Фронтенд-разработка развивается такими темпами, что знания 8-летней давности почти не отличаются от отсутствия знаний вообще.
  • Какой корпоративный мессенджер выбрать на замену Teams?

    shurshur
    @shurshur
    Это довольно экстремальный выбор с точки зрения качества :) привет утечки памяти в браузере / клиенте, опаздывающие уведомления и всякие глюки. Покупка платной поддержки (с более качественной поддержкой пушей, чем в бесплатной) помогает не так сильно, как хотелось бы. Мы сейчас планируем перейти на свою сборку клиента со своими пушами, но от других недостатков это не поможет, конечно.

    Ещё есть Mattermost, который тоже бесплатный, но мы его так же глубоко не тестили. Ещё можно рассмотреть в качестве варианта Matrix Element, он реально хорош (быстрый и лёгкий, хоть и Electron, и память ваще не течёт, в отличие от Rocket), но наличие обязательной криптографии для личных чатов приведёт к проблемам с сопровождениям пользователей, которые будут терять свои ключи... Из экзотики смотрели на Zulip, у него забавная идеология субчатов по тэгам, которая с непривычки сносит крышу в попятке понять её.

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

    Могу сказать, что некоторые крупные организации (банки) у нас в стране начали допиливать под себя Rocket Chat и Mattermost. Насколько успешно - не в курсе.

    Но я думаю, что автор может быть готов и заплатить, и вот тут появляется много всяких других вариантов, в том числе отечественных, типа битрикс24 или росчат...
  • Почему телеграмм отрпавляет вебхуки с задержкой?

    shurshur
    @shurshur
    Вообще-то запуск двух ботов сразу не противоречит поллингу.

    Честно говоря, не пойму, в чём проблема. При таком запуске __name__ не будет нигде равен main, а gunicorn будет вызывать методы объекта app (инстанс класса Flask). При отправке сообщения webhook пишет сообщение, которое в нём первой строчкой? И хорошо бы после process_new_updates тоже сделать print. Можно ещё подёргать вебхук вручную с каким-нибудь данными, чтобы посмотреть, как он реагирует.
  • Зачем нужен Docker in Docker (Dind)?

    shurshur
    @shurshur
    Василий Алибабаевич, не только. Например, у нас есть большой сервис по предоставлению услуг развёртывания контейнеров, что будет, если клиенту нужно разворачивать свои контейнеры, которые пересекутся по именам с именами чужих контейнеров? Например, заведу я контейнер project-db и project-app, а кто-то ещё тоже решил свой проект назвать project и перечётся со мной, и что?

    Конечно, это можно решить отдельными виртуалками или LXC-контейнерами, но разворачивание из докера привлекательнее с точки зрения скорости деплоя и универсальности.

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