KamoCRM

Закройте три пути ложного отказа, найденные в RecipientDomainValidator

FixEmailService
Порезанный
29 сентября 2026 г. в 02:05 UTC
Автор
Kamo
Обещать
38cd3d5

Независимый обзор D-luna-1 (email-fix-review-1.md) показал наличие двух БЛОКЕРОВ и МАССОРА. каждый настоящий ложный отказ от законной почты, продемонстрированный из кода уже в этом Репо: - Case (BLOCKER): AliasService.createAlias, SharedMailboxService.create **************** Все сохраняют адрес именно как администратор Напечатал его — настоящий ряд можно прочитать «Sales@kamocrm.com». Каждый просмотр сейчас нечувствительный к регистру в базе данных (LOWER(col) = LOWER(?)), охватываемой org id, которая все еще достигает собственных строк этой организации через каждую таблицу (org id HASH, col) Уникальный индекс, а не перекрестное сканирование - он просто не может использовать индекс. Отсортированный компонент диапазона для поиска точного значения в них. Функциональный индекс на LOWER (col) за таблицу (или нормализующий случай во время записи в этих трех службах) Восстанавливает простой поиск точки; ни то, ни другое не делается здесь без подписи, поскольку И то и другое больше, чем эта задача. Реализовано с помощью внутренних запросов EntityManager в RecipientDomainValidator, а не новые методы хранилища камо-общих библиотек. - Plus-tags (BLOCKER): sage+urgent@kamocrm.com теперь складывается в sage@kamocrm.com (EmailAddress.baseLocalPart(), тот же складной уровень доставки/подавления) уже применяется) до проверки почтового ящика — никогда для проверки псевдонима, поскольку alias - это собственный, специально созданный адрес. - Несколько корневых доменов (MAJOR): alias-domain адрес (kamouniverse.com) Для каждого домена в ******************* UI default (allowedDomain) — почтовый ящик на втором принадлежащем корне больше не читает как неизвестный только потому, что это не домен по умолчанию организации. - Unindexed Member Lookup (MAJOR): резервный запас MemberRepository удаляется. **************** не имеет индекса поддержки, поэтому он пробежал сканирование каждый член группы в организации за каждую действительно плохую догадку — именно это Собственная причина существования. В этом нет необходимости: этот класс работает только для организации на KamoMail, где реальный, доставляемый адрес всегда имеет ******************* (именно так и должно быть); член .email которого совпадает, но ни один из этих рядов не имеет почтового ящика на Общий сервер также, поэтому отправка к ним не удается в RCPT TO, независимо от того, что это Проверка сказала. См. класс javadoc для полного аргумента. - Truncation (NIT): **************** теперь закрывает свою прозу на 5 Названы адреса («и N больше»), так что вырезка из 300-угольника DownstreamErrors больше не может Разрежьте сообщение многих плохих получателей с середины адреса до MailPack. Добавлена подсказка Directory-lookup. Отвергнутые (отвергнутые) никогда не сокращаются. Находка МИНОР (существование оракула) принимается как рассуждение, а не изменение кода. Ответы на предполетную проверку «существует ли x@ownDomain» быстрее, чем уже существующие SendFailedException->422 RECIPIENTS REJECTED Path (настоящий RCPT TO) тот же самый-орг, сиденье-обозначенный абонент; он не открывает новую границу привилегий. Тесты (красный подтвердил, затем зеленый): RecipientDomainValidatorTest переписан против новый дизайн на основе EntityManager (зеркала ****************) Возвращение Я Макет запроса) с новыми кейсами для адреса сохраненного смешанного регистра, +tag против реального почтового ящика, +tag, который все еще не разрешен, и адрес домена псевдонима чей реальный почтовый ящик живет на не по умолчанию принадлежащем корневом домене (с +тег. SendFailureResponseTest получил кейсы за кэпированную прозу против неурезанной Структурированный список. Тяжелый тест mvn **************** 77 пробежек, 0 неудач.

Все изменения

Как вы видите судоходство?

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

Начните бесплатно навсегдаПосмотреть цены