활동 요약 이메일 텍스트에서 공백 문자 누락

보통 미리보기 요약을 받지 않기 때문에, 방금 나에게 미리보기 요약을 보내 보았습니다.

이메일 내 제목과 본문에서 무작위적이지만 일관되게 공백 문자가 누락되는 것을 확인하고 있습니다. 포럼 콘텐츠에서는 이러한 공백이 누락되지 않지만, 다양한 이메일 클라이언트로 확인한 여러 생성된 미리보기 요약에서는 동일한 공백이 일관되게 빠지고 있습니다.

원래 공백을 삭제했다가 다시 추가해 보았지만 효과가 없었습니다.

발췌 내용:

다른 몇몇 Discourse 포럼에서 받는 요약을 검토해 보았지만, 다른 곳에서는 이런 현상을 볼 수 없었습니다.

혹시 다른 분들도 이 문제를 겪고 계시거나, 어떤 일이 일어나고 있는지 아는 분이 계신가요?

이것이 폰트/표시 문제일 수 있을까요? 기본 원본 콘텐츠를 확인해 보셨나요?

음. 폰트/표시 문제를 어떻게 진단해야 할지 잘 모르겠어요. 해당 이메일은 Windows와 Linux에서 여러 메일 클라이언트와 브라우저에서 동일하게 렌더링됩니다.

포럼 게시물 URL에 .json을 첨부했는데, "topic_slug"나 “cooked” 콘텐츠에 이상한 점은 전혀 없네요…

원본 콘텐츠에서 추가로 확인해야 할 부분이 있을까요?

게시물이 아닌 원본 이메일을 확인해야 합니다.

음 - 원본 이메일을 살펴보니, HTML 버전에서 공백이 누락된 부분에는 텍스트 버전이 올바른 공백을 가지고 있습니다. 그러나 텍스트 버전에는 다른 공백 문자가 누락되어 있습니다. 그 이유를 알 수 없습니다.

아마도 레거시 플랫폼에서 영향받은 주제들을 복사/붙여넣는 과정에서 문자 인코딩 오류 때문일까요..? 수정: 아닙니다. 현재 게시물에서도 계속되고 있으며, 요약뿐만 아니라 다른 이메일에서도 마찬가지입니다.

최근 현재 게시물을 포함한 Discourse 요약에서는 같은 문제가 발생하지 않아, 계속되는 것을 보지 않는 한 크게 걱정하지 않을 생각입니다. 수정: 계속되고 있습니다.

(참고: 이런 문제를 주시하기 위해, 제가 계속 로그인되어 있든 아니든 상관없이 매일 관리 계정에게 포괄적인 요약을 보내도록 설정할 수 있으면 좋겠습니다.)

그 이메일 중 하나를 첨부 파일로 내게 전달해 주시겠어요?

수정: 완료

OK, 원본 텍스트 이메일에서 확인한 내용은 다음과 같습니다:

[Mis/Disinformation starts to overwhelm civilization][2]

 The dark side of generative AI is that it enables the production of misinformation (due to confabulation) and disinformation (i.e. deliberate production of fake news to achieve an end) at industrial scale.   Renderingof web pages in the style of authoritative sources is straighforward, and progress in deep fakes will make video story complements easier.  Asidefrom Vinge’s clouds of fake information to hide information (Rainbows End), which I don’t believe posed a solution, have any SF authors thought about this and how it might be tackled?

참고:

  • to overwhelm :white_check_mark:
  • a paperback :white_check_mark:
  • Renderingof :x:
  • Asidefrom :x:

그리고 HTML 버전에서는:

<a href="https://forum.tasat.org/t/mis-disinformation-starts-to-overwhelm-civilization/66" style="text-decoration: none; font-weight: bold; color: #006699;; font-weight:400;line-height:1.3;margin:0;padding:0;text-decoration:none">
<strong>Mis/Disinformation starts tooverwhelm civilization</strong>
…
Rendering of web pages in the style of authoritative sources is straighforward, and progress in deep fakes will make video story complements easier.  Aside from

참고:

  • tooverwhelm :x:
  • apaperback :x:
  • Rendering of :white_check_mark:
  • Aside from :white_check_mark:

가장 원시적인(즉, 인코딩된) 형태에서도 이러한 오류는 여전히 존재합니다:

[Mis/Disinformation starts to overwhelm civilization][2]
            
 The dark = 
side of generative AI is that it enables the production of misinformation (=
due to confabulation) and disinformation (i.e. deliberate production of fak=
e news to achieve an end) at industrial scale.   Renderingof web pages in t=
he style of authoritative sources is straighforward, and progress in deep f=
akes will make video story complements easier.  Asidefrom Vinge=E2=80=99s c=
louds of fake information to hide information (Rainbows End), which I don=
=E2=80=99t believe posed a solution, have any SF authors thought about this=
 and how it might be tackled?
Ken
                                  <a href=3D"https://foru=
m.tasat.org/t/mis-disinformation-starts-to-overwhelm-civilization/66" style=
=3D"text-decoration: none; font-weight: bold; color: #006699;; font-weight:=
400;line-height:1.3;margin:0;padding:0;text-decoration:none">
           =
                         <strong>Mis/Disinformation starts tooverwhelm civi=
lization</strong>

이것들은 raw/cooked 버전에는 없습니다:

000000d0: 5265 6e64 6572 696e 6720 6f66 2077 6562  Rendering of web
000000e0: 2070 6167 6573 2069 6e20 7468 6520 7374   pages in the st
000000f0: 796c 6520 6f66 2061 7574 686f 7269 7461  yle of authorita
00000100: 7469 7665 2073 6f75 7263 6573 2069 7320  tive sources is 
00000110: 7374 7261 6967 6866 6f72 7761 7264 2c20  straighforward, 
00000120: 616e 6420 7072 6f67 7265 7373 2069 6e20  and progress in 
00000130: 6465 6570 2066 616b 6573 2077 696c 6c20  deep fakes will 
00000140: 6d61 6b65 2076 6964 656f 2073 746f 7279  make video story
00000150: 2063 6f6d 706c 656d 656e 7473 2065 6173   complements eas
00000160: 6965 722e 2020 4173 6964 6520 6672 6f6d  ier.  Aside from

제가 믿지 않았던 것은 아닙니다 :smiley:

그러므로… 이메일 본문에서 공백이 간헐적으로 제거되고 있습니다. 텍스트 부분이든 HTML 부분이든 마찬가지입니다. 그리고 동일한 위치에서 일어나지는 않습니다!

저는 이러한 오류가 다음 네 곳 중 한 곳에서 도입되었을 수 있다고 추정합니다:

  • Discourse에서 이메일을 생성할 때
  • 이메일 제출 서버로 이메일을 전송할 때
  • 중간/최종 서버로 이메일을 전송할 때
  • 사용자 메일함으로 전달할 때

아마 시작점에서부터 시작하는 것이 가장 쉬울 것입니다.

Discourse가 이메일을 로컬 MTA에 제출하도록 할 수 있습니까? 그러면 MTA가 당신의 “실제” 이메일 전달 서버로 보내기 전에 큐에서 검사할 수 있습니다.

분석해 주셔서 감사합니다, 마이클!

저는 고급 이메일 관리자가 아닙니다 – 일반적인 권장 사항에 따른 자체 설치를 수행하고 있으며, 실제 발신 이메일은 MailerSend.net을 통해 전송하고 있고, DKIM/DMARC 등을 작동하는 상태로 주의 깊게 구성해 두었습니다. 제가 읽은 바로는 sendmail이나 Postfix 같은 로컬 MTA를 통합하는 것은 대부분의 경우 권장되지 않는 고급 작업인 것 같습니다… 작동 중인 파이프라인을 해칠까 봐 손을 대는 것이 조금 두렵습니다. :grimacing:

쉽게 되돌릴 수 있는, 문제 해결용 MTA 구현 방식이 있을까요?

위에서 언급했듯이, 이 문제는 관리자에 의해 복사&붙여넣기된 내용뿐만 아니라 현재 사용자가 게시한 콘텐츠에서도 계속 발생하고 있으며, 이제는 summary, user_replied, user_posted 이메일에서도 관찰되고 있습니다.

MailerSend 지원팀은 Discourse에서 요청을 받을 때 공백 문자가 누락되어 있음을 확인했습니다. 따라서 오류는 이메일 생성 과정의 Discourse 측에 있는 것으로 보입니다…?

참고로, 생성된 요약을 미리보기할 때는 공백 문자가 누락되지 않습니다. 이메일로 수신될 때만 누락됩니다.


동시에, 2월부터 다른 사용자들에 의해 보고된 이 요약 이메일 문제도 겪고 있습니다:

이 반복된 게시글들은 생성된 요약 미리보기에도 실제로 존재합니다.

2024-04-26 수정: 반복되는 요약 문제는 식별되었습니다. 수정이 적용될 때까지 설정 변경을 통해 문제를 완화했지만, 이 주제와는 관련이 없는 것으로 보입니다. 발신된 이메일에는 여전히 공백 문자가 누락되어 있습니다.


이러한 문제들이 해결되는지 확인하기 위해 명령줄 업데이트 및 재구성을 수행했지만, 효과는 없었습니다.

tests-passed 브랜치를 최신으로 유지하고 있는 모든 사람에게 이런 일이 일어나지 않는다면, 제 설정에서 무엇을 확인해 봐야 할까요?

서버와 mailersend 간의 TLS를 일시적으로 비활성화할 수 있다면, 실제 네트워크 트래픽을 검사하여 Discourse가 공백을 전송하는지 아닌지를 한 번에 명확히 확인할 수 있습니다.

그렇게 할 수 없다면 트래픽을 MITM(중간자 공격) 방식으로 검사해 볼 수 있지만, 이 방법은 더 복잡합니다.

위 두 가지 방법 모두 작동하지 않는다면, 이 경우 로컬 postfix를 구성하되 직접 전달(direct delivery)을 설정하지 않고, Discourse가 사용하는 방식과 동일하게 postfix가 메일을 mailersend 계정으로 보내도록 설정하는 것이 좋습니다.

이렇게 하면 Discourse가 두 방법 중 어느 것으로 전송하든, 메일이 외부로 나가기 전에 postfix 큐에서 메일을 검사할 수 있습니다.

Michael, 감사합니다 – "와이어 상 검사(inspecting on the wire)"는 처음 해보는 건데, 지금까지 발견한 내용은 다음과 같습니다.

MailerSend는 TLS와 포트 587을 요구합니다. 따라서:

  • 포트 2525의 무료 mailtrap.io 계정으로 전송하기 위해 대체 app.yml을 생성했습니다.
  • DISCOURSE_SMTP_ENABLE_START_TLS = false로 설정했습니다.
  • 아래 명령으로 변경 사항을 적용했습니다:
cd /var/discourse
./launcher destroy app
./launcher start app
  • tcpdump를 통해 원격 트래픽을 모니터링하도록 Wireshark를 설정했습니다.

Wireshark에서 확인한 이메일 콘텐츠 패킷과 Mailtrap에서 수신한 평문 이메일에는 아직까지 누락된 공백 문자가 없습니다. 각 설정별로 연속으로 실행한 특정 테스트 다이제스트를 비교해 보면, 원래 설정에서는 공백이 누락되는 반면 mailtrap 버전에서는 그렇지 않습니다. 이것이 TLS 암호화로 인해 문제가 발생한다는 것을 시사하는 것일까요?

수정: Mailtrap 테스트 환경을 충분히 활용하지 못했다는 생각이 들었습니다. 이후 포트 587에서 TLS를 활성화한 상태로 Mailtrap으로 여러 번 암호화된 미리보기 요약본을 전송했는데, 누락된 공백 문자를 확인하지 못했습니다. 이제 MailerSend가 수신된 요청에 문제가 존재한다고 말했지만, 실제로는 아마도 그들의 서버 측에서 발생하고 있는 것이 아닌가 하는 생각이 듭니다. 그들이 무엇을 확인해야 할지 확실하지는 않지만, 이 조사 결과를 그들에게 전달할 계획입니다.

(혹시 도움이 될까 봐: 제 설정을 간단히 살펴봤는데 문제는 보이지 않았습니다. 그래서 테마나 플러그인 중 설정에 영향을 주는 것이 있는지 궁금하네요. 제가 한 일은 mail-tester.com을 방문해 임시 수신 주소를 얻은 후, 관리자 → 이메일 → 미리보기 요약 메뉴를 통해 임시 수신 주소로 요약을 보내고, mail-tester에서 HTML 버전과 일반 텍스트 버전을 확인하는 것이었습니다. 같은 방법으로 시도해보시면 다른 점이 있는지 확인해 보실 수 있을 것입니다.)

에드, 감사합니다. – 메일 테스터(mail-tester)에 도달하려면 제 이메일이 메일센드(MailerSend) 릴레이를 거쳐야 하는데, 제가 제거하려고 했던 것이 바로 그 릴레이였습니다. 하지만 에드의 의견 덕분에 메일트랩(Mailtrap)으로 돌아가서 TLS 암호화를 사용하여 테스트를 실행해 보았고, 이전 게시글을 수정했습니다.

저도 그렇게 생각합니다.

확실한 테스트를 위해, 다음 단계로 캡처한 평문 이메일 중 하나를 openssl s_client를 통해 수동으로 제출해 보시길 권합니다.