# 며칠 전 업데이트(3.4.0.beta4-dev) 이후 심각한 이메일 문제 발생

**URL:** https://meta.discourse.org/t/severe-email-issue-since-last-update-a-couple-days-ago-3-4-0-beta4-dev/350165
**Category:** Support
**Created:** [2월 2, 2025, 9:38오후 UTC](https://meta.discourse.org/t/severe-email-issue-since-last-update-a-couple-days-ago-3-4-0-beta4-dev/350165 "2025-02-02T21:38:37Z")
**Posts on this page:** 6
**Page:** 2

<div class="post-metadata">

### Author: ![sandra.mccollum](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sandra.mccollum/32/441742_2.png) [@sandra.mccollum](https://meta.discourse.org/u/sandra.mccollum)
#### Post date: [2월 8, 2025, 12:45오후 UTC](https://meta.discourse.org/t/severe-email-issue-since-last-update-a-couple-days-ago-3-4-0-beta4-dev/350165/24 "2025-02-08T12:45:29Z")

</div>

소수의 새 주제와 해당 주제에 대한 이메일 답변을 모니터링한 결과, 전망이 좋아 보입니다. 지금까지 이메일 수가 대부분 정확합니다. 제가 취한 조치는 다음과 같으며, 이로 인해 문제가 해결되었는지 아직 명확하지 않지만, 지금은 상황이 나아진 것 같습니다:

3.5.0.beta1-dev로 업그레이드하고, DNS 네임서버를 8.8.8.8(기존 1.1.1.1)으로 강제 지정했으며, 재부팅을 수행했습니다.

다음 사항을 확인했습니다:  
docker image list --all

REPOSITORY TAG IMAGE ID CREATED SIZE  
local\_discourse/app latest 32adad867562 6 hours ago 3.68GB  
none none 5306688e5dcb 9 days ago 2.74GB

그러나 제가 아무런 조치를 취하지 않았음에도 시간이 지남에 따라 다음과 같이 변경되었습니다:

REPOSITORY TAG IMAGE ID CREATED SIZE  
local\_discourse/app latest 32adad867562 26 hours ago 3.68GB  
discourse/base 2.0.20250129-0720 5306688e5dcb 10 days ago 2.74GB

따라서 그 'none’이 무엇이었는지 정확히 알 수 없습니다.

더 많은 데이터가 평가된 후 다시 보고할 예정이며, 이 문제를 계속 주시하겠습니다.

redis 연결 오류와 nginx / postgres 오류를 발견했으며, 이것들도 조사할 예정입니다:

nginx:

```plaintext
2606 upstream prematurely closed connection while reading response header from upstream

```

redis:

```plaintext
Error fetching job: Error connecting to Redis on localhost:6379 (Errno::ECONNREFUSED)
heartbeat: Error connecting to Redis on localhost:6379 (Errno::ECONNREFUSED)
Error connecting to Redis on localhost:6379 (Errno::ECONNREFUSED) subscribe failed, reconnecting in 1 second. Call stack /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-4.8.1/lib/redis/client.rb:398:in `rescue in establish_connection'
Error fetching job: Error connecting to Redis on localhost:6379 (Errno::ECONNREFUSED)

```

postgres:

```plaintext
current:2025-02-08 04:24:06.133 UTC [75838] discourse@discourse ERROR: duplicate key value violates unique constraint "index_post_reply_keys_on_user_id_and_post_id"
current:2025-02-08 04:24:20.624 UTC [75838] discourse@discourse ERROR: duplicate key value violates unique constraint "index_post_reply_keys_on_user_id_and_post_id"
current:2025-02-08 08:05:19.485 UTC [91041] discourse@discourse LOG: duration: 2345.289 ms statement: COPY public.scheduler_stats (id, name, hostname, pid, duration_ms, live_slots_start, live_slots_finish, started_at, success, error) TO stdout;

```

/log - Job exception: execution expired:  
다음 링크를 확인 중입니다: [SMTP Net::ReadTimeout without relation to net or login problems - SMTP host is just slow - #2 by Falco](https://meta.discourse.org/t/smtp-net-readtimeout-without-relation-to-net-or-login-problems-smtp-host-is-just-slow/235727/2)

```plaintext
Message (3 copies reported)

Job exception: execution expired

Backtrace

/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.0/lib/net/smtp.rb:663:in `initialize'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.0/lib/net/smtp.rb:663:in `open'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.0/lib/net/smtp.rb:663:in `tcp_socket'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.0/lib/net/smtp.rb:672:in `block in do_start'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/timeout-0.4.3/lib/timeout.rb:185:in `block in timeout'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/timeout-0.4.3/lib/timeout.rb:192:in `timeout'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.0/lib/net/smtp.rb:671:in `do_start'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.0/lib/net/smtp.rb:642:in `start'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb:109:in `start_smtp_session'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb:100:in `deliver!'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mail-2.8.1/lib/mail/message.rb:269:in `deliver!'
/usr/local/lib/ruby/3.3.0/delegate.rb:87:in `method_missing'
/var/www/discourse/lib/email/sender.rb:296:in `send'
/var/www/discourse/app/jobs/regular/user_email.rb:79:in `send_user_email'
/var/www/discourse/app/jobs/regular/user_email.rb:39:in `execute'
/var/www/discourse/app/jobs/base.rb:316:in `block (2 levels) in perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.1.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.1.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'
/var/www/discourse/app/jobs/base.rb:303:in `block in perform'
/var/www/discourse/app/jobs/base.rb:299:in `each'
/var/www/discourse/app/jobs/base.rb:299:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:202:in `execute_job'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:170:in `block (2 levels) in process'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:177:in `block in invoke'
/var/www/discourse/lib/sidekiq/pausable.rb:132:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:179:in `block in invoke'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:182:in `invoke'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:169:in `block in process'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:136:in `block (6 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_retry.rb:113:in `local'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:135:in `block (5 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq.rb:44:in `block in <module:Sidekiq>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:131:in `block (4 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:263:in `stats'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:126:in `block (3 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_logger.rb:13:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:125:in `block (2 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_retry.rb:80:in `global'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:124:in `block in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_logger.rb:39:in `prepare'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:123:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:168:in `process'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:78:in `process_one'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:68:in `run'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/component.rb:8:in `watchdog'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/component.rb:17:in `block in safe_thread' 

```

---

<div class="post-metadata">

### Author: ![sandra.mccollum](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sandra.mccollum/32/441742_2.png) [@sandra.mccollum](https://meta.discourse.org/u/sandra.mccollum)
#### Post date: [2월 11, 2025, 3:00오후 UTC](https://meta.discourse.org/t/severe-email-issue-since-last-update-a-couple-days-ago-3-4-0-beta4-dev/350165/26 "2025-02-11T15:00:25Z")

</div>

확인됨: 3.5.0.beta1-dev로 업그레이드하고, DNS 네임서버를 8.8.8.8로 강제 설정(1.1.1.1에서 변경)한 후 재부팅했더니 심각한 이메일 문제가 해결된 것으로 보입니다.

또한 SMTP open\_timeout을 15로 늘렸지만, 아마도 필요하지 않았을 것입니다. 다만 이를 기본값인 5로 되돌리지는 않을 예정입니다.

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [2월 11, 2025, 11:14오후 UTC](https://meta.discourse.org/t/severe-email-issue-since-last-update-a-couple-days-ago-3-4-0-beta4-dev/350165/27 "2025-02-11T23:14:03Z")

</div>

해결되었다니 다행입니다. DNS 설정은 시스템 관리 분야에서 발생하는 모든 문제의 78%를 차지하는 원인이죠.

---

<div class="post-metadata">

### Author: ![pacharanero](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pacharanero/32/500583_2.png) [@pacharanero](https://meta.discourse.org/u/pacharanero)
#### Post date: [2월 16, 2025, 3:36오후 UTC](https://meta.discourse.org/t/severe-email-issue-since-last-update-a-couple-days-ago-3-4-0-beta4-dev/350165/28 "2025-02-16T15:36:40Z")

</div>

최근 4일 동안 이메일 전송과 관련하여 새로운 문제가 발생했습니다. 이 스레드를 계속 진행할지, 아니면 새 스레드를 시작할지 확신이 서지 않지만, 우선은 이 스레드를 계속 진행하겠습니다.

해당 문제가 발생한 시점 무렵에 커맨드 라인을 통해 사이트 전체 업데이트를 수행한 바 있습니다.

- 사이트 활동에 대한 알림 이메일이 어떤 사용자에게도 전송되지 않고 있습니다.
- SMTP 전송은 정상적으로 작동하는 것으로 보이며, 이메일 전달성 테스트가 즉시 성공했습니다.
- Sidekiq에는 수천 개의 큐에 등록된 작업이 표시되며, 정기적으로 재시도되고 있지만 일관되게 실패하고 있습니다. (7,000개 이상의 작업이 큐에 등록됨)
- 로그에는 `UserDestroyer::PostsExistError`라는 매우 두드러지고 numerous한 오류가 하나 표시됩니다. Meta에서 검색해 보았지만, 해당 오류가 마지막으로 언급된 2017년 이후로 비슷한 문제를 겪는 다른 사람을 찾을 수 없었습니다. (최근 4일 동안 9,000개 이상의 오류 발생)

> **로그의 전체 스택 트레이스**
>
> ```plaintext
> /var/www/discourse/app/services/user_destroyer.rb:18:in `destroy'
> /var/www/discourse/app/jobs/onceoff/fix_primary_emails_for_staged_users.rb:23:in `block (2 levels) in execute_onceoff'
> activerecord-7.2.2.1/lib/active_record/relation/delegation.rb:98:in `each'
> activerecord-7.2.2.1/lib/active_record/relation/delegation.rb:98:in `each'
> /var/www/discourse/app/jobs/onceoff/fix_primary_emails_for_staged_users.rb:21:in `block in execute_onceoff'
> /var/www/discourse/app/jobs/onceoff/fix_primary_emails_for_staged_users.rb:14:in `each_key'
> /var/www/discourse/app/jobs/onceoff/fix_primary_emails_for_staged_users.rb:14:in `execute_onceoff'
> /var/www/discourse/app/jobs/onceoff/onceoff.rb:35:in `execute'
> /var/www/discourse/app/jobs/base.rb:316:in `block (2 levels) in perform'
> rails_multisite-6.1.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
> rails_multisite-6.1.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'
> /var/www/discourse/app/jobs/base.rb:303:in `block in perform'
> /var/www/discourse/app/jobs/base.rb:299:in `each'
> /var/www/discourse/app/jobs/base.rb:299:in `perform'
> sidekiq-6.5.12/lib/sidekiq/processor.rb:202:in `execute_job'
> sidekiq-6.5.12/lib/sidekiq/processor.rb:170:in `block (2 levels) in process'
> sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:177:in `block in invoke'
> /var/www/discourse/lib/sidekiq/pausable.rb:132:in `call'
> sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:179:in `block in invoke'
> sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:182:in `invoke'
> sidekiq-6.5.12/lib/sidekiq/processor.rb:169:in `block in process'
> sidekiq-6.5.12/lib/sidekiq/processor.rb:136:in `block (6 levels) in dispatch'
> sidekiq-6.5.12/lib/sidekiq/job_retry.rb:113:in `local'
> sidekiq-6.5.12/lib/sidekiq/processor.rb:135:in `block (5 levels) in dispatch'
> sidekiq-6.5.12/lib/sidekiq.rb:44:in `block in <module:Sidekiq>'
> sidekiq-6.5.12/lib/sidekiq/processor.rb:131:in `block (4 levels) in dispatch'
> sidekiq-6.5.12/lib/sidekiq/processor.rb:263:in `stats'
> sidekiq-6.5.12/lib/sidekiq/processor.rb:126:in `block (3 levels) in dispatch'
> sidekiq-6.5.12/lib/sidekiq/job_logger.rb:13:in `call'
> sidekiq-6.5.12/lib/sidekiq/processor.rb:125:in `block (2 levels) in dispatch'
> sidekiq-6.5.12/lib/sidekiq/job_retry.rb:80:in `global'
> sidekiq-6.5.12/lib/sidekiq/processor.rb:124:in `block in dispatch'
> sidekiq-6.5.12/lib/sidekiq/job_logger.rb:39:in `prepare'
> sidekiq-6.5.12/lib/sidekiq/processor.rb:123:in `dispatch'
> sidekiq-6.5.12/lib/sidekiq/processor.rb:168:in `process'
> sidekiq-6.5.12/lib/sidekiq/processor.rb:78:in `process_one'
> sidekiq-6.5.12/lib/sidekiq/processor.rb:68:in `run'
> sidekiq-6.5.12/lib/sidekiq/component.rb:8:in `watchdog'
> sidekiq-6.5.12/lib/sidekiq/component.rb:17:in `block in safe_thread'
> 
> ```

다음 단계로 디버깅하고 진행하는 방법에 대한 조언을 주실 수 있을까요?

---

<div class="post-metadata">

### Author: ![pacharanero](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pacharanero/32/500583_2.png) [@pacharanero](https://meta.discourse.org/u/pacharanero)
#### Post date: [2월 16, 2025, 4:15오후 UTC](https://meta.discourse.org/t/severe-email-issue-since-last-update-a-couple-days-ago-3-4-0-beta4-dev/350165/29 "2025-02-16T16:15:44Z")

</div>

확인 사항 업데이트드립니다. 추가로 할 수 있는 유일한 작업으로 `git pull; ./launcher rebuild app`을 생각했고, 방금 실행했는데 문제가 해결된 것 같습니다. 이제 이메일이 정상적으로 전송되고 있으며, 대기 중인 이메일 작업으로 가득 차 있던 Sidekiq 백로그가 줄어 들고 있습니다.

최근 며칠간 `discourse/discourse`의 커밋을 검토해 보았지만, 정확히 무엇이 문제를 해결했는지 확신할 수 없습니다. 만약 누군가가 더 깊이 조사하고 싶으시다면, 필요하시면 추가 정보를 제공하겠습니다.

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [3월 18, 2025, 4:16오후 UTC](https://meta.discourse.org/t/severe-email-issue-since-last-update-a-couple-days-ago-3-4-0-beta4-dev/350165/30 "2025-03-18T16:16:30Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.

[Previous page](https://meta.discourse.org/t/severe-email-issue-since-last-update-a-couple-days-ago-3-4-0-beta4-dev/350165.md?page=1)
