首页 > 代码库 > smtp服务器搭建(实现本地通讯)
smtp服务器搭建(实现本地通讯)
1安装postfix
1)下载安装包
sudo apt-get install postfix
2)配置服务器
选择确定。
选择IneternetSite(通过SMTP发送和接收邮件),然后确定
输入邮件后缀名,比如如果你想设置你的邮箱地址为root@example.com,则此处系统邮件名称填写为example.com
3)安装syslog
进入到/var/log/
cd /var/log/
查看是否安装syslog
ls mail*
如果有mail.err、mail.warn、mail.info、mail.log等文件,说明你的系统中已经安装上了syslog,无需再安装了。
否则安装syslog:
sudo apt-get install rsyslog
另外,postfix也使用了第三方模块cyrus-sasl实现smtp的验证服务,需要的时候可以参考别的文档。
2测试
2.1 Mailutils方式
1)下载mailutils
sudo apt-get install mailutils
2)发送邮件
echo “邮件内容” | mail 收件人邮箱
eg:echo “hello”|mail root@example.com
3)查看发送结果
进入到/var/mail目录下,用ls命令查看是否有新建的文件,比如root或其他登录用户名相同的文件夹。如果有,用vi等查看命令打开就可以看到刚才发送的邮件。
如果没有,发送/usr/lib/sendmail –bp指令,若为
Mail queue is empty
说明邮件已经发送成功。否则,可以看到阻塞的邮件及原因。
如果邮件发送成功但是没有接收到,请查看/etc/postfix/main.cf文件是否正确。
2.2 Telnet方式
1)连接到本地
telnet localhost 25
如果正常,您将会看到以下来自 IMC 的类似响应:
220 xxx ESMTP Postfix
2)键入以下命令开始进行通讯:
HELO : ***@***
例如HELO :root@example.com。其中,HELO和冒号之间一定要有空格。您应看到如下类似响应:
250 XXX
键入以下命令来通知 IMC 邮件源于何处:
MAIL FROM: ***@***
例如MAIL FROM:root@example.com。您应得到如下类似响应:
250 2.1.0 OK
键入以下命令来通知 IMC 邮件的目标地址。
RCPT TO: ***@***
例如RCPT TO:root@example.com。您应看到如下类似响应:
250 2.1.5 OK
键入以下命令以通知 IMC 您已准备好发送数据:
DATA
您应看到如下类似响应:
354 End data with <CR><LF>.<CR><LF>
键入以下命令以添加主题行:
Subject: test message
然后按两次 Enter 键。该命令看不到任何响应。
键入以下命令来添加邮件正文:
This is a test message
您将看不到来自该命令的响应。
正文输入完毕回车换行,然后在空行处键入句号“.”,然后按 ENTER 键。您应看到如下类似响应:
250 2.0.0 Ok: queued as E4618143EE8
可以通过quit指令退出。没有问题的话,你可以在log终端中看到postfix发送邮件的log了。查看结果可以参照mailutils中的查看方法
注:
1、通过telnet,可测试邮件系统是否发送成功,在测试期间,通过
tail -f /var/log/mail*
监控邮件发送log,可明确知道发送的问题在哪。
3 postfix配置说明
postfix最重要的配置文件位于 /etc/postfix/main.cf ,在配置完成后,可通过
sudo /etc/init.d/postfix reload
重新加载配置文件生效。
postfix几个比较重要的配置:
- myorigin
myorigin参数指明发件人所在的域名。如果你的用户的邮件地址为user@domain.com,则该参数指定@后面的域名。缺省 地,postfix使用本地主机名作为myorigin,但是建议你最好使用你的域名,因为这样更具有可读性。比如:安装postfix的主机为 mail.domain.com则我们可以这样指定myorigin:
myorigin = domain.com
当然我们也可以引用其他参数,如:
myorigin = $mydomain
- mydestination
mydestination参数指定postfix接收邮件时收件人的域名,换句话说,也就是你的postfix系统要接收什么样的邮件。比如:你的用户的邮件地址为user@domain.com, 也就是你的域为
domain.com, 则你就需要接收所有收件人为user_name@domain.com的邮件。与myorigin一样,缺省地,postfix使用本地主机名作为mydestination。如:
mydestination = $mydomain
mydestination = domain.com
- notify_classes
在postfix系统中,必须指定一个postfix系统管理员的别名指向一个用户,只有这样,在用户遇到问题时才有报告的对象,postfix也 才能将系统的问题报告给管理员。notify_classes参数就是用来指定向postfix管理员报告错误时的信息级别。共有以下几种级别:
- bounce:将不可以投递的邮件的拷贝发送给postfix管理员。出于个人隐私的缘故,该邮件的拷贝不包含信头。
- 2bounce:将两次不可投递的邮件拷贝发送给postfix管理员。
- delay:将邮件的投递延迟信息发送给管理员,仅仅包含信头。
- policy:将由于UCE规则限制而被拒绝的用户请求发送给postfix管理员,包含整个SMTP会话的内容。
- protocol:将协议的错误信息或用户企图执行不支持的命令的记录发送给postfix管理员。同样包含整个SMTP会话的内容。
- resource:将由于资源错误而不可投递的错误信息发送给postfix管理员,比如:队列文件写错误等等。
- software:将由于软件错误而导致不可投递的错误信息发送给postfix管理员。
缺省值为:
notify_classes = resource, software
- myhostname
myhostname 参数指定运行postfix邮件系统的主机的主机名。缺省地,该值被设定为本地机器名。你也可以指定该值,需要注意的是,要指定完整的主机名。如:
myhostname = mail.domain.com
- mydomain
mydomain参数指定你的域名,缺省地,postfix将myhostname的第一部分删除而作为mydomain的值。你也可以自己指定该值,如:
mydomain = domain.com
- mynetworks
mynetworks 参数指定你所在的网络的网络地址,postfix系统根据其值来区别用户是远程的还是本地的,如果是本地网络用户则允许其访问。你可以用标准的A、B、C类网络地址,也可以用CIDR(无类域间路由)地址来表示,如:
192.168.1.0/24
192.168.1.0/26
- inet_interfaces
inet_interfaces 参数指定postfix系统监听的网络接口。缺省地,postfix监听
所有的网络接口。如果你的postfix运行在一个虚拟的ip地址上,则必须指定其监听的地址。如:
inet_interfaces = all
inet_interface = 192.168.1.1