涉及内容:
一套完整的邮件服务主要有三类主要部件构成:分别是用户代理、邮件服务器和用于实现传输的简单邮件传送协议(Simple Mail Transfer Protocol SMTP)
用户代理: 相当于电子邮件的信箱(邮箱)、主要用于阅读、回复、转发、保存和编写邮件消息
邮件服务器:实现了部分邮件数据存储和维护功能,相当于用户邮箱的载体。
简单邮件传送协议SMTP 是右键服务器在提供服务的过程中应该遵守的规范,它定义了如何实现把邮件消息从发信人的邮件服务器传送收信人的邮件服务器。
有两种重要协议:
邮局协议(Post Office Protocol POP) 规定如何实现将PC接入到网络中的邮件服务器和下载邮件的协议。目前使用第三版本,因此通常称为POP3
协议
交互式邮件存取协议(Internet Mail Access Protocol IMAP) : I它与POP3不同的是,在于邮件服务器上右键不会在用户下载之后被删除。在本地对邮件进行任何操作也都会反馈到邮件服务器。
相关模块:ngx_mail_core_module、ngx_mail_pop3_module、ngx_mail_imap_module、ngx_mail_smtp_module、ngx_mail_auth_http_module、ngx_mail_proxy_module和ngx_mail_ssl_module 等。注意不会默认安装,需要配置 --with-mail参数
该指令用于配置邮件服务器服务监听的IP地址和端口
listen address:port;
address 为邮件服务器监听的IP地址,支持通配符“*”、主机名称。
port 为邮件服务器监听的端口
listen 127.0.0.1:110;
listen *:110;
listen 110; #与*:110配置含义相同
listen localhost:110;
支持IPv6地址
listen [::1]:120;
listen [::]:120;
支持UNIX-domain sockets
listen unix:/var/run/nginx.sock;
该指令只能在server块中配置
该指令用于设置每个server块构成的虚拟主机配置的域名
server_name name;
name 为配置的服务器域名
如果mail块中配置了多个虚拟主机,该指令只能在server块中配置 如果只有一个虚拟主机,该指令可以在mail块中配置
该指令用于配置当前虚拟机主机支持的协议
protocol imap | pop3 | smtp;
该指令只能在server块中配置
该指令用于配置后端代理服务器是否启动“TCP keepalive” 模式来处理Nginx邮件服务器转发的客户端连接
so_keepalive on | off
默认情况下, 该指令配置为off
该指令可以在mail块或者server块中配置
pop3_auth 指令用于配置POP3认证用户的方式
pop3_auth method ...; (该指令可以在mail 块中,或者server块中配置)
method支持以下配置
plain 使用USER/PASS、AUTH PLAIN 、 AUTH LOGIN方式认证。 这是Nginx默认设置
apop 使用APOP方式认证,该方法需要客户端提供的密码是非加密密码
cram-md5 ,使用AUTH CRAM-MD5方法认证。该方法也需要客户端提供的密码是非加密密码
pop3_capabilities extension ...;
extension为要加入POP3协议扩展。
默认值配置
pop3_capabilities TOP USER UIDL;
用于配置IMAP协议的指令包含imap_auth指令、imap_capabilities指令和imap_client_buffer指令、
imap_auth 指令 用于配置POP3认证用户的方式
imap_auth method ...; (该指令可以在mail块中或server块中配置)
methd支持以下配置
plain 使用AUTH=PLAIN方法认证。仍然是Nginx邮件服务提供IMAP协议的默认设置。
login 使用AUTH=LOGIN方法进行认证
cram-md5 使用 AUTH CRAM-MD5 方法认证,该方法也需要客户端提供的密码是非加密密码。
配置IMAP协议扩展功能
imap_capabilities extension ...;
该指令用于配置Nginx提供邮件服务时的用于HTTP认证的服务地址
auth_http URL;
通过该指令可以Nginx服务器向HTTP认证服务器发起认证请求时,向请求头添加指定的头域
auth_http_header X-Auth-Key "secret_string";
该指令可以在mail块或者server块中进行配置
该指令用于配置Nginx服务器向HTTP认证服务器发起认证请求等待响应的超时时间。
auth_http_timeout time;
time为超时时间 默认设置为60s 一般该时间设置不超过75s;
该指令用于配置了后端代理服务器(组)的情况,用于配置Nginx服务器代理缓存的大小。一般为平台的一个内存页大小
proxy_buffer 4k | 8k;
该指令用于配置了后端代理服务器(组)的情况,用来配置是否将后端服务器上邮件服务认证过程中产生的错误发送给客户端
proxy_pass_error_message on | off; (默认是off)
...
mail {
server_name mail.myweb.name;
auth_http mail.postfix.cn:80/auth.php; #配置了HTTP认证地址
imap_capabilities IMAP4rev1 UIDPLUS IDLE LITERAL+ QUOTA;
pop3_auth plain apop cram-md5;
pop3_capabilities LAST TOP USER PIPELINING UIDL;
smtp_auth login plain cram-md5;
smtp_capabilities "SIZE 10485760" ENHANCESTATUSCODES 8BITMIME DSN;
xclient off;
server{
listen 25;
protocol smtp;
}
server{
listen 110;
protocol pop3;
proxy_pass_error_message on;
}
server {
listen 143;
protocol imap;
}
}