type TranslationRow = readonly [string, string, string, string, string, string];

type LocalizedBlogSource = {
  category: TranslationRow;
  description: TranslationRow;
  sections: readonly { title: TranslationRow; body: TranslationRow }[];
  slug: string;
  title: TranslationRow;
};

// Row order: ko, en, zh, ja, vi, ru. Example domains are illustrative, not live provider settings.
export const SPF_PERMERROR_LOCALIZED_BLOG_SOURCE = {
  slug: "spf-permerror-duplicate-txt-records",
  category: ["메일 전달률", "Email deliverability", "邮件送达率", "メール到達性", "Khả năng gửi email", "Доставляемость почты"],
  title: [
    "SPF PermError 해결: 회사메일 TXT 레코드가 두 개일 때 합치는 순서",
    "Fixing SPF PermError: How to Merge Two Company Email TXT Policies",
    "解决 SPF PermError：如何合并两条企业邮箱 TXT 策略",
    "SPF PermError の解決方法：会社メールの TXT レコードが2件ある場合",
    "Khắc phục SPF PermError: Gộp hai chính sách TXT cho email công ty",
    "Как исправить SPF PermError: объединение двух TXT-политик корпоративной почты",
  ],
  description: [
    "회사 도메인에 SPF TXT 레코드가 두 개라 PermError가 날 때, 실제 발송 서비스를 확인하고 정책을 하나로 합친 뒤 검증하는 순서를 설명합니다.",
    "When two SPF TXT policies cause PermError, identify every active sender, merge the authorized mechanisms into one policy, and verify DNS and real mail.",
    "当同一域名的两条 SPF TXT 策略导致 PermError 时，先核实所有实际发信服务，再合并授权项并验证 DNS 和真实邮件。",
    "同じドメインの SPF TXT が2件あり PermError になる場合、実際の送信元を洗い出し、許可項目を1つにまとめて DNS と実際のメールで検証します。",
    "Khi hai chính sách SPF TXT gây PermError, hãy xác định mọi nguồn gửi đang dùng, gộp quyền gửi vào một chính sách và kiểm tra DNS cùng thư thực tế.",
    "Если две SPF-политики TXT вызывают PermError, выявите действующих отправителей, объедините разрешения в одной записи и проверьте DNS и реальные письма.",
  ],
  sections: [
    {
      title: ["SPF TXT가 두 개면 왜 문제가 될까요?", "Why do two SPF TXT policies cause an error?", "为什么两条 SPF TXT 策略会报错？", "SPF TXT が2件あるとなぜエラーになるのか", "Vì sao hai chính sách SPF TXT gây lỗi?", "Почему две SPF-политики TXT вызывают ошибку?"],
      body: [
        "새 발송 도구를 연결한 뒤 일부 수신처에서 메일이 거절된다면 같은 호스트 이름에 v=spf1로 시작하는 정책이 둘인지 확인하세요. RFC 7208은 둘 이상 선택되면 permerror를 반환하도록 규정합니다. 모든 TXT 레코드가 하나여야 한다는 뜻은 아닙니다. 다른 용도의 TXT는 별개입니다. 오류가 곧 모든 메일의 반송을 뜻하지는 않으므로 실제 결과도 확인해야 합니다.",
        "If mail starts failing after a new sending tool is connected, check whether the same DNS owner name has two values beginning with v=spf1. RFC 7208 requires permerror when more than one SPF policy is selected. This does not prohibit unrelated TXT records. A PermError does not mean every receiver must reject every message, so inspect actual delivery as well.",
        "接入新的发信工具后若部分收件方拒信，请查看同一 DNS 主机名下是否有两条以 v=spf1 开头的策略。RFC 7208 规定选出多条 SPF 时返回 permerror，这不表示其他用途的 TXT 也只能有一条。PermError 也不代表所有收件方必定拒信，还需检查实际投递结果。",
        "新しい送信ツールを接続して一部で不達になったら、同じ DNS 名に v=spf1 で始まる値が2件ないか確認します。RFC 7208 は SPF が複数選択された場合に permerror を返すと定めます。他の用途の TXT まで1件にする意味ではありません。必ず全メールが拒否されるわけではないため、実際の配信結果も確認します。",
        "Nếu thư bị một số nơi từ chối sau khi kết nối công cụ gửi mới, hãy kiểm tra cùng một tên DNS có hai giá trị bắt đầu bằng v=spf1 không. RFC 7208 quy định trả về permerror khi chọn được nhiều chính sách SPF; các TXT phục vụ mục đích khác vẫn có thể tồn tại. PermError không đồng nghĩa mọi thư đều bị từ chối, vì vậy vẫn phải kiểm tra kết quả gửi thực tế.",
        "Если после подключения нового сервиса часть писем не доставляется, проверьте, нет ли двух значений v=spf1 у одного имени DNS. RFC 7208 требует возвращать permerror при выборе нескольких SPF-политик. Это не запрет на TXT-записи другого назначения. Не каждый получатель обязательно отклонит каждое письмо, поэтому проверьте фактическую доставку.",
      ],
    },
    {
      title: ["검사된 도메인과 DNS 관리 위치를 찾습니다", "Find the checked domain and its DNS manager", "找到被检查的域名和 DNS 管理处", "検査対象ドメインと DNS 管理先を探す", "Tìm tên miền được kiểm tra và nơi quản lý DNS", "Найдите проверяемый домен и его DNS-провайдера"],
      body: [
        "반송문이나 인증 결과에서 SPF를 검사한 MAIL FROM 도메인을 확인합니다. 화면에 보이는 From 주소와 다를 수 있습니다. 그 도메인의 실제 네임서버가 가리키는 관리 서비스에서 정확한 호스트 이름의 TXT를 조회하고 v=spf1 값의 개수를 셉니다. 루트 도메인과 하위 도메인을 구분하고, 변경 전 기존 값과 테스트 결과를 백업하세요.",
        "Read the MAIL FROM domain used for the SPF check in a bounce or Authentication-Results header; it can differ from the visible From address. Query TXT at that exact owner name through the service controlling the authoritative nameservers. Distinguish the root from a subdomain, count values starting with v=spf1, and save the current values and test results before editing.",
        "从退信或认证结果中找出 SPF 实际检查的 MAIL FROM 域名，它可能不同于可见的 From 地址。到当前权威名称服务器所指向的 DNS 平台，查询该主机名下的 TXT。区分根域名和子域名，统计 v=spf1 的条数，并在修改前备份原值及测试结果。",
        "不達通知や認証結果から SPF が検査した MAIL FROM ドメインを確認します。表示上の From と異なる場合があります。権威ネームサーバーの管理先で、その名前の TXT を調べます。ルートとサブドメインを区別し、v=spf1 の件数を数え、変更前の値とテスト結果を保存します。",
        "Đọc tên miền MAIL FROM được dùng để kiểm tra SPF trong thư trả lại hoặc kết quả xác thực; nó có thể khác From hiển thị. Tại dịch vụ quản lý nameserver có thẩm quyền, tra TXT của đúng tên đó. Phân biệt tên miền gốc và tên miền con, đếm giá trị v=spf1, rồi lưu cấu hình và kết quả thử trước khi sửa.",
        "В уведомлении о недоставке или заголовке аутентификации найдите домен MAIL FROM, для которого проверялся SPF: он может отличаться от видимого From. У действующего DNS-провайдера запросите TXT точного имени. Разделите корневой домен и поддомен, подсчитайте записи v=spf1 и сохраните прежние значения и результаты тестов до правки.",
      ],
    },
    {
      title: ["삭제 전에 발송 서비스를 조사합니다", "Inventory senders before deleting anything", "删除前先盘点发信服务", "削除前に送信サービスを棚卸しする", "Kiểm kê nguồn gửi trước khi xóa", "Проверьте отправителей до удаления записей"],
      body: [
        "회사 메일함 외에 견적 도구, 주문 알림, 뉴스레터도 같은 도메인으로 발송할 수 있습니다. 한 정책을 무조건 삭제하면 살아 있는 서비스의 인증이 끊길 수 있습니다. 각 발송 경로의 담당자, 마지막 사용일, 발송 도메인, 공급자가 현재 안내하는 SPF 값을 표로 기록하고 실제 발송 내역과 대조하세요.",
        "The mailbox may not be the only sender. Quotation tools, order notifications, and newsletters can use the same domain. Deleting one policy blindly can break a live service. List each sending path, owner, last use, sending domain, and current provider-recommended SPF value, then compare the list with real sending history.",
        "除了公司邮箱，报价工具、订单通知和通讯邮件也可能使用同一域名。直接删除其中一条策略可能让仍在使用的服务失去认证。逐一记录发信路径、负责人、上次使用时间、发信域名和供应商当前推荐的 SPF 值，再与实际发信记录核对。",
        "会社メール以外にも見積もりツール、注文通知、ニュースレターが同じドメインを使う場合があります。一方を無条件に消すと現役サービスの認証が途切れます。送信経路ごとに担当者、最終利用日、送信ドメイン、事業者の最新 SPF 指示を記録し、実際の送信履歴と照合します。",
        "Ngoài hộp thư công ty, công cụ báo giá, thông báo đơn hàng và bản tin có thể gửi bằng cùng tên miền. Xóa bừa một chính sách có thể làm dịch vụ đang dùng mất xác thực. Ghi từng đường gửi, người phụ trách, lần dùng cuối, tên miền gửi và SPF hiện được nhà cung cấp hướng dẫn, rồi đối chiếu lịch sử gửi thật.",
        "Помимо почтового ящика домен могут использовать сервис счетов, уведомления о заказах и рассылка. Удаление одной политики без проверки может нарушить работающий сервис. Для каждого канала запишите ответственного, дату последнего использования, домен отправки и актуальные указания поставщика по SPF, затем сверьте с журналом отправок.",
      ],
    },
    {
      title: ["허용 대상을 한 정책에 합칩니다", "Merge authorized senders into one policy", "将授权发信方合并进一条策略", "許可する送信元を1つの方針にまとめる", "Gộp nguồn gửi được phép vào một chính sách", "Объедините разрешенных отправителей в одной политике"],
      body: [
        "완성된 SPF 문자열 두 개를 그대로 이어 붙이지 마세요. v=spf1은 처음에 한 번, ~all 또는 -all 같은 종료 조건은 끝에 한 번만 두고 필요한 include, ip4 등만 검토해 합칩니다. 예를 들어 v=spf1 include:_spf.google.com include:sender.example ~all은 모양을 보여 주는 가상 예시이며 sender.example은 실제 공급자 값이 아닙니다. 반드시 본인 공급자의 정확한 안내로 바꾸세요. 전용 하위 도메인의 정책은 루트 정책과 혼동하지 않습니다.",
        "Do not concatenate two complete SPF strings. Use v=spf1 once at the start, review the needed include or ip4 mechanisms, and place a single ending such as ~all or -all at the end. The sample v=spf1 include:_spf.google.com include:sender.example ~all only illustrates the shape; sender.example is not a real provider value. Replace it with your provider's exact instructions. Do not mix a dedicated subdomain policy with the root policy.",
        "不要直接拼接两条完整的 SPF 字符串。开头只保留一次 v=spf1，核对需要的 include 或 ip4，结尾只保留一个 ~all 或 -all。示例 v=spf1 include:_spf.google.com include:sender.example ~all 仅展示结构，sender.example 并非真实供应商值，必须换成自身供应商提供的准确内容。专用子域名的策略也不要与根域名混淆。",
        "完成済みの SPF 文字列を二つ連結しないでください。先頭の v=spf1 は一度だけにし、必要な include や ip4 を確認して、~all または -all などの終端も最後に一度だけ置きます。v=spf1 include:_spf.google.com include:sender.example ~all は形を示す架空の例で、sender.example は実在の事業者の値ではありません。必ず利用先の正確な指示に置き換え、専用サブドメインの方針と混ぜないでください。",
        "Đừng nối nguyên hai chuỗi SPF hoàn chỉnh. Chỉ dùng v=spf1 một lần ở đầu, rà soát include hoặc ip4 cần giữ và đặt một điều kiện kết thúc như ~all hoặc -all ở cuối. Ví dụ v=spf1 include:_spf.google.com include:sender.example ~all chỉ minh họa cấu trúc; sender.example không phải giá trị của nhà cung cấp thật. Hãy thay bằng hướng dẫn chính xác và đừng trộn chính sách của tên miền con riêng với tên miền gốc.",
        "Не склеивайте две готовые строки SPF. Оставьте один v=spf1 в начале, проверьте нужные include или ip4 и один завершающий механизм ~all либо -all в конце. Строка v=spf1 include:_spf.google.com include:sender.example ~all лишь показывает форму: sender.example не является значением реального поставщика. Используйте его точные инструкции и не смешивайте политику выделенного поддомена с корневой.",
      ],
    },
    {
      title: ["DNS 조회 한도까지 점검합니다", "Check the DNS lookup limit", "同时检查 DNS 查询上限", "DNS 参照回数の上限も確認する", "Kiểm tra cả giới hạn tra cứu DNS", "Проверьте лимит DNS-запросов"],
      body: [
        "한 줄로 합쳐도 include, a, mx 등 조회가 필요한 항목이 많으면 다른 PermError가 납니다. RFC 7208은 평가 중 해당 조회를 일으키는 항목을 10회로 제한합니다. 사용하지 않는 발송 도구부터 제거하고, 남길 항목은 공급자 문서와 실제 사용 기록을 근거로 결정하세요. 무작정 IP를 고정하거나 평탄화하면 공급자의 서버 변경을 놓칠 수 있습니다.",
        "One record can still fail if include, a, mx, and other lookup-producing terms exceed the limit. RFC 7208 limits these terms to ten during evaluation. Remove unused senders first and justify retained mechanisms with provider documentation and actual use. Blind IP pinning or flattening can miss a provider's future server changes.",
        "即使合成一条，include、a、mx 等会触发查询的项目过多也会出现另一种 PermError。RFC 7208 将评估中的此类项目限制为十次。先移除不再使用的发信工具，再依据供应商文档和真实使用记录决定保留项。盲目固定 IP 或平铺记录可能错过供应商之后的服务器变更。",
        "1件にまとめても include、a、mx など照会を伴う項目が多いと別の PermError になります。RFC 7208 は評価時の対象項目を10回までとします。使わない送信元を先に外し、残すものは事業者の文書と利用実績で判断します。安易な IP 固定やフラット化は送信サーバーの変更を見落とすおそれがあります。",
        "Một bản ghi vẫn có thể lỗi nếu quá nhiều mục include, a, mx và mục gây tra cứu khác. RFC 7208 giới hạn số mục đó ở mức mười trong quá trình đánh giá. Hãy bỏ nguồn gửi không dùng trước, rồi dựa vào tài liệu nhà cung cấp và lịch sử thật để giữ phần còn lại. Ghim IP hoặc làm phẳng tùy tiện có thể bỏ lỡ thay đổi máy chủ của nhà cung cấp.",
        "Даже одна запись может дать PermError, если include, a, mx и другие элементы вызывают слишком много запросов. RFC 7208 ограничивает их десятью при проверке. Сначала уберите неиспользуемые сервисы, а оставшиеся обоснуйте документацией поставщиков и реальной активностью. Слепая фиксация IP или уплощение может пропустить будущую смену серверов.",
      ],
    },
    {
      title: ["공개 DNS와 실제 발송을 따로 검증합니다", "Verify public DNS and real sending separately", "分别验证公开 DNS 与实际发信", "公開 DNS と実際の送信を別々に検証する", "Kiểm tra DNS công khai và gửi thư thực tế riêng", "Отдельно проверьте публичный DNS и отправку"],
      body: [
        "관리 화면의 저장 성공만으로 완료가 아닙니다. 권한 있는 DNS에서 같은 이름의 SPF가 하나인지 다시 조회하고, 변경이 전파된 뒤 사람의 메일함과 거래 알림 등 각 발송 경로로 외부 메일함에 시험 발송합니다. 수신 메일의 SPF 결과를 확인하세요. SPF 통과는 From 도메인 정렬이나 DKIM, DMARC 통과를 보장하지 않습니다. Gmail 550 인증 오류 가이드와 도메인 메일 진단 도구를 관련 다음 단계로 안내하되, 실제 운영 도메인의 설정은 공급자 공식 문서에 맞춰 확인해야 합니다.",
        "A saved DNS form is not proof. Query the authoritative public DNS again to confirm exactly one SPF policy at the name. After propagation, send test mail from each path, including the human mailbox and transaction alerts, to an external inbox and inspect SPF results. SPF pass does not guarantee From-domain alignment, DKIM, or DMARC. The Gmail 550 guide and domain-mail diagnostic are useful next steps, but confirm live settings against your provider's current documentation.",
        "DNS 管理界面显示保存成功并不等于完成。重新查询权威公开 DNS，确认该名称下只有一条 SPF。传播后，从人工邮箱和交易通知等每条发信路径向外部邮箱发送测试邮件并查看 SPF 结果。SPF 通过不保证 From 域名对齐、DKIM 或 DMARC 通过。可以继续参照 Gmail 550 指南和域名邮件诊断工具，但真实域名配置仍须与供应商最新文档核对。",
        "DNS 管理画面で保存できただけでは完了ではありません。権威 DNS で同じ名前の SPF が1件か確認し、反映後は人のメールと取引通知など各経路から外部へ試験送信して SPF 結果を読みます。SPF の成功は From ドメインの整合、DKIM、DMARC の成功を保証しません。Gmail 550 の案内とドメインメール診断を次の参考にしつつ、実運用の値は事業者の最新文書と照合してください。",
        "Lưu thành công trong giao diện DNS chưa phải xong. Hãy tra lại DNS có thẩm quyền để chắc đúng tên chỉ có một SPF. Sau khi thay đổi có hiệu lực, gửi thư thử từ từng đường, gồm hộp thư nhân viên và thông báo giao dịch, tới hộp thư ngoài rồi đọc kết quả SPF. SPF đạt không bảo đảm tên miền From khớp hay DKIM, DMARC đạt. Hướng dẫn Gmail 550 và công cụ kiểm tra email tên miền có thể giúp bước tiếp theo, nhưng cấu hình thật phải đối chiếu tài liệu hiện hành của nhà cung cấp.",
        "Успешное сохранение в панели DNS еще не означает завершения. Проверьте у авторитетного DNS, что для точного имени осталась одна SPF-политика. После обновления отправьте тесты из каждого канала, включая обычный ящик и транзакционные уведомления, на внешний адрес и изучите SPF. Успешный SPF не гарантирует согласование From, DKIM или DMARC. Руководство по ошибке Gmail 550 и диагностика домена помогут далее, но реальные значения сверяйте с актуальными документами поставщика.",
      ],
    },
    {
      title: ["핵심은 한 줄이 아니라 발송 책임의 정리입니다", "The real goal is a clear sending inventory", "关键不是一行文字，而是清楚的发信责任", "大切なのは一行化より送信責任の整理", "Mấu chốt là quản lý nguồn gửi, không chỉ gộp dòng", "Главное — учет отправителей, а не просто одна строка"],
      body: [
        "같은 이름의 SPF 정책이 하나인지, 실제 쓰는 서비스가 모두 포함됐는지, 각 경로의 시험 발송이 통과했는지 확인하면 중복 오류를 안전하게 마무리할 수 있습니다. 발송 서비스가 바뀔 때마다 새 SPF 줄을 추가하지 말고 기존 정책과 담당자 목록을 먼저 갱신하세요. 관련 원문 링크는 Gmail 550 인증 오류 점검 순서, 도메인 메일 진단 도구, RFC 7208의 레코드 선택 규칙입니다.",
        "Close the incident only after confirming one policy at the exact owner name, all active senders included, and successful tests from each sending path. When a provider changes, update the existing policy and sender inventory rather than adding another SPF row. Relevant references are the Gmail 550 authentication guide, the domain-mail diagnostic tool, and RFC 7208 record-selection rules.",
        "确认准确名称下只有一条 SPF、所有现用发信服务都已包含，并且各路径测试通过后，才能稳妥结束排错。下次更换服务时先更新现有策略和负责人清单，不要再加一条 SPF。相关参考包括 Gmail 550 认证排查指南、域名邮件诊断工具和 RFC 7208 的记录选择规则。",
        "正確な名前に SPF が1件で、使用中の送信元をすべて含み、各経路の試験が通るまで確認します。今後サービスを変更するときは新しい SPF 行を足さず、既存の方針と担当者一覧を更新してください。関連資料は Gmail 550 認証エラーの案内、ドメインメール診断、RFC 7208 のレコード選択規則です。",
        "Chỉ kết thúc xử lý khi đúng tên chỉ có một SPF, mọi nguồn gửi đang dùng đều được phép và từng đường gửi thử đều đạt. Khi đổi dịch vụ, hãy cập nhật chính sách hiện có cùng danh sách phụ trách thay vì thêm một dòng SPF mới. Tài liệu liên quan gồm hướng dẫn lỗi xác thực Gmail 550, công cụ chẩn đoán email tên miền và quy tắc chọn bản ghi RFC 7208.",
        "Завершайте исправление после проверки одной политики у точного имени, включения всех действующих отправителей и успешных тестов из каждого канала. При смене сервиса обновляйте существующую политику и список ответственных, а не добавляйте еще одну строку SPF. Полезные источники: руководство по Gmail 550, диагностика почтового домена и правила выбора записей RFC 7208.",
      ],
    },
  ],
} as const satisfies LocalizedBlogSource;
