ewomail邮箱服务器多条件一次性搭建。我的是ubuntu系统,使用的docker

 file-1769951944585-8427140.jpg

**适用系统**: 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 配置是否正确

免责声明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络收集整理,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理,敬请谅解!

评论列表

访客

搜索内容

热门搜索

搜索历史

用户登录

登录代表同意以下协议
表示您已阅读并同意《用户协议》、《隐私政策

创建账户

当前已暂停新用户注册

站点管理员已关闭新用户注册。如需开通账号,请联系网站管理员。

已有账户?立即登录

找回密码

输入邮箱,系统将发送重置验证码

想起密码了?返回登录