温馨提示×

怎样解决ubuntu邮件服务器乱码

小樊
42
2026-09-10 22:43:39
栏目: 云计算

在 Ubuntu 邮件服务器中出现乱码,通常不是“系统问题”,而是编码不一致邮件头/内容声明错误导致的。下面按常见原因 → 解决方案系统说明。


一、先确认乱码出现在哪里(很重要)

位置 可能原因
邮件标题乱码 Subject 未编码(RFC 2047)
邮件正文乱码 Content-Type / charset 错误
日志中乱码 终端或日志编码问题
Webmail 乱码 前端未指定 UTF-8
命令行发送乱码 本地 locale 不对

二、系统基础编码(第一步必须做)

1. 设置系统 locale 为 UTF-8

locale

如果不是 UTF-8,执行:

sudo apt install locales
sudo dpkg-reconfigure locales

选中:

en_US.UTF-8

zh_CN.UTF-8

设置后:

export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

三、邮件服务器软件配置(Postfix / Sendmail)

✅ Postfix 常见乱码解决

1. 确保发信内容使用 UTF-8

/etc/postfix/main.cf 中:

smtpd_mime_header_checks = regexp:/etc/postfix/header_checks

/etc/postfix/header_checks

/^Subject:/  PREPEND Subject: =?UTF-8?B?...?=

更简单方式:发信程序自己编码 Subject


四、邮件内容乱码(最常见)

✅ 正确邮件头示例(非常重要)

文本邮件:

From: user@domain.com
To: to@domain.com
Subject: =?UTF-8?B?5L2g5aW9?=   ← Base64 编码
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

你好,这是中文邮件。

HTML 邮件:

Content-Type: text/html; charset=UTF-8

五、用命令行发送中文邮件(推荐方式)

方法 1:mail / mailx

echo "中文内容" | mail -s "$(echo 测试主题 | base64)" to@domain.com

更稳妥:

echo "中文内容" | mailx -a "Content-Type: text/plain; charset=UTF-8" \
  -s "=?UTF-8?B?$(echo 测试 | base64)?=" to@domain.com

方法 2:Python(最推荐 ✅)

#!/usr/bin/env python3
import smtplib
from email.mime.text import MIMEText

msg = MIMEText("中文内容", "plain", "utf-8")
msg["Subject"] = "测试邮件"
msg["From"] = "user@domain.com"
msg["To"] = "to@domain.com"

s = smtplib.SMTP("localhost")
s.send_message(msg)
s.quit()

Python 自动处理编码,几乎不会乱码


六、接收端乱码(Dovecot / IMAP)

Dovecot 配置

mail_location = maildir:~/Maildir
charset = utf-8

确保客户端(Outlook / Thunderbird)也使用 UTF-8。


七、Webmail 乱码(Roundcube 等)

在配置中确认:

$config['default_charset'] = 'UTF-8';

八、日志乱码(不是邮件问题)

sudo tail -f /var/log/mail.log | iconv -f UTF-8 -t UTF-8

或终端:

export LANG=en_US.UTF-8

九、快速自检清单 ✅

  • [ ] 系统 locale = UTF-8
  • [ ] 邮件头有 Content-Type: ...; charset=UTF-8
  • [ ] Subject 使用 RFC2047 编码
  • [ ] 发信程序支持 UTF-8(推荐 Python)
  • [ ] 客户端使用 UTF-8 显示

如果你愿意,可以告诉我:

  • 使用的 邮件服务器(Postfix / Sendmail / Exim)
  • 乱码场景(发信 / 收信 / 日志 / Webmail)
  • 是否 命令行 or 程序发信

我可以直接给你针对你环境的配置示例

0