Stalwart v1.0을 무척 기다렸지만, 이번 발표 글은 내게 크게 와닿지 않았음. 정식 출시 전에 해결하려던 과제가 속도와 데이터베이스 최적화였다는 건 이해하지만, 가장 주목받을 출시 발표에서 그 두 가지와 네 종류의 데이터베이스에 집중한 건 아쉬움.
홈페이지는 직접 서버를 운영하는 사용자를 겨냥한 듯한데, 이번 글은 Microsoft Exchange 등과 경쟁할 기업 시장을 향한 느낌임. 비꼬거나 부정적으로 말하려는 건 아니지만, 개인 운영자인 나는 대상 독자가 아닌 것 같았음.
기존 메일 시스템에서 힘든 건 속도가 아니라 수많은 구성요소를 각기 다른 설정 언어로 관리해야 한다는 데 있음. SMTP와 IMAP 외에 인증서용 HTTP까지 필요하고, DKIM, SPF, DMARC, DANE과 DNSSEC, MTA-STS 등을 챙겨야 함. 스팸을 막고, 무엇보다 대형 메일 서비스에 내 메일이 도착하도록 해야 하며, 몇 년마다 운영체제와 구성요소를 업그레이드하면서 설정도 손봐야 함. 요즘 메일 서버를 운영하려면 상당히 다재다능한 Unix 시스템 관리자가 되어야 함.
그런 작업을 좋아하지만, 남편이자 세 아이의 아버지이고 사업도 운영하다 보니 예전만큼 시간이 나지 않음. Stalwart에 기대한 건 속도가 아니라 단일 바이너리로 끝나는 운영 편의성임. JMAP을 지원하고 인증서나 키 갱신을 대부분 대신 처리해 주니, 시스템 관리만 맡기면서 메일은 내 서버에 둘 수 있다는 매력이 있음.
홈페이지가 내세우는 메일·일정·연락처·공유 파일 통합, 스팸·피싱 방어, JMAP·IMAP·POP3·SMTP·CalDAV·CardDAV·WebDAV 기본 지원을 이번 글에서도 강조했으면 좋았겠음. 설치 하나로 무엇을 해결해 주는지 먼저 보여주고, 속도 개선은 덧붙여도 됨. 데이터베이스 최적화, 여러 서버의 이중화, 메일 저장 구조 같은 기업용 내용은 별도 부분이나 글로 다룰 수도 있었을 것임.
그동안 GitHub의 개발 속도와 정식 출시 전 버전 사이의 호환성 파괴 변경이 너무 잦아서 v1을 기다려 왔음. 이제 나왔으니 언젠가는 꼭 써볼 계획이며, VPS도 이미 준비해 둔 상태임.
mox는 설치가 정말 쉬웠고, 대부분의 작업을 알아서 처리하거나 방법을 안내해 줬음.
구성요소가 너무 많다는 데 공감하지만, 메일 서버를 25년간 직접 운영한 입장에서 수십 GB의 메일을 Postgres로 옮기는 데는 별 관심이 없음. Maildir 백엔드가 추가된다면 현실적인 대안이 될 수 있음.
다만 25년 동안 덧붙인 온갖 임시방편이 쌓여 있어서, 기존 구성을 걷어내고 단순화·현대화하지 못하는 가장 큰 걸림돌이 되고 있음.
메일 25만 통이 많은 편인가? 회사 받은편지함의 읽지 않은 메일만 22만 6천 통이니, 내 메일함도 대용량에 속하겠음.
메일 25만 통의 본문 전체 검색이 4밀리초 미만에 끝난다고 함. 초당 6,250만 통에 해당한다면 꽤 큰 수치 아닌가?
최대 19배 빠르다는 건 좋지만, 연결된 벤치마크의 실제 시간을 보면 인상이 꽤 달라짐. 1MB 메일 가져오기는 4.07ms에서 0.650ms로, 받은편지함의 대화 묶기는 0.470ms에서 0.095ms로 줄어듦. 메일 100통 이동은 11.7ms에서 0.638ms로 줄었고 삭제도 거의 같음.
Postfix보다 메일 수신이 3.6~12배 빠르다는 것도, 자체 LLM 분석을 믿는다면 Postfix가 의도적으로 TCP_NODELAY를 쓰지 않기 때문임. 클라이언트에 quickack이 있으면 차이는 1.5배이고, Postfix도 약 5ms임.
현실적으로 메일 서버에서 이런 차이는 별 의미가 없음. 내 서버까지의 핑만 57ms이고, 메일 전송에 100ms가 걸려도 전혀 불편하지 않음. 어차피 백그라운드 작업이니 2초가 걸려도 괜찮을 것임.