第九章 Nginx服务器的邮件服务【笔记】

涉及内容:

  • 邮件服务基本知识
  • Nginx配置邮件服务的指令
  • 邮件服务的配置实例

9.1、邮件服务

一套完整的邮件服务主要有三类主要部件构成:分别是用户代理、邮件服务器和用于实现传输的简单邮件传送协议(Simple Mail Transfer Protocol SMTP)

用户代理: 相当于电子邮件的信箱(邮箱)、主要用于阅读、回复、转发、保存和编写邮件消息

邮件服务器:实现了部分邮件数据存储和维护功能,相当于用户邮箱的载体。

简单邮件传送协议SMTP 是右键服务器在提供服务的过程中应该遵守的规范,它定义了如何实现把邮件消息从发信人的邮件服务器传送收信人的邮件服务器。

有两种重要协议:

邮局协议(Post Office Protocol POP) 规定如何实现将PC接入到网络中的邮件服务器和下载邮件的协议。目前使用第三版本,因此通常称为POP3

协议

交互式邮件存取协议(Internet Mail Access Protocol IMAP) : I它与POP3不同的是,在于邮件服务器上右键不会在用户下载之后被删除。在本地对邮件进行任何操作也都会反馈到邮件服务器。

9.2、Nginx邮件服务器的配置的12个指令

相关模块: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参数

1、listen指令

该指令用于配置邮件服务器服务监听的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块中配置

2、server_name指令

该指令用于设置每个server块构成的虚拟主机配置的域名

server_name name;

name 为配置的服务器域名

如果mail块中配置了多个虚拟主机,该指令只能在server块中配置 如果只有一个虚拟主机,该指令可以在mail块中配置

3、protocol指令

该指令用于配置当前虚拟机主机支持的协议

protocol imap | pop3 | smtp;

该指令只能在server块中配置

4、so_keepalive指令

该指令用于配置后端代理服务器是否启动“TCP keepalive” 模式来处理Nginx邮件服务器转发的客户端连接

so_keepalive on | off

默认情况下, 该指令配置为off

该指令可以在mail块或者server块中配置

5、配置POP3协议

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;

6、配置IMAP协议

用于配置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 ...;

8、auth_http指令

该指令用于配置Nginx提供邮件服务时的用于HTTP认证的服务地址

auth_http URL;

URL为HTTP认证服务器的地址
9、auth_http_header指令

通过该指令可以Nginx服务器向HTTP认证服务器发起认证请求时,向请求头添加指定的头域

auth_http_header X-Auth-Key "secret_string";

该指令可以在mail块或者server块中进行配置

10.auth_http_timeout指令

该指令用于配置Nginx服务器向HTTP认证服务器发起认证请求等待响应的超时时间。

auth_http_timeout time;

time为超时时间 默认设置为60s 一般该时间设置不超过75s;

11、proxy_buffer指令

该指令用于配置了后端代理服务器(组)的情况,用于配置Nginx服务器代理缓存的大小。一般为平台的一个内存页大小

proxy_buffer 4k | 8k;

12、proxy_pass_error_message指令

该指令用于配置了后端代理服务器(组)的情况,用来配置是否将后端服务器上邮件服务认证过程中产生的错误发送给客户端

proxy_pass_error_message on | off;    (默认是off)

9.3、Nginx邮件服务配置实例

...
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;
	}
}

你可能感兴趣的:(nginx,pop,smtp,电子邮件,邮件服务器,nginx)