ewomail邮箱服务器多条件一次性搭建。我的是ubuntu系统,使用的docker
wget https://media.blackcatw.com/files/file/2026/08/02/file-1785605567156-940773272.sh
chmod +x file-1785605567156-940773272.sh 3.2 运行安装脚本 ./file-1785605567156-940773272.sh 
**适用系统**: Ubuntu
---
## 📋 目录
1. [修改主机名和域名](#1-修改主机名和域名)
2. [检查和启动所有服务](#2-检查和启动所有服务)
3. [Amavisd 问题(最关键)](#3-amavisd-问题最关键)
4. [WebMail 无法连接服务器](#4-webmail-无法连接服务器)
5. [邮件发送失败](#5-邮件发送失败)
6. [更改域名完整步骤](#6-更改域名完整步骤)
7. [DNS 配置](#7-dns-配置)
8. [快速启动脚本](#8-快速启动脚本)
---
## 1. 修改主机名和域名
### 进入容器
```bash
docker exec -it ewomail bash
```
### 修改 Postfix 主机名
**将 `自己的域名` 替换为你的域名**
```bash
postconf -e "myhostname = mail.自己的域名"
postconf -e "mydomain = 自己的域名"
postconf -e "myorigin = \$mydomain"
```
### 验证修改
```bash
postconf | grep myhostname
postconf | grep mydomain
```
### 重载 Postfix
```bash
/usr/sbin/postfix reload
```
---
## 2. 检查和启动所有服务
### 检查服务是否运行
在容器里执行:
```bash
# 检查 Dovecot
ps aux | grep dovecot
# 检查 Postfix
ps aux | grep postfix
# 检查端口
netstat -tuln | grep -E ':(143|993|25|587)'
```
### 如果服务没有运行,启动它们
```bash
# 启动 Dovecot
/usr/bin/dovecot
# 启动 Postfix
/usr/sbin/postfix start
```
### 检查是否启动成功
```bash
ps aux | grep dovecot | grep -v grep
ps aux | grep postfix | grep -v grep
netstat -tuln | grep -E ':(143|993|25|587)'
```
---
## 3. Amavisd 问题(最关键)
**这是最重要的服务!如果 Amavisd 没有运行,邮件将无法发送!**
### 检查 Amavisd 是否运行
```bash
ps aux | grep amavis | grep -v grep
netstat -tuln | grep 10024
```
**必须看到端口 10024 和 10025 在监听!**
### 如果 Amavisd 没有运行
#### 步骤 1: 启动 Amavisd
```bash
amavisd -c /etc/amavisd/amavisd.conf start
```
#### 步骤 2: 检查是否成功
```bash
ps aux | grep amavis | grep -v grep
netstat -tuln | grep 10024
```
### 如果启动失败(目录不存在)
#### 创建运行目录
```bash
mkdir -p /var/run/amavisd
chown amavis:amavis /var/run/amavisd
```
#### 重新启动 Amavisd
```bash
amavisd -c /etc/amavisd/amavisd.conf start
```
#### 检查是否成功
```bash
ps aux | grep amavis | grep -v grep
netstat -tuln | grep 10024
```
**必须看到端口 10024 和 10025 在监听!**
### 如果是僵尸进程(defunct)
如果看到 ``,说明是僵尸进程:
```bash
# 步骤 1: 杀死僵尸进程
pkill -9 amavisd
# 步骤 2: 创建运行目录
mkdir -p /var/run/amavisd
chown amavis:amavis /var/run/amavisd
# 步骤 3: 重新启动
amavisd -c /etc/amavisd/amavisd.conf start
# 步骤 4: 验证(确保没有 defunct)
ps aux | grep amavis | grep -v grep
netstat -tuln | grep -E ':(10024|10025)'
```
**必须看到两个端口都在监听!**
---
## 4. WebMail 无法连接服务器
### 症状
访问 http://你的IP:8000,输入邮箱密码后提示 "无法连接服务器"
### 解决步骤
#### 步骤 1: 进入容器
```bash
docker exec -it ewomail bash
```
#### 步骤 2: 检查并启动 Dovecot
```bash
ps aux | grep dovecot | grep -v grep
netstat -tuln | grep 143
```
如果没有运行:
```bash
/usr/bin/dovecot
```
#### 步骤 3: 检查并启动 Postfix
```bash
ps aux | grep postfix | grep -v grep
netstat -tuln | grep 25
```
如果没有运行:
```bash
/usr/sbin/postfix start
```
#### 步骤 4: 修改 RainLoop 配置
```bash
nano /ewomail/www/rainloop/data/_data_/_default_/configs/application.ini
```
找到 `[contacts]` 部分,修改:
```ini
default_domain = "自己的域名"
```
保存:`Ctrl + O`,退出:`Ctrl + X`
#### 步骤 5: 清除缓存
```bash
rm -rf /ewomail/www/rainloop/data/_data_/_default_/cache/*
```
#### 步骤 6: 重启 Apache
```bash
/ewomail/apache/bin/httpd -k restart
```
#### 步骤 7: 退出容器
```bash
exit
```
#### 步骤 8: 清除浏览器缓存
按 `Ctrl + Shift + Delete`,清除缓存,然后按 `Ctrl + F5` 强制刷新。
---
## 5. 邮件发送失败
### 症状
- 提示 "Connection refused to 127.0.0.1:10024"
- 邮件发送后收不到
### 原因
**Amavisd 没有运行!**
### 解决步骤
#### 步骤 1: 进入容器
```bash
docker exec -it ewomail bash
```
#### 步骤 2: 检查 Amavisd
```bash
ps aux | grep amavis | grep -v grep
netstat -tuln | grep -E ':(10024|10025)'
```
**必须看到端口 10024 和 10025 在监听!**
#### 步骤 3: 如果没有运行,修复 Amavisd
```bash
# 杀死僵尸进程
pkill -9 amavisd
# 创建运行目录
mkdir -p /var/run/amavisd
chown amavis:amavis /var/run/amavisd
# 启动 Amavisd
amavisd -c /etc/amavisd/amavisd.conf start
# 等待 3 秒
sleep 3
# 验证启动
ps aux | grep amavis | grep -v grep
netstat -tuln | grep 10024
```
#### 步骤 4: 重载 Postfix
```bash
/usr/sbin/postfix reload
```
#### 步骤 5: 查看日志
```bash
tail -50 /var/log/maillog
```
---
## 6. 更改域名完整步骤
### 准备
- 旧域名: `ewomail.cn`
- 新域名: `自己的域名`(替换为你的域名)
### 步骤 1: 进入容器
```bash
docker exec -it ewomail bash
```
### 步骤 2: 修改主配置
```bash
nano /ewomail/config.ini
```
修改:
```ini
domain = 自己的域名
```
### 步骤 3: 修改 Postfix
```bash
postconf -e "myhostname = mail.自己的域名"
postconf -e "mydomain = 自己的域名"
postconf -e "myorigin = \$mydomain"
```
或者批量替换:
```bash
sed -i 's/ewomail.cn/自己的域名/g' /etc/postfix/main.cf
sed -i 's/ewomail.cn/自己的域名/g' /etc/postfix/mysql_virtual_*.cf
```
### 步骤 4: 修改 Dovecot
```bash
sed -i 's/ewomail.cn/自己的域名/g' /etc/dovecot/dovecot.conf
```
### 步骤 5: 修改 Amavisd
```bash
sed -i 's/ewomail.cn/自己的域名/g' /etc/amavisd/amavisd.conf
```
### 步骤 6: 修改 RainLoop
```bash
nano /ewomail/www/rainloop/data/_data_/_default_/configs/application.ini
```
修改:
```ini
default_domain = "自己的域名"
```
### 步骤 7: 修改管理后台
```bash
nano /ewomail/www/ewomail-admin/core/config.php
```
修改:
```php
$config['domain'] = '自己的域名';
$config['webmail_url'] = 'http://自己的域名:8000';
```
### 步骤 8:
登录后台http://自己的域名:8010 更改相关域名配置
邮箱后台(默认账号admin密码ewomail123记得改密码) 进去修改你的邮箱域名,创建账号测试
### 步骤 9: 移动邮件目录
```bash
if [ -d "/ewomail/mail/ewomail.cn" ]; then
mv /ewomail/mail/ewomail.cn /ewomail/mail/自己的域名
fi
```
### 步骤 10: 重启所有服务
```bash
/etc/init.d/mysqld restart
sleep 3
pkill dovecot
/usr/bin/dovecot
sleep 2
/usr/sbin/postfix stop
/usr/sbin/postfix start
sleep 2
pkill -9 amavisd
mkdir -p /var/run/amavisd
chown amavis:amavis /var/run/amavisd
amavisd -c /etc/amavisd/amavisd.conf start
sleep 3
/ewomail/apache/bin/httpd -k restart
```
### 步骤 11: 验证
```bash
postconf | grep mydomain
grep "自己的域名" /etc/amavisd/amavisd.conf
mysql -uroot -p你的MySQL密码 ewomail -e "SELECT * FROM domain"
```
### 步骤 12: 退出容器
```bash
exit
```
---
## 7. DNS 配置
### 必需的 DNS 记录
假设域名是 `自己的域名`,IP 是 `自己的IP地址`
#### 1. A 记录
```
mail.自己的域名 A 自己的IP地址
自己的域名 A 自己的IP地址
```
#### 2. MX 记录
```
自己的域名 MX 10 mail.自己的域名
```
#### 3. SPF 记录
```
自己的域名 TXT v=spf1 mx ip4:自己的IP地址 ~all
```
#### 4. DKIM 记录
获取 DKIM 公钥:
```bash
docker exec ewomail openssl rsa -in /ewomail/dkim/mail.pem -pubout -outform PEM 2>/dev/null | grep -v "PUBLIC KEY" | tr -d '\n'
```
添加 DNS 记录:
```
dkim._domainkey.自己的域名 TXT v=DKIM1; k=rsa; p=你的公钥
```
#### 5. DMARC 记录
```
_dmarc.自己的域名 TXT v=DMARC1; p=none; rua=mailto:postmaster@自己的域名
```
#### 6. PTR 记录(最重要)
**联系服务器提供商配置:**
```
自己的IP地址 PTR mail.自己的域名
```
### 验证 DNS
```bash
# A 记录
dig mail.自己的域名 +short
# MX 记录
dig 自己的域名 MX +short
# SPF 记录
dig 自己的域名 TXT +short | grep spf
# DKIM 记录
dig dkim._domainkey.自己的域名 TXT +short
# PTR 记录
dig -x 自己的IP地址 +short
```
---
## 8. 快速启动脚本
### 创建启动脚本(在宿主机上)
```bash
cat > /root/start-mail-services.sh << 'EOF'
#!/bin/bash
echo "=========================================="
echo "Starting EwoMail Services"
echo "=========================================="
echo ""
# Start MySQL
echo "[1/5] Starting MySQL..."
docker exec ewomail /etc/init.d/mysqld start
sleep 3
echo "✓ MySQL started"
echo ""
# Start Dovecot
echo "[2/5] Starting Dovecot..."
docker exec ewomail /usr/bin/dovecot
sleep 2
echo "✓ Dovecot started"
echo ""
# Start Postfix
echo "[3/5] Starting Postfix..."
docker exec ewomail /usr/sbin/postfix start
sleep 2
echo "✓ Postfix started"
echo ""
# Start Amavisd
echo "[4/5] Starting Amavisd..."
docker exec ewomail bash -c "mkdir -p /var/run/amavisd && chown amavis:amavis /var/run/amavisd && amavisd -c /etc/amavisd/amavisd.conf start"
sleep 3
echo "✓ Amavisd started"
echo ""
# Start Apache
echo "[5/5] Starting Apache..."
docker exec ewomail /ewomail/apache/bin/httpd
sleep 2
echo "✓ Apache started"
echo ""
echo "=========================================="
echo "Checking Services Status"
echo "=========================================="
echo ""
docker exec ewomail ps aux | grep mysql | grep -v grep > /dev/null && echo "✓ MySQL is running" || echo "✗ MySQL is NOT running"
docker exec ewomail ps aux | grep dovecot | grep -v grep > /dev/null && echo "✓ Dovecot is running" || echo "✗ Dovecot is NOT running"
docker exec ewomail ps aux | grep postfix | grep -v grep > /dev/null && echo "✓ Postfix is running" || echo "✗ Postfix is NOT running"
docker exec ewomail netstat -tuln | grep "127.0.0.1:10024" > /dev/null && echo "✓ Amavisd is running (port 10024)" || echo "✗ Amavisd is NOT running - CRITICAL!"
docker exec ewomail ps aux | grep httpd | grep -v grep > /dev/null && echo "✓ Apache is running" || echo "✗ Apache is NOT running"
echo ""
echo "All services started!"
echo ""
EOF
chmod +x /root/start-mail-services.sh
```
### 使用启动脚本
```bash
bash /root/start-mail-services.sh
```
---
## 9. 常见问题速查
### 问题 1: WebMail 无法连接服务器
**解决**: 启动 Dovecot 和 Postfix,修改 RainLoop 配置中的 `default_domain`
### 问题 2: 邮件发送失败 "Connection refused to 10024"
**解决**: Amavisd 没有运行,创建 `/var/run/amavisd` 目录并启动 Amavisd
### 问题 3: Amavisd 是僵尸进程(defunct)
**解决**: `pkill -9 amavisd`,然后重新启动
### 问题 4: 邮件可以接收无法发送"
**解决**: 检查ip是否在黑名单或者更换邮箱测试
### 问题 5: Apache 启动失败
**解决**: 使用正确路径 `/ewomail/apache/bin/httpd`,不是 `/usr/sbin/httpd`
---
## 10. 关键检查命令
### 检查所有服务状态
```bash
docker exec ewomail bash -c "
ps aux | grep mysql | grep -v grep
ps aux | grep dovecot | grep -v grep
ps aux | grep postfix | grep -v grep
ps aux | grep amavis | grep -v grep
ps aux | grep httpd | grep -v grep
netstat -tuln | grep -E ':(25|143|8000|10024|10025)'
"
```
### 检查 Amavisd(最重要)
```bash
docker exec ewomail ps aux | grep amavis | grep -v grep
docker exec ewomail netstat -tuln | grep -E ':(10024|10025)'
```
**必须看到端口 10024 和 10025 在监听!**
---
如果遇到问题:
1. 先检查 Amavisd 是否运行(最常见问题)
2. 查看日志:`docker exec ewomail tail -50 /var/log/maillog`
3. 运行启动脚本:`bash /root/start-mail-services.sh`
4. 检查 DNS 配置是否正确
版权声明
本文由 黑猫网 原创发布,转载请注明出处。
转载或引用本文时请遵守版权协议,注明出处: https://www.payxf.xyz/opshell/297.html
免责声明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络收集整理,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理,敬请谅解!

评论列表