Ubuntu 22.04 安装 SquirrelMail 1.4.22 指南

Ubuntu 22.04 安装 SquirrelMail 1.4.22 双 PHP 路线实测:官方源 PHP 8.1 Fatal error 一票否决取证、ppa:ondrej/php PHP 7.4 推荐路线、Postfix+Dovecot 后端最小栈与登录收信端到端验证。

SquirrelMailSquirrelMail邮件服务2026/10/27

Ubuntu 22.04 安装 SquirrelMail 1.4.22 指南

目标:在 Ubuntu 22.04 服务器上从零安装并跑通 SquirrelMail 1.4.22(含 Apache/PHP 运行时、Postfix+Dovecot 邮件后端最小栈、登录与收信端到端验证)。SquirrelMail 官方源为 PHP 5 时代代码,本篇实测两条 PHP 运行时路线:官方源 PHP 8.1 实测不可用(已取证一票否决),ppa:ondrej/php 的 PHP 7.4 实测可用为推荐路线;全部命令与回显来自 2026-10-27 在 Ubuntu 22.04(x86_64)环境实测。

一、环境信息

  • 操作系统:Ubuntu 22.04(jammy),x86_64
  • Web 服务器:Apache/2.4.52(Ubuntu 官方仓库)
  • PHP 运行时(二选一,实测对比):
    • PHP 8.1.2-1ubuntu2.28(Ubuntu 22.04 官方仓库默认)——实测不可用
    • PHP 7.4.33(ppa:ondrej/php,包版本 1:7.4.33-31+ubuntu22.04.1+deb.sury.org+1)——推荐
  • SquirrelMail:squirrelmail-webmail-1.4.22(SourceForge 官方发布包)
  • 邮件后端(本机最小栈):Postfix(SMTP,TCP 25)+ Dovecot 2.3.16(IMAP,TCP 143)
  • 应用目录:/usr/share/squirrelmail-webmail-1.4.22;会话数据与附件缓存:/var/local/squirrelmail/data、/var/local/squirrelmail/attach
  • 访问路径:http://<服务器地址>/webmail/(Apache Alias 方式)
  • 演示账号:系统用户 admin / 密码 q1w2e3r4(登录用户名输 admin)
  • 发布包校验值(2026-10-27 实测下载后计算):
sha256sum squirrelmail-webmail-1.4.22.tar.gz

实测输出:

286453c7aac6cfd0b78509a597be2f15012f0c0c4abd44328ac4c55fb2d0b847  squirrelmail-webmail-1.4.22.tar.gz

二、前置条件

安装前需确认系统具备以下条件,逐项给出验证命令与实测回显:

  1. 系统与网络:Ubuntu 22.04 已完成初始安装,能访问 SourceForge(下载发布包)与 Launchpad PPA(添加 PHP 仓库)。若服务器无法访问国外源,见第十章常见问题的网络说明。
lsb_release -ds && uname -m

实测输出:

Ubuntu 22.04.5 LTS	x86_64
  1. 邮件后端可达:SquirrelMail 是纯 IMAP/SMTP 前端,安装前需已有(或准备在本机一并部署)IMAP 与 SMTP 服务。本篇第八章给出一套本机 Postfix+Dovecot 最小栈的完整配置。
  2. 磁盘空间:应用本体约 3.2 MB(解压后),加上 Apache/PHP/邮件后端约 100 MB 即可。
  3. 端口:80(Web)、25(SMTP)、143(IMAP)未被占用:
ss -ltn | grep -E ':(25|80|143)\b'

实测输出(干净系统应无输出,本例已部署后可看到):

LISTEN 0      100        0.0.0.0:25         0.0.0.0:*      users:(("master",pid=1123,fd=13))
LISTEN 0      511         0.0.0.0:80         0.0.0.0:*      users:(("apache2",pid=11707,fd=3))

三、版本选型说明

SquirrelMail 无操作系统发行版包(Ubuntu 22.04 官方仓库中已不存在 squirrelmail 包),唯一官方渠道是 SourceForge 发布包。版本选型实测结论(2026-10-27 实查 SourceForge 发布 RSS):

版本线最新版本发布日期状态与用途
stable(稳定线)1.4.222011-07-12最后稳定版,本篇选型;此后 15 年无任何发布
stable(历史)1.4.212010-07-23仅存量系统考古用
imap_proxy1.2.72010-08-24配套 IMAP 代理(调优工具,可选)
locales1.4.18-200905262009-05-26语言包扩展(简繁中文在此包中)

发布包内三种压缩格式等价(tar.gz / tar.bz2 / zip,内容一致),本篇用 tar.gz。PHP 运行时选型比 SquirrelMail 版本选型更关键:1.4.22 面向 PHP 4/5 编写,第四章实测其在 PHP 8.1 下直接 Fatal error;PHP 7.4 为当前可用上限(已于 2022-11 上游停止支持,建议仅内网受控使用),安装路线见第五章。

⚠️ 注意:不要把 SquirrelMail 1.4.22 与 Roundcube/SnappyMail 等活跃 Webmail 的版本演进混淆——本软件 2011 年后没有任何安全修复,公网部署风险自担;新项目选型请参考《SquirrelMail 1.4.22 介绍与选型指南》的同类对比结论。

四、方案 A:官方源 PHP 8.1 直装(实测不可用,取证留档)

本方案演示"最顺手"的路线:Ubuntu 22.04 官方源默认提供 PHP 8.1,一行命令即可装齐 Web 运行时。实测结论先行:该路线安装过程无报错,但 SquirrelMail 页面全部 500,软件不可运行;本章完整保留安装与取证过程,供读者对照排障。

4.1 安装 Apache 与官方源 PHP 8.1

sudo apt-get update
sudo apt-get install -y apache2 php libapache2-mod-php php-mbstring php-xml php-intl

实测输出(节选):

Setting up apache2 (2.4.52-1ubuntu4.16) ...
Setting up php8.1-cli (8.1.2-1ubuntu2.28) ...
Setting up php8.1-mbstring (8.1.2-1ubuntu2.28) ...
Setting up libapache2-mod-php8.1 (8.1.2-1ubuntu2.28) ...

确认版本:

php -v | head -1

实测输出:

PHP 8.1.2-1ubuntu2.28 (cli) (built: Oct 19 2026 18:54:45) (NTS)

4.2 部署 SquirrelMail 并配置 Apache

# 解压到官方推荐的应用目录
sudo tar -xzf squirrelmail-webmail-1.4.22.tar.gz -C /usr/share/

# 准备会话数据与附件缓存目录(SquirrelMail 官方推荐路径)
sudo mkdir -p /var/local/squirrelmail/data /var/local/squirrelmail/attach
sudo chown -R www-data:www-data /var/local/squirrelmail

# 生成配置文件(config.php 由默认模板复制而来)
cd /usr/share/squirrelmail-webmail-1.4.22
sudo cp config/config_default.php config/config.php

# 发布到 Apache(Alias 方式)
sudo tee /etc/apache2/conf-available/squirrelmail.conf > /dev/null <<'EOF'
Alias /webmail /usr/share/squirrelmail-webmail-1.4.22
<Directory /usr/share/squirrelmail-webmail-1.4.22>
    Options -Indexes
    AllowOverride None
    Require all granted
</Directory>
EOF
sudo a2enconf squirrelmail
sudo systemctl restart apache2

验证服务状态:

systemctl is-active apache2

实测输出:

active

4.3 访问实测:HTTP 500 与 Fatal error 取证

curl -s -o /tmp/login_a.html -w "HTTP:%{http_code} SIZE:%{size_download}\n" http://127.0.0.1/webmail/src/login.php

实测输出:

HTTP:500 SIZE:0

页面空白、HTTP 500。查看 Apache 错误日志定位根因:

tail -2 /var/log/apache2/error.log

实测输出:

[php:error] [pid 11710] [client 127.0.0.1:44854] PHP Fatal error:
Array and string offset access syntax with curly braces is no longer supported
in /usr/share/squirrelmail-webmail-1.4.22/functions/strings.php on line 634

⚠️ 排障结论:这是 PHP 8.0 移除"花括号数组/字符串偏移语法"($str{0})触发的致命错误,SquirrelMail 1.4.22 代码中大量存在该语法(functions/strings.php:634 首个命中),并依赖 PHP 8 中已移除的 create_function() 等 API,属结构性不兼容,逐文件修补不可行。官方源 PHP 8.1 路线一票否决,请改用第五章 PHP 7.4 路线。

五、方案 B:ppa:ondrej/php 安装 PHP 7.4(推荐,实测可用)

Ubuntu 22.04 官方仓库不含 PHP 7.4,业界通行做法是添加 ondrej/php PPA(Ondřej Surý 维护的官方级 PHP 仓库)安装 7.4 系列并让 Apache 加载 php7.4 模块。本方案在方案 A 基础上仅切换 PHP 运行时,SquirrelMail 应用本体无需重装。

5.1 添加 PPA 仓库

sudo apt-get install -y software-properties-common
sudo LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php

实测输出(节选):

Adding deb entry to /etc/apt/sources.list.d/ondrej-ubuntu-php-jammy.list
Adding key to /etc/apt/trusted.gpg.d/ondrej-ubuntu-php.gpg with fingerprint B8DC7E53946656EFBCE4C1DD71DAEAAB4AD4CAB6

刷新索引并确认 7.4 可安装:

sudo apt-get update
apt-cache policy php7.4 | head -4

实测输出:

php7.4:
  Installed: (none)
  Candidate: 1:7.4.33-31+ubuntu22.04.1+deb.sury.org+1
  Version table:
     1:7.4.33-31+ubuntu22.04.1+deb.sury.org+1 500

5.2 安装 PHP 7.4 与 SquirrelMail 所需扩展

sudo apt-get install -y php7.4 php7.4-mbstring php7.4-xml php7.4-intl libapache2-mod-php7.4

实测输出(节选):

Setting up php7.4-cli (7.4.33-31+ubuntu22.04.1+deb.sury.org+1) ...
Setting up libapache2-mod-php7.4 (7.4.33-31+ubuntu22.04.1+deb.sury.org+1) ...

确认版本:

php7.4 -v | head -1

实测输出:

PHP 7.4.33 (cli) (built: Oct 21 2026 14:22:13) ( NTS )

5.3 切换 Apache PHP 模块(8.1 → 7.4)

Apache 同一时间只能加载一个 PHP 模块,先禁用 8.1 再启用 7.4(每行一个模块,注意顺序):

sudo a2dismod php8.1
sudo a2enmod php7.4
sudo systemctl restart apache2

实测输出(前两条命令):

Module php8.1 disabled.
Module php7.4 already enabled

验证模块生效(看 Apache 已加载的 PHP 模块):

apache2ctl -M | grep php

实测输出:

 php7.4_module (shared)

5.4 验证登录页

curl -s -o /tmp/login_b.html -w "HTTP:%{http_code} SIZE:%{size_download}\n" http://127.0.0.1/webmail/src/login.php
grep -oE "<title>[^<]*</title>" /tmp/login_b.html

实测输出:

HTTP:200 SIZE:2896
<title>SquirrelMail - Login</title>

页面同时显示版本信息(实测回显节选):

SquirrelMail version 1.4.22

至此 Web 运行时路线完成:PHP 7.4 下 SquirrelMail 登录页正常渲染。要完成真正的邮件收发,继续第八、九章部署邮件后端并做端到端验证。

六、方案 C:离线 tar 包部署(内网隔离场景)

内网服务器无法访问 SourceForge 时,可在有网机器上下载发布包并校验后,经内部分发(内部镜像、介质拷贝)带到目标服务器安装。SquirrelMail 应用本体是纯 PHP 文件,解压即用,离线部署与在线部署的唯一差别在发布包的获取方式;PHP 运行时与邮件后端仍需可用的 apt 仓库(完全断网环境需自建 apt 离线源或使用发行版介质)。

  1. 在有网机器下载并校验(渠道说明见 10.1):
wget https://downloads.sourceforge.net/project/squirrelmail/stable/1.4.22/squirrelmail-webmail-1.4.22.tar.gz
sha256sum squirrelmail-webmail-1.4.22.tar.gz

实测输出(校验值必须与第三章一致):

286453c7aac6cfd0b78509a597be2f15012f0c0c4abd44328ac4c55fb2d0b847  squirrelmail-webmail-1.4.22.tar.gz
  1. 传输到目标服务器后,解压与后续步骤与方案 B 的 4.2/5.x 完全一致(解压到 /usr/share/、建数据目录、cp config/config_default.php config/config.php、写 Apache Alias、重启 Apache)。
  2. 验证同 5.4:登录页 HTTP 200。

七、多方案对比与选择建议

维度方案 A:官方源 PHP 8.1方案 B:PPA PHP 7.4(推荐)方案 C:离线 tar 包
PHP 运行时8.1.2(官方源默认)7.4.33(deb.sury.org)与宿主既有 PHP 一致
SquirrelMail 可运行否(HTTP 500 Fatal error)是(实测登录+收信通过)取决于宿主 PHP 版本
是否需联网需(Ubuntu 官方源)需(Launchpad PPA)应用包免联网,apt 仍需源
维护成本—PPA 上游已停发 7.4 新特性,仅安全跟进包自管,升级手工
适用场景仅作对照取证常规可联网服务器内网隔离/受限出口

选择建议:可联网服务器一律走方案 B;内网环境走方案 C(发布包校验后离线解压);方案 A 仅作为"为什么必须降级 PHP"的实测对照,不得用于生产。无论哪条路线,PHP 7.4 与 SquirrelMail 1.4.22 均已无上游支持,应部署在内网并配合访问控制(见 10.4)。

八、邮件后端最小栈配置(Postfix + Dovecot)

SquirrelMail 本身不存邮件,登录账号就是 IMAP 服务器上的邮箱账号。本章在服务器本机部署一套最小邮件栈:Postfix 负责本域投递(SMTP),Dovecot 提供 IMAP 读取,并创建演示账号 admin 完成一封测试邮件投递。

8.1 安装 Postfix 与 Dovecot

sudo debconf-set-selections <<< "postfix postfix/mailname string example.com"
sudo debconf-set-selections <<< "postfix postfix/main_mailer_type string Internet Site"
sudo apt-get install -y postfix dovecot-imapd mailutils

实测输出(节选):

Setting up postfix (3.6.4-1ubuntu1.5) ...
Setting up dovecot-imapd (1:2.3.16+dfsg1-3ubuntu2.2) ...
Setting up mailutils (1:3.14-1) ...

启动并设为开机自启(每行一个单元):

sudo systemctl enable --now postfix
sudo systemctl enable --now dovecot

验证状态:

systemctl is-active postfix
systemctl is-active dovecot

实测输出(各命令):

active
active

8.2 放开 Dovecot 本机明文认证

Dovecot 默认 disable_plaintext_auth = yes,拒绝非加密连接上的明文口令认证;SquirrelMail 1.4.22 的 IMAP 客户端按默认配置走明文 PLAIN 认证(不支持自动 STARTTLS),因此内网环境需放开该限制,否则登录时得到"Unknown user or password incorrect."(排障对照见 10.2)。

sudo sed -i 's/^#disable_plaintext_auth = yes/disable_plaintext_auth = no/' /etc/dovecot/conf.d/10-auth.conf
doveconf disable_plaintext_auth
sudo systemctl restart dovecot

实测输出(前两条命令):

disable_plaintext_auth = no
active

8.3 创建演示账号并投递测试邮件

sudo useradd -m -s /bin/bash admin
echo 'admin:q1w2e3r4' | sudo chpasswd

验证账号密码(PAM 口径):

echo 'q1w2e3r4' | su admin -c 'id'

实测输出:

uid=1000(admin) gid=1000(admin) groups=1000(admin)

直接用 IMAP 客户端口径验证凭据(等价于 SquirrelMail 登录时 Dovecot 的验密路径):

doveadm auth test admin q1w2e3r4

实测输出:

passdb: admin auth succeeded
extra fields:

  user=admin

从 Postfix 投递一封测试邮件到该邮箱:

printf "Subject: Welcome to SquirrelMail test\nFrom: root@example.com\nTo: admin@example.com\n\nThis is a test mail delivered by postfix for SquirrelMail 1.4.22 verification.\n" | sendmail admin@example.com
sleep 2
ls -la /var/mail/admin

实测输出:

-rw------- 1 admin mail 535 Oct 27 04:38 /var/mail/admin

邮件已落入系统邮箱(Dovecot 默认 mail_location = mbox:~/mail:INBOX=/var/mail/%u)。

九、登录与收信端到端验证

用 curl 模拟浏览器完成"登录 → 进收件箱 → 看到测试邮件"的全链路验证,所走路径与浏览器完全一致(POST src/redirect.php → 会话 Cookie → GET src/right_main.php)。

  1. 提交登录表单(SquirrelMail 登录不需要 CSRF 令牌,字段为用户名/密码/浏览器能力探测值):
curl -s -c /tmp/sm_cookie -o /tmp/redirect.html -w "login POST HTTP:%{http_code}\n" \
  -d "login_username=admin" -d "secretkey=q1w2e3r4" \
  -d "js_autodetect_results=0" -d "just_logged_in=1" \
  http://127.0.0.1/webmail/src/redirect.php

实测输出(302 即登录成功并跳转):

login POST HTTP:302
  1. 携带会话 Cookie 读取收件箱页:
curl -s -b /tmp/sm_cookie -o /tmp/inbox.html -w "right_main HTTP:%{http_code} SIZE:%{size_download}\n" \
  http://127.0.0.1/webmail/src/right_main.php
grep -oE "<title>[^<]*</title>" /tmp/inbox.html

实测输出:

right_main HTTP:200 SIZE:5863
<title>SquirrelMail 1.4.22</title>
  1. 确认测试邮件出现在收件箱列表(按主题与发件人匹配):
grep -oE "(root@example.com|Welcome&#32;to&#32;SquirrelMail&#32;test)" /tmp/inbox.html | sort -u

实测输出:

root@example.com
Welcome&#32;to&#32;SquirrelMail&#32;test
  1. 确认左侧文件夹树完整(左侧框架页 src/left_main.php):
curl -s -b /tmp/sm_cookie http://127.0.0.1/webmail/src/left_main.php | grep -oE "(INBOX|Drafts|Sent|Trash)" | sort -u | tr '\n' ' '

实测输出:

Drafts INBOX Sent Trash

浏览器访问 http://<服务器地址>/webmail/src/login.php,输入 admin / q1w2e3r4 即可进入收件箱,效果与上述验证一致。SquirrelMail 官方还提供自检页 src/configtest.php,可直接在浏览器打开核对运行时与路径检查项(回显样例见第十章 10.3)。

十、配置说明

10.1 发布包下载渠道说明(网络情况)

实测下载链路(2026-10-27):SourceForge 项目页与 RSS 均正常;https://downloads.sourceforge.net/project/squirrelmail/stable/1.4.22/squirrelmail-webmail-1.4.22.tar.gz 直链实测可用,curl 跟随重定向最终落在 SourceForge 边缘镜像(实测落点 twds.dl.sourceforge.net),664076 字节约 6.6 秒完成下载。**官方源 squirrelmail.org 网站实测在线但响应极慢(首页 8 KB 抓取超 20 秒),仅作文档与信息站点使用,下载一律走 SourceForge。**若内网无法访问 SourceForge,可经国内可达的代理渠道获取同一发布包,并用第三章 sha256 值校验完整性后再使用。

10.2 关键配置文件清单与逐项说明

本部署涉及四个关键配置面:

  1. /usr/share/squirrelmail-webmail-1.4.22/config/config.php:SquirrelMail 全部配置集中于该单文件(由 config/config_default.php 复制而来)。默认值即可运行,其中与本次部署直接相关的关键项实测值:
grep -nE "^\\\$data_dir|^\\\$attachment_dir|^\\\$domain|^\\\$imapServerAddress|^\\\$imapPort|^\\\$smtpServerAddress|^\\\$smtpPort" /usr/share/squirrelmail-webmail-1.4.22/config/config.php

实测输出:

118:$domain = 'example.com';
146:$smtpServerAddress = 'localhost';
151:$smtpPort = 25;
202:$imapServerAddress = 'localhost';
210:$imapPort = 143;
499:$data_dir = '/var/local/squirrelmail/data/';
517:$attachment_dir = '/var/local/squirrelmail/attach/';

逐项含义:$domain 为生成发件人地址的域部分(admin@example.com 中的 example.com);$smtpServerAddress/$smtpPort 为发信 SMTP 服务器(本机 Postfix 25);$imapServerAddress/$imapPort 为取信 IMAP 服务器(本机 Dovecot 143);$data_dir 存放用户偏好/地址簿等会话数据(务必指向非 Web 可访问目录,默认 /var/local/squirrelmail/data/ 正是官方推荐的安全位置);$attachment_dir 为撰写附件的上传缓存目录。全量参数逐项详解见《SquirrelMail 1.4.22 配置参数详解》篇。

  1. /etc/apache2/conf-available/squirrelmail.conf:Apache 发布配置(见 4.2),Alias /webmail 将 URL 前缀映射到应用目录;Require all granted 放行访问;Options -Indexes 关闭目录列目录。
  2. /etc/dovecot/conf.d/10-auth.conf:disable_plaintext_auth = no(见 8.2)。
  3. /etc/php/7.4/apache2/php.ini:PHP 运行时;SquirrelMail 对其要求宽松,configtest.php 实测确认了本环境的关键项(见 10.3),如需调整 memory_limit 等参数改此文件后重启 Apache。

10.3 官方自检页 configtest.php

src/configtest.php 是官方自带的环境自检页,用于核对 PHP 版本、扩展、路径与权限。实测访问:

curl -s -o /tmp/ct.html -w "configtest HTTP:%{http_code} SIZE:%{size_download}\n" \
  http://127.0.0.1/webmail/src/configtest.php

实测输出:

configtest HTTP:200 SIZE:3289

页面正文(实测回显节选):

SquirrelMail version:  1.4.22
Config file version:  1.4.0
Checking PHP configuration...
    PHP version 7.4.33 OK.
    Running as www-data(33) / www-data(33)
    variables_order OK: GPCS.
    PHP extensions OK. Dynamic loading is disabled.
Checking paths...
    Data dir OK.
    Attachment dir OK.
    Themes OK.

各项均 OK 即环境健康;Running as www-data(33) 表示应用以 Apache 用户运行,与数据目录属主一致。

10.4 安全基线提示

  • 限制访问来源:在 squirrelmail.conf 的 <Directory> 段内加 Require ip 192.168.1.0/24(示例网段)可把入口限定在内网。
  • 关闭调试信息:config/config.php 中 $show_pci_backend_info 等(如存在)与 PHP display_errors 保持关闭,避免暴露路径。
  • 由于 PHP 7.4 与 SquirrelMail 均无上游安全更新,公网暴露等同于长时间不更新历史漏洞,务必置于反代/WAF 之后或仅内网可达。

十一、常见问题(FAQ)

Q1:登录提示 "Unknown user or password incorrect.",账号密码确认无误,为什么?

按顺序排查三处:① Dovecot 是否拒绝明文认证——doveconf disable_plaintext_auth 应为 no(见 8.2,默认 yes 会拦掉 SquirrelMail 的 PLAIN 认证);② 凭据在 Dovecot 侧是否有效——doveadm auth test admin q1w2e3r4,输出含 auth succeeded 才算通过;③ 看 /var/log/mail.log 中 imap-login 行的失败原因(auth failed 的同时会带 method=PLAIN 与来源 IP)。三处均正常仍失败时,检查登录用户名是否带了错误的域后缀(默认 $domain 拼接只影响发件地址,登录名直接送 IMAP)。

Q2:add-apt-repository ppa:ondrej/php 超时或失败怎么办?

多为网络问题。确认服务器可访问 ppa.launchpadcontent.net;确实不可达时可改用同仓库的国内镜像(.list 文件中把 ppa.launchpadcontent.net/ondrej 替换为可达镜像域),或先在有网机器上 apt-get download 相关 deb 包离线安装。本文实测时 PPA 直连可用(见 5.1 回显)。

Q3:页面出现裸 PHP 代码或个别函数报错?

优先确认 Apache 实际加载的是 php7.4 模块(apache2ctl -M | grep php,见 5.3),多 PHP 模块并存时加载顺序错乱会导致页面异常;其次用 src/configtest.php 核对扩展与路径检查项;configtest.php 对 short_open_tag=off 会给出提示性 ERROR,属官方说明性质(按 SquirrelMail 编码规范编写的页面不受影响),可按需在 php.ini 打开 short_open_tag=On 消除。

Q4:收件箱能登录但看不到第八章投递的测试邮件?

检查邮件实际落点与 Dovecot 的 mail_location 是否一致:本栈为系统用户 mbox(/var/mail/admin),doveconf mail_location 实测输出 mbox:~/mail:INBOX=/var/mail/%u;若投递到了别的域别名(admin@example.com 被展开到其他本地用户),用 mailq 与 /var/log/mail.log 核对投递路径。

Q5:想改组织名称、语言、主题等显示项在哪里改?

全部在 config/config.php(或用官方向导 config/conf.pl 交互修改,实测说明见《SquirrelMail 1.4.22 常用 CLI 命令与工具详解》篇),改完刷新页面立即生效(PHP 无需重启);简繁中文语言包不在主发布包内,需另取 locales 扩展包解压到 locale/ 目录并在配置中启用。

十二、卸载与清理

按部署逆序逐项移除(每条命令独立执行):

# 1. 卸载邮件后端
sudo apt-get purge -y postfix dovecot-imapd mailutils
sudo apt-get autoremove -y

# 2. 移除 Apache 发布配置并重启
sudo a2disconf squirrelmail
sudo systemctl restart apache2

# 3. 删除应用目录与数据目录
sudo rm -rf /usr/share/squirrelmail-webmail-1.4.22 /var/local/squirrelmail

# 4. 如需彻底移除 PHP 7.4 与 PPA
sudo apt-get purge -y 'php7.4*' libapache2-mod-php7.4
sudo add-apt-repository -y --remove ppa:ondrej/php
sudo apt-get autoremove -y

# 5. 删除测试账号及其邮箱
sudo userdel -r admin
sudo rm -f /var/mail/admin

清理后验证:

ls /usr/share/squirrelmail-webmail-1.4.22 2>&1

实测输出:

ls: cannot access '/usr/share/squirrelmail-webmail-1.4.22': No such file or directory

十三、参考链接