Задать вопрос
  • Как обойти блокировку исходящего 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-контейнерами, но разворачивание из докера привлекательнее с точки зрения скорости деплоя и универсальности.

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

    shurshur
    @shurshur
    wirflve, судя по всему надо было исправить порядок следования тэгов? :)
  • Почему не работает функция в телеграмм боте?

    shurshur
    @shurshur
    Dmitrij, вообще-то ошибка прозрачно намекает, что токен неверный, и сервера Телеграма его не принимают. Хотя правильнее было бы приводить весь трейс, ведь в большинстве случаев важна не сама ошибка, а точное указание на место, где она произошла.
  • Таргетированный трафик с виртуальной машины через мост?

    shurshur
    @shurshur
    Bermut, для этого, вероятно, стоит использовать macvlan/macvtap в качестве интерфейса. Что позволить получить полноценный интерфейс мимо моста на хостовой системе.
  • Как убрать повторяющиеся элементы из двумерного массива php?

    shurshur
    @shurshur
    podushka, если вопрос был задан, то на это есть элементарная причина - автор не читает правила сайта и нарушает их.
  • Где лучше всего продавать скрипты на питоне и как?

    shurshur
    @shurshur
    "Защищать" простые скрипты на сто строчек нет никакого смысла, а сложные на десятки тысяч чаще всего продают вместе с сопровождением, поддержкой и доработками, потому "защищать" их вообще нет смысла.
  • Почему при попытке прописать 10-ю сеть на ubuntu 20 она вообще не пингуется?

    shurshur
    @shurshur
    KIRNESS, ещё лучше бы выяснить реальную маску, потому что между /16 и /24 есть ешё 7 вариантов маски, и более того, между /8 и /16 ещё 7.
  • Как убрать повторяющиеся элементы из двумерного массива php?

    shurshur
    @shurshur
    podushka, это вообще вопрос на элементарные знания языка. Хотя бы неэффективное или даже неработающее решение надо было сделать самостоятельно. Иначе это будет именно что задание.
  • Fedora 37. Bluetooth inactive (dead)?

    shurshur
    @shurshur
    Вообще говоря, при наличии в ядре подсистемы bluetooth и драйвера этот каталог должен существовать. Не знаю, правда, менялось ли что-то в свежих версиях ядра, но в 5.15 всё на месте. Можно попробовать вручную сделать modprobe btusb и проверить, появится ли /sys/class/bluetooth.

    Рекомендую почитать вывод команды dmesg (или файл /var/log/dmesg) на предмет сообщений, относящихся к bluetooth-контроллеру. Возможно, что-то сломалось в модуле, который его обслуживает. Может даже удастся нагуглить соответствующую ошибку.

    Можно показать dmesg тут (загрузив на pastebin), если самому непонятно в нём ничего.
  • Как убрать повторяющиеся элементы из двумерного массива php?

    shurshur
    @shurshur
    podushka, на этом сайте помогают решить проблему тем, кто испытывает сложности с самостоятельным решением. Например, не знает, какой метод выбрать, почему возникла какая-то ошибка, почему программа работает чересчур медленно или потребляет неоправданное количество памяти. Сюда приходят уже с попытками решения, но не раньше.

    Вопросы тут не могут быть заданиями. В списке возможных жалоб на вопрос даже есть такая: "Это задание, а не вопрос".