【图文】服务器/VPS DD windows 10系统DD包制作详细教程

一、环境和准备工具

1.1本地环境

windows 10 专业版 64 位(原版系统即可)

开启 Hyper-V https://jingyan.baidu.com/article/15622f24017461fdfdbea554.html (Hyper-V 主要是开启远程,亦可用 VNC 操作)

1.2准备的工具

windows 10 专业版 64 位(原版系统即可)

VirtIO 驱动 https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso

Dism++请解压所有文件,然后再运行! http://www.chuyu.me/zh-Hans/index.html

gunzip for windows     http://gnuwin32.sourceforge.net/downlinks/gzip-bin-zip.php

 

二、准备镜像和驱动

2.1 提取Windows 10 镜像文件 挂载 windows 10.iso,或解压复制 install.esd/install.wim 到自定位置,待用。

2. 2VirtIO 驱动 挂载或解压缩 VirtIO 驱动, 待用。

 

三、创建VHD 虚拟磁盘

以管理员身份运行命令提示符 cmd,输入

diskpart
CREATE VDISK FILE=”D:win.vhd” TYPE=FIXED MAXIMUM=10240
#不更新的话,32 位 8G,64 位 10G
SELECT VDISK FILE=”D:win.vhd”
ATTACH VDISK
CLEAN
CREATE PARTITION PRIMARY
FORMAT FS=NTFS QUICK
ASSIGN LETTER=V

 

四、DISM添加驱动并优化

4.1释放镜像

文件-释放镜像,如图选择
目标映像:Windows 10 pro
install.esd/install.wim
V:
勾选添加引导,格式化

点击确定 – 更多, 选择 V: 分区,确定。

4.2添加驱动

Dism++切换至目标系统(工具栏下高亮选择)- 打开会话,驱动管理 – 添加驱动 – 选择驱动文件夹,将备好的 VirtIO 添加进去

4.3 优化系统

在“Appx 管理”删除预装,建议保留 photo

在“系统优化”优化界面

4.4 卸载镜像
文件-卸载镜像,关闭 Dism++
资源管理器右键磁盘 V:,弹出

 

五、利用 Hyper-V 开启远程及定制

打开 Hyper-V, 连接到服务器-本地计算机。(操作)- 新建 – 虚拟机 – 指定名称和位置 – 第一代(1)- 内存 – 网络连接(建议不连接防止更新) – 使用现有虚拟硬盘,选择 D:win.vhd – 完成

建议取消检查点,各种占用,报错。
界面右侧,设置 – 检查点,取消勾选启用检查点。(此处可添加 CPU)

右键虚拟机 – 连接- 启动,开启远程,定制程序等等。

六、压制成 DD 包

解压 gunzip,将’bin‘目录中的文件放置’%WINDIR%/SYSTEM32‘文件夹中,即可方便在命令提示符中使用。

d:
gzip.exe -k9 D:win.vhd

等待一会压缩完成,上传使用即可!Vultr 亲测可用

本文转自:https://saodaye.com/zz/480.html

Windows 2003无法访问HTTPS网站解决方案

新开了一个vps,突然发现基本上所有的网站都无法打开,后来发现仅仅只是使用了https的网站无法访问。后来一google,原因是部分网站SSL证书使用的SHA256签名算法,而Windows 2003无法支持,因此可能导致Windows 2003、Windows XP无法打开,下载微软HotFix KB968730 补丁即可解决。

补丁下载地址

X86平台中文
X86平台英文
X64平台中文
X64平台英文

补丁安装完成后记得重启下系统并清除浏览器缓存重新访问测试。

详细说明可参考:如何解决 Windows 2003 server 不能正常显示 SHA2签名算法SSL证书

启用HSTS,放弃使用301跳转,使SSL/TLS安全评估达到A+

深夜了,夜猫子又开始瞎折腾捣鼓了…之前一直用的301跳转,这样很容易被劫持。这次折腾的是博客的HSTS…

注意:(确定开启HSTS的三点注意事项!谨记!SSL以及HSTS的到期时间!)

  • HSTS策略只能在HTTPS响应中进行设置,网站必须使用默认的443端口;
  • 所有子域名(*.saodaye.com)只能通过安全连接(https),如果子域名有一个没有配置ssl,那么这个没有配置ssl的域名就无法访问了;
  • 如果saodaye.com服务器发送的TLS证书无效,用户不能忽略浏览器警告继续访问该网站。(意味着在HSTS失效前SSL不能失效,如果SSL在HSTS之前失效了,浏览器就会警告用户,而且无法忽略警告继续访问)

我们先了解一下HSTS是什么鬼~

HSTS是国际互联网工程组织 IETE 正在推行一种新的 Web安全协议HTTP Strict Transport Security(HSTS)。

采用 HSTS 协议的网站将保证浏览器始终连接到该网站的 HTTPS 加密版本,不需要用户手动在 URL 地址栏中输入加密地址。也就是打开网站会直接跳转到https加密的链接,减少会话劫持风险。

简单来说

网站全站HTTPS后,如果用户手动敲入网站的HTTP地址,或者从其它地方点击了网站的HTTP链接,通常依赖于服务端301/302跳转才能使用HTTPS服务。

而第一次的HTTP请求就有可能被劫持,导致请求无法到达服务器,从而构成HTTPS降级劫持。这个问题就可以通过HSTS(HTTP Strict Transport Security,RFC6797)来解决。

开始配置之前先检测一下,是否达到A+,如果无法达到A+,请自觉配置HSTS以减少可能被劫持的风险

emmm  现在是评级是A,暂时没达到A+,而且提示你需要开启HSTS才能提升到A+,那就动手开始配置~

  • max-age,单位是秒,用来告诉浏览器在指定时间内,这个网站必须通过HTTPS协议来访问。也就是对于这个网站的HTTP地址,浏览器需要先在本地替换为HTTPS之后再发送请求。
  • includeSubDomains,可选参数,如果指定这个参数,表明这个网站所有子域名也必须通过HTTPS协议来访问。
  • preload,可选参数,一个浏览器内置的使用HTTPS的域名列表。

Apache 配置 HSTS

编辑你的 apache 配置文件(如 /etc/apache2/sites-enabled/website.conf 和 /etc/apache2/httpd.conf ),并加下面的内容到你的 HTTPS VirtualHost:

Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"

然后重启Apche

Nginx 配置 HSTS

编辑Nginx配置文件就可以了,找到安装Nginx下的Nginx.conf文件

add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";

然后重启Nginx

宝塔(BT.CN)的配置方法

网站→站点设置→配置文件
(我使用的是nginx,直接插入nginx的代码就可以了,如果是Apche则插入Apche的代码)

SSL/TLS的服务检测评分

官网:https://www.ssllabs.com/

中文版:https://myssl.com

演示:https://myssl.com/saodaye.com?status=success

服务器检测是否配置了HSTS(记得改成你自己的域名),只要输入下面的代码,出现标记红框的内容就没问题了,配置就OK了

curl -I https://saodaye.com

本文转自:https://saodaye.com/zz/859.html

Linux VPS使用Webbench/Apache-ab进行网站压力测试

简介

Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。

Apache abApache Bench性能测试工具,这是apache免费自带的性能测试工具,就在apachebin目录下,它能模拟多个并发请求,也就是说它主要是用来测试你的网站每秒能处理多少请求的。

 原文转自:https://www.moerats.com/archives/606/

安装

如果是测试https的话,使用Apache-ab就可以了。

1、安装Webbench

#Debian/Ubuntu系统
apt-get install gcc make ctags -y
#Centos系统
yum install gcc make ctags -y

#安装Webbench
wget https://www.moerats.com/usr/down/webbench-1.5.tar.gz
tar zxvf webbench-1.5.tar.gz && cd webbench-1.5
make && make install

2、安装Apache

#Centos系统
yum install apache2 -y
#Debian/Ubuntu系统
apt-get install apache2 -y

使用

1、Webbench

#使用帮助
webbench -h
#测试命令,-c为并发数;-t为测试时长,单位秒;后面为链接
webbench -c 1000 -t 50 http://www.baidu.com

2、Apache

#使用帮助
ab -h
#测试1,-n为发送请求次数;-c并发数;后面为链接
ab -n 500 -c 400 http://www.baidu.com
#测试2,-t为测试时长,单位秒;-c并发数;后面为链接
ab -t 90 -c 50 http://www.baidu.com

总结

WebbenchApache-ab的测试效果都还可以,只是Webbench不支持https网站,AB倒是可以,不过AB的并发数不能过大,好像需要改配置文件,默认最大1024,如果是用来CC攻击或者网站压力测试,建议找下载文件或者动态图片来试,尽量别做坏事。

Python 3.6一键安装脚本 for CentOS/Debian

本文转载自:https://www.moerats.com/archives/507/

说明:最近一直在玩爬虫,需要使用到python3pip3,手动安装又有点麻烦,就搞了个一键脚本,Python版本为3.6.4,脚本安装了很多依赖包,不会因为缺少依赖而出问题,这里就分享下。

安装

1、检查下系统是否有Python3

python3 -V

2、安装Python3

#CentOS系统
wget https://www.moerats.com/usr/shell/Python3/CentOS_Python3.6.sh && sh CentOS_Python3.6.sh
#Debian系统
wget https://www.moerats.com/usr/shell/Python3/Debian_Python3.6.sh && sh Debian_Python3.6.sh

备用地址

#CentOS系统
wget http://d.12u.net/Shell/Python3/CentOS_Python3.6.sh && sh CentOS_Python3.6.sh
#Debian系统
wget http://d.12u.net/Shell/Python3/Debian_Python3.6.sh && sh Debian_Python3.6.sh

然后再输入python3 -V看是否安装成功。一般安装成功就可以使用python3pip3了。

 提示

如果想修改系统默认的Python版本的话,还需要创建软链接,可使用命令:

cd /usr/bin
mv python python.backup
ln -s /usr/local/bin/python3 /usr/bin/python

然后重启运行python -V查看即可。

一般CenOS系统修改后会出现yum用不了的情况,这时候需要编辑yum的配置文件,方法如下:

vi /usr/bin/yum
将文件首行
#!usr/bin/python
修改为python之前的版本,如:
#!/usr/bin/python2.7

Linux VPS使用Caddy快速搭建文件分享平台

Linux VPS使用Caddy快速搭建文件分享平台,这里用的是逗比的脚本。

使用命令:

wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/caddy_install.sh && bash caddy_install.sh uninstall
#备用地址
wget -N --no-check-certificate http://d.12u.net/shell/Caddy/caddy_install.sh && bash caddy_install.sh uninstall

创建IP访问,使用命令:

#以下一整条命令,直接复制即可,80为端口,可以随便修改,且/chinavps为要分享的文件目录
echo ":80 {
 root /chinavps
 gzip
 browse
}" > /usr/local/caddy/Caddyfile

然后我们可以打开http://IP:端口进入界面了。

如果打不开,重新启动下Caddy即可。

/etc/init.d/caddy start

service caddy restart

本文参考:https://www.moerats.com/archives/533/

利用Caddy扩展快速安装FileManager私人网盘/在线文件管理器

说明:

本文转载自:https://www.moerats.com/archives/403/

关于FileManager安装方法之前说过,参考:一个基于GO的轻量级文件管理系统:FileManager安装教程,不过对于小白来说,还是有点麻烦,刚刚看到逗比那里也有个安装方法,很方便。

 截图

请输入图片描述

Caddy FileManager扩展介绍

FileManager是基于Caddy的扩展。它提供文件管理界面,可用于上传/下载/删除/预览和重命名等该目录中的文件。

  • 支持 上传文件
  • 支持 按类型 搜索文件
  • 支持 批量压缩 文件下载
  • 支持 多用户管理(权限可控)
  • 支持 在网页执行 Linux命令
  • 支持 创建 共享链接(限时/永久)
  • 支持 在线编辑 各类文本文件
  • 支持 在线浏览 图片/文本/视频等
  • 支持 新建/重命名/移动/删除 文件和文件夹等
  • 部署简单,几步完成,无需任何依赖环境
  • 等等 …

安装Caddy

Caddy文档:https://caddyserver.com/docs/http.filemanager
Github项目:https://github.com/hacdias/filemanager

运行以下命令:

wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh install http.filemanager
#备用地址
wget -N --no-check-certificate https://www.moerats.com/usr/shell/Caddy/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh install http.filemanager

安装成功后,继续新建一个用于使用的虚拟主机文件夹,例如file(可以自己改):

mkdir /usr/local/caddy/www && mkdir /usr/local/caddy/www/file

配置

1、IP访问
绑定虚拟主机为IP(即通过IP访问),HTTP协议(80端口)。

# 以下全部内容是一个整体,是一个命令,全部复制粘贴到SSH软件中并一起执行!
echo ":80 {
 root /usr/local/caddy/www/file
 timeouts none
 gzip
 filemanager / /usr/local/caddy/www/file {
  database /usr/local/caddy/filemanager.db
 }
}" > /usr/local/caddy/Caddyfile

2、域名HTTP访问
本示例是,绑定虚拟主机为域名(即通过域名访问),HTTP协议(80端口)。

# 以下全部内容是一个整体,是一个命令,全部复制粘贴到SSH软件中并一起执行(注意替换示例域名)!
echo "http://moerats.com {
 root /usr/local/caddy/www/file
 timeouts none
 gzip
 filemanager / /usr/local/caddy/www/file {
  database /usr/local/caddy/filemanager.db
 }
}" > /usr/local/caddy/Caddyfile

3、域名HTTPS访问
本示例是,绑定虚拟主机为域名(即通过域名访问),HTTPS协议(443端口)。

如果你有SSL证书和密匙的话,把SSL证书(xxx.crt)和密匙(xxx.key)文件放到/root文件夹下(也可以是其他文件夹,自己改下面代码),然后这样做:

# 以下全部内容是一个整体,是一个命令,全部复制粘贴到SSH软件中并一起执行(注意替换示例域名)!
echo "https://moerats.com {
 root /usr/local/caddy/www/file
 timeouts none
 tls /root/xxx.crt /root/xxx.key
 gzip
 filemanager / /usr/local/caddy/www/file {
  database /usr/local/caddy/filemanager.db
 }
}" > /usr/local/caddy/Caddyfile

如果你没有SSL证书和密匙,那么你可以这样做:

下面的xxxx@xxx.xx改成你的邮箱,同时需要注意的是,申请SSL证书前,请务必提前解析好域名记录(解析后最好等一会,以全球生效),否则Caddy会申请并配置失败!

# 以下全部内容是一个整体,是一个命令,全部复制粘贴到SSH软件中并一起执行(注意替换示例域名)!
echo "https://moerats.com {
 root /usr/local/caddy/www/file
 timeouts none
 tls xxxx@xxx.xx
 gzip
 filemanager / /usr/local/caddy/www/file {
  database /usr/local/caddy/filemanager.db
 }
}" > /usr/local/caddy/Caddyfile

4、域名HTTP重定向HTTPS
本示例是,域名HTTP重定向为HTTPS

当你是手动指定SSL证书和密匙 来配置的话,Caddy只会监听443端口(https),并不会自动设置80端口(http)的重定向,如果要做重定向的话,可以这样做:

下面的示例代码中,是把http://moerats.com重定向到了https://moerats.com

# 以下全部内容是一个整体,是一个命令,全部复制粘贴到SSH软件中并一起执行(注意替换示例域名)!
echo "http://moerats.com {
 timeouts none
 redir https://moerats.com{url}
}
https://moerats.com {
 root /usr/local/caddy/www/file
 timeouts none
 tls /root/xxx.crt /root/xxx.key
 gzip
 filemanager / /usr/local/caddy/www/file {
  database /usr/local/caddy/filemanager.db
 }
}" > /usr/local/caddy/Caddyfile

当你已经配置完上面步骤后,那就需要启动Caddy了。

/etc/init.d/caddy start
# 如果启动失败可以看Caddy日志: tail -f /tmp/caddy.log

最后就可以通过ip访问filemanager了,用户名和密码均为admin

更多配置方法请参考原文:https://doub.io/jzzy-3/

[ Linux Shell ] 通用无限制在 Linux VPS 上一键全自动 dd 安装 Windows

原文转载自:无限制全自动dd安装Windows

https://moeclub.org/2017/11/19/483/

突破没有VNC,没有救援模式,内存比dd包小的限制.
使用Debian Live CD中的busybox做中间媒介,经过复杂的处理,
使本机的网络参数传进Windows操作系统中,
即使没有DHCP能够让Windows获取网络参数,
也能让Windows操作系统在开机的第一时间能够连通网络.

    • 背景:

1.带Windows的为什么就卖得那么贵?
2.当然是为了更自由的使用自己的机器.

    • 萌咖提供的demo包(1.19G;已激活):

使用的是Windows Embedded Standard 7(Thin PC)作为底包,官方精简.
如需其他组件,例如:完整的桌面特征,Windows照片查看器等.
请参考: Thin PC (Win7 Embedded) 安装组件

    • 使用示例:
    • 注意事项:
      1. 远程登陆账号为: Administrator
      2. 远程登陆密码为: Vicer
      3. 仅修改了主机名,可放心使用.(建议自己制作.)
      4. 使用的公用网盘,如需长期/大量使用此包请自行备份.
      5. 如果因此违反了TOS,萌咖不负任何责任.
    • 可能用到的命令:
    • 温馨提示:

磁盘管理中,点击’C‘盘,右键选择’扩展卷‘,可以直接’增加‘C盘的空间.
激活相关请参考: https://moeclub.org/kms

    • 萌咖提供的可用包:
        与本地用iso镜像安装过程一样,如果你有VNC,可看到全部过程.

 

      • 因为

全新安装!!! 全新安装!!! 全新安装!!!

      •  所以会等待久一点.

      • Windows Embedded 8.1 Industry Pro x64 (2.87G;KVM;XEN;Hyper-V;未激活)

Vmware ESXI服务器虚拟机共享IP部署

部署说明

适用范围

本部署文档适用于

使用了 Vmware ESXI 虚拟化的服务器:

  • 只分配了一个IPv4地址的独立服务器,必须满足:
    • 拥有IPMI远程管理权限 (全部 online.net 服务器)。
    • 或者 拥有有效的IPv6地址 (OVH旗下服务器,包括kimsufi等)。
    • 或者 拥有内部网络,并且可以访问(部分 online.net 服务器)。
  • 分配了多个IPv4地址,不想浪费一个公网 IP作为ESXI的管理。

已测试适用于

  • Online.net
  • OVH集团(包括kimsufi)

准备资源

  • 软路由镜像: 可选 pfsense, 海蜘蛛爱快
  • 控制台镜像: windows镜像(或者带桌面的Linux发行版本)
  • 网络代理: 在支持IPv6的vps 安装shadowsocks服务端(已测试支持IPv6)。本地安装Proxifier + shadowsocks客户端,测试站点 Google IPV6

部署示例

部署注意

请务必阅读前一章 部署说明,确认满足部署条件。以下部署以kimsufi 为例子,使用爱快作为软路由。

部署步骤

1. 使用kimsufi 自动安装系统为 Esxi 5.0

kimsufi_reinstall
一直点击next,安装成功后会有邮件通知,并且默认打开了ESXI的ssh功能。

2. 更新系统版本为最新的 Esxi 6.0 update2

1
2
3
4
5
6
7
# 下载Esxi更新包
  cd /vmfs/volumes/datastore1
  wget "" -O update-from-esxi6.0-6.0_update02.zip
# 安装更新包
  esxcli software vib install -d "/vmfs/volumes/datastore1/update-from-esxi6.0-6.0_update02.zip"
#重启生效
  reboot

3. 安装 VMware vSphere Client

下载地址: vsphereclient
安装后登陆,继续进行下一步。

4. 配置ipv6地址[Online]

  • 配置 Esxi 支持 Ipv6
    esxi_ipv6_enable
  • 配置 静态Ipv6
    kimsuifi 默认分配了一个Ipv6地址 (管理面板 -> IP 可查看),配置信息为

    1
    2
    3
    4
    5
    2607:xxxx:xxxx:xxxx::1          # 分配的Ipv6地址
    
    2607:xxxx:xxxx:xxff:xx:xx:xx:xx # 网关网段内的任意IP, 请绑定该IPv6与分配的IPv6在同一个网卡上
    
    2607:xxxx:xxxx:xxff:ff:ff:ff:ff # 默认IPv6网关

    esxi_ipv6_setting

  • 测试绑定是否正确
    1
    ping6 2607:xxxx:xxxx:xxxx::1 # 在具有Ipv6网络的vps上测试配置的ipv6 是否成功。

5. 创建内部网络

[对于没有IPMI权限机器] 请务必使用Ipv6地址连接 Esxi 服务器进行此步骤操作。否则可能会导致机器无法访问

对VMware vSphere Client(支持Ipv6地址)设置走代理,连接上Esxi 服务器进行操作

  • 创建一个内部交接网络 vswitch(Adding networking), 类型请选择 Virtual Machine,不绑定网卡
  • 对添加的网络添加 VMkernel, 设置一个静态内网IP地址esxi_inner_set

6. 添加爱快软路由以及控制端虚拟机

关于爱快的安装有相关的爱快安装指导,这里不再赘述。需要提醒注意的是:

  • 爱快需要1GB+的内存。内存小户要慎重考虑。
  • 64位与32位的对比。服务器线上使用,推荐64位。
  • 建议第一块网卡连接内网,第二款外卡连接外网。
  • 爱快安装成功后,默认lan 网络为 192.168.1.1/255.255.255.0安装windows虚拟机成功后,连接爱快web控制台进行设置 http://192.168.1.1 默认账号为 admin, 密码为admin。登陆成功后请修改控制台端口以及admin密码。

7. 设置软路由Wan 地址

  • 查看vswitch0 管理网络(VMkernel) 网络设置,并记下网卡的mac地址。
  • 去除vswitch0 管理网络(VMkernel) 的ipv4地址设置 (No Ip Settings)。如果有Ipv6,千万记得保留ipv6 setting。
  • 为了不触发online的端口安全绑定,不要在机器默认的外网网卡上设置Ipv4 (勾选为No IP Settings)
  • 设置软路由的wan 地址,并指定mac地址。
    • 如果你有IPMI权限,那么先在爱快web控制台设定WAN IP,然后登陆IPMI,手动到ESXI 控制台的网络设定去掉IP设置。如果爱快WAN无法生效,可以恢复原来的网络设置,再次连接爱快控制台进行设置。
    • 如果你有Ipv6连接,那么先在爱快web控制台设定WAN IP,然后用ipv6 连接Esxi客户端,关闭网卡的Ipv4地址设定。

8. 设置端口映射

为了通过Ipv4 正常连接Esxi服务器,请在软路由上添加以下端口的映射

  • 22
  • 80
  • 443
  • 902设置软路由开机自启动(非常重要)。
    esxi_autostart.jpg
  • 原文链接:https://www.nfetch.com/SysOps/2016/07/esxi-nat.html

使用Mail-in-a-Box自建电子邮箱和邮件中继服务器

本文作者为香菇肥牛,感谢付出。

原文标题是:使用MIAB搭建专业的私有邮件服务器和邮件中继服务器

原文链接为https://qing.su/article/122.html

本次我将介绍如何使用国外已经发展较为成熟的Mail-in-a-Box套件搭建专业的私有邮件服务器, 并试图将其作为邮件中继服务器, 让第二台服务器使用此服务器发信. 很遗憾, 对于这样一个强大成熟的邮件服务器套件, 国内尚无任何的介绍和使用.

第一部分 邮件服务器的搭建

Mail-in-a-Box套件的安装条件如下: 1, 一个域名; 2, 一个VPS或独立服务器, 内存要求768MB以上, 系统必须是Ubuntu 14.04 LTS 64bit; 3, Mail-in-a-Box安装过后不能和其他任何应用类程序 (比如MySQL, PHP, Apache等) 共存, 因此我建议您在安装前重装系统; 4, 有部分国人垃圾主机商喜欢使用一种垃圾的XenSystem VPS控制面板, 该面板有一个极其傻逼的特性是会在重启的时候重置主机名和hosts文件, 这对于任何一个邮件服务器来说都是灾难性的, 因此不能在使用XenSystem控制面板的VPS上使用这个套件. 5, 因为未知的原因,OVH的服务器无法安装Mail-in-a-Box. 确定您的服务器满足了以上条件之后, 我们就开始操作. 教程中我们以12.34.56.78代替您的IP地址, 以mail.example.com代替您的主机名.

1, 主机名的设置

拿到一个新的VPS或者独立服务器之后要设置主机名,这是使用主机服务的良好习惯,是所有Linux服务器用户的基本功,也是使用任何邮件类服务所必须的操作。一个合格的主机名应当具有这样的格式:

1
xxx.example.com

有些服务器支持example.com这类的主机名,不过对于邮件服务器,请务必设置成xxx.example.com这种格式。在这里我们以mail.example.com为例介绍一下怎样设置主机名(hostname).

首先,修改系统内的自解析文件。编辑: /etc/hosts 在文件中添加一行(或者修改已有的行):

1
12.34.56.78       mail.example.com          mail

然后在SSH中执行:

1
2
echo ‘mail’ > /etc/hostname
hostname -F /etc/hostname

这时,主机名应该设置完毕了。我们执行hostname命令,应该能看到”mail” (不含引号), 执行hostname -f命令,应该能看到”mail.example.com” (不含引号). 如果这里没有设置正确(比如,如果你输入hostname命令检查的时候看到的仍然是长主机名mail.example.com, 说明没有设置正确),请不要继续。

2, 域名的解析

域名的解析是重要的, 尤其是对于一个邮件服务器. Mail-in-a-Box支持DNS的自动设置, 因此我强烈建议您将您的域名交给您的服务器来解析, 而不是用注册商或其他第三方的解析服务. 如果您想详细了解DNS设置在配置邮件服务器中的作用, 后面我会详细介绍一下域名的各项邮件解析记录对于邮件的收发产生了怎样的作用.

第一步,我们需要注册两个NS服务器。请到您的域名注册商处,注册两个NS服务器(中国的好多傻逼注册商新建NS服务器居然还要收费,国外都是免费的,告别国产保平安),分别为ns1.mail.example.com和ns2.mail.example.com且指向您的VPS/独服的IP地址。

第二步,记下您的域名当前的解析记录,然后将您的域名的DNS服务器设置为我们刚才新注册的两个地址。

第三步,添加Reverse DNS, 将12.34.56.78解析到mail.example.com. 国外VPS用户请在您的VPS控制面板中自行设置Reverse DNS, 国外独服用户请您提交工单申请设置Reverse DNS. 国内主机商都是傻逼,不支持Reverse DNS.

 

3, 安装Mail-in-a-Box

1
2
wget https://mailinabox.email/setup.sh
sh setup.sh

安装过程中管理员邮箱请按照xxx@example.com的格式输入; 系统的主机名请输入mail.example.com. 其他的设置默认即可。

第二部分,使用Mail-in-a-Box邮件服务器进行邮件中继

1, 邮件服务器与邮件中继的工作机制

在介绍邮件中继服务器之前,我们有必要介绍一下邮件服务器的工作流程。

一封邮件从诞生到传输到投递,大致需要经过三个主要部件: MUA, MTA, MDA. MUA全称是Mail User Agent, 即邮件用户代理,它的作用是将用户写好的邮件传送给MTA, Mail Transfer Agent, 即邮件中转代理. MTA在接到邮件后,判断该邮件的收件人是否在本域;若在本域,则转交MDA (Mail Delivery Agent) 投递至目标用户的收件箱;若收件人不在本域,则转发至目标用户所在域的MTA, 并进而传达给该域的MDA进行投递。因此我们可以作这样的归纳,即一般情况下A域MTA扮演的角色有二: (1) 接受A域MUA的邮件并传给B域MTA; (2) 接受B域 (或A域) MTA的邮件并传给A域MDA.

然而还有一种特殊的情况是这样的: A域MTA接受B域MUA的邮件并传给C域MTA. 这很有意思——邮件服务器A的MTA既接收了外域MUA传来的邮件,又把收到的邮件投递到另一外域的邮箱。这种情况我们即称为邮件中继。通常,如果我们已经有了一台邮件服务器,其他服务器就可以通过这台邮件服务器进行中继发送而无需再额外搭建邮件服务了。

2, 配置和使用邮件中继服务器

我们仍以Mail-in-a-Box邮件服务器为例,讲解邮件中继服务器的使用。按照第一部分的操作步骤,我们假设您已经成功安装好了Mail-in-a-Box服务器 (称为A), 那么A已是现成可用的邮件中继服务器。在这里扮演中继角色的, 是A服务器上面的Postfix. 在A上新建一个合格的用户,比如test@example.net密码为pass, 下面我们配置另一台服务器B (主机名: xxx.example.net) 以期通过A进行邮件中继发送。

首先,我们在B服务器上安装postfix. 执行:

1
apt-get install postfix

需要注意的是,我们并不将B服务器上的postfix作为MTA使用,只是作为一个MUA, 因此我们在安装时需要选择Satellite System.

安装完毕后,需要手动配置Postfix. 新建文件/etc/postfix/credential, 内容为:

1
mail.example.com   test@example.net : pass

给该文件设权,执行:

1
chmod 600 /etc/postfix/credential

然后在文件/etc/postfix/main.cf尾部添加下面语句:

1
2
3
4
5
6
7
8
9
10
11

mydestination =

smtp_tls_security_level = verify

smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

smtp_sasl_auth_enable = yes

smtp_sasl_password_maps = hash:/etc/postfix/credential

smtp_sasl_tls_security_options =

在SSH中执行:

1
postmap /etc/postifx/credential && service postfix reload

然后我们配置SSL. 将A服务器的/home/user-data/ssl/ssl_certificate.pem拷贝至B服务器相同路径并复制到/usr/local/share/ca-certificates/ssl_certificate.crt, 执行

1
update-ca-certificates

这样,B服务器就会通过已安装好Mail-in-a-Box的A服务器发信了(你需要安装SMTP服务器比如Dovecot/Exim/Mailman或者使用系统mail/mailx等命令发信).

第三部分,邮件服务器对域名解析的要求

很多新手(甚至很多主机商本身)都不知道,一个邮件服务器对于域名解析的要求有多严苛。大部分人,只知道搭建域名邮箱需要添加MX记录。少部分人知道添加SRV记录。还有很多重要的DNS记录,比如Reverse DNS, DKIM, DNSSEC, TLSA等等,鲜为人知。殊不知,发送的邮件会被很多的邮箱直接标记为垃圾邮件,其重要原因就是没有设置好DNS解析。

这里,我简要介绍一下一个合格的域名邮箱对于域名解析的要求。

1, MX记录。

MX记录大家都知道,我这里也不再啰嗦。但必须要提及的一个重要常识是同域名的MX记录和CNAME记录一般不能共存。准确地说,是CNAME记录和其他所有类型记录 (DNSSEC除外) 一般不能共存。有部分CDN厂商还有很多傻逼国内主机商,他们的虚拟主机不提供IP绑定而是让你把你的域名CNAME到一个子域名上面,这时如果你再用同样的域名设置MX记录用企业邮箱,那么你的邮箱收信将会经常掉信。这是CNAME记录的解析方式所决定的。因此,尽管部分DNS解析服务提供商支持同域名CNAME与MX解析,请不要这么做,否则你的MX记录将可能无效。

2, Reverse DNS

国人如果没有用过国外主机商的产品,基本不会知道这是什么东西。因为所有国内的主机商都不支持Reverse DNS. Reverse DNS将IP地址解析到邮箱服务器主hostname上,旨在提供一种途径,使得收件方能够追溯邮件的来路。若rDNS未设置,将被诸多邮件系统标记为可疑。正确设置rDNS可以将SpamAssassin的Spam Score评估降低0.3分左右。

3, DKIM, DMARC, SPF

同样的,国内的傻逼企业邮箱服务提供商不会告诉你怎样设置DKIM和DMARC的。这些DNS记录旨在提供一种途径,使得收件方能够知道是“你”或者说是从“这台服务器”发送了这封邮件,而不是由其他人冒用你的地址发送的邮件。正确设置这些记录可以将SpamAssassin评估分降低0.5~1.0左右。

4, DNSSEC

说多了都是泪。有次我打电话给万网(中国最大的虚拟主机和互联网域名服务提供商)的客服问能不能设置com域名的DNSSEC记录。结果客服一脸懵逼:“那是什么?”忍不住再骂一遍国产主机和域名服务商都是傻逼。DNSSEC记录需要在域名注册商处设置,它提供了额外的验证途径,以提高来自该域邮件的可信度。

综上,本文介绍了使用技术成熟的MIAB套件搭建私有邮件服务器和邮件中继服务器的方法、邮件服务器的工作原理及其对域名DNS记录的要求。