postfix别名、权限设置,postfix+mysql

1 postfix发邮件 mta,25端口
dns中有邮件解析记录,故可以发送给其他人,同一个域中发邮件,不需要解析,windows使用outlook接受邮件

用于收发Mail的程序一般统称为邮件用户代理MUA(Mail User Agent)。将来自MUA的信件转发给指定的用户的程序一般被称之为因特网邮件传送代理MTA(Mail Transfer Agent)。在linux/Unix系统上,最著名的MTA有sendamil、qmail(谷歌)等程序。当用户从 MUA 中发送一份邮件时,该邮件会被送到 MTA或者通过POP3、IMAP协议将邮件从MTA取到本机。,然后 MTA 再把这份邮件发送给一系列 MTA,直到它到达最终发送目标为止。常见的MUA有Foxmail,Outlook Express等邮件客户端程序
发件:sendmail(不安全)  
postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件

[root@server10 postfix]# echo > /var/spool/mail/root //清空root用户的邮件^C
[root@server46 postfix]# alternatives --display mta // 显示本地的mta
mta - status is auto.
link currently points to /usr/sbin/sendmail.postfix
【root@server46 postfix]# alternatives --config mta//选择自己所需的mta
[root@server46 postfix]# netstat -antlpe|grep master //查看邮件的端口
tcp 0 0 0.0.0.0:25 //25端口发信 myhostname = server46.example.com
mydomain = example.com
myorigin = $mydomain //选择以域名发送,若给126等其他邮箱发送,需选择myorigin =$myhostname
inet_interfaces = all //监听所有主机的25端口
mydestination = $myhostname, $mydomain, localhost
[root@localhost Desktop]# telnet 192.168.0.146 25//远程登录成功,表示server46主机正常
ehlo hello //打招呼
mail from: [email protected] //发件人
rcpt to: [email protected] //收件人
data

[root@server46 postfix]# rpm -ql postfix//各参数意义如下:
postfix有四种不同的邮件队列,并且由队列管理进程统一进行管理:
1. maildrop:本地邮件放置在maildrop中,同时也被拷贝到incoming中。
2. incoming:放置正在到达或队列管理进程尚未发现的邮件。
3. active:放置队列管理进程已经打开了并正准备投递的邮件,该队列有长度的限制。
4. defer:放置不能被投递的邮件。
队列管理进程仅仅在内存中保留active队列,并且对该队列的长度进行限制,这样做的目的是为了避免进程运行内存超过系统的可用内存。
/var/spool/mail发送成功的邮件
postfixqueue -f失败的重新发送

2.别名与群发
别名:指的是root的别名,当给root的别名发邮件时,收信人收到的发件人显示的是root
[root@server46 postfix]# vim /etc/aliases
admin: :include:/etc/users
[root@server46 postfix]# cat /etc/users
root
westos
cun
测试:重启postfix->mail admin

3.不允许某人收发:
不允许发:即不允许发信到我的mta上
每次更改完都要postconf access/sender/receive
不允许某个主机进行远程发送:
smtpd_client_restrictions = check_client_access hash:/etc/postfix/access
[root@server46 postfix]# cat access
192.168.0.121 REJECT //不允许121主机发送
[root@localhost postfix]# telnet 192.168.0.146 25 //发送一封邮件,会报错,以下测试类同(localhost为121主机)

不允许用户发送:
postconf -d|grep smtpd_sender
postconf -e "smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/sender"
[root@server46 postfix]# cat sender
[email protected] REJECT //不允许这个用户发送邮件
[root@server46 postfix]# postmap sender //更改生效
[root@server46 postfix]# /etc/init.d/postfix restart
测试:[root@localhost postfix]# telnet 192.168.0.146 25 //发送一封邮件,回报错,以下测试类同
不允许用户接收:
[root@server46 postfix]# postconf -e "smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/receive, permit_mynetworks, reject_unauth_destination"
[root@server46 postfix]# cat receive
[email protected] REJECT

4.postfix+mysql
reinstall postfix
mysqladmin:
yum install mysql mysql-server -y
yum install php php-mysql -y
下载phpMyadmin的软件包,并发布
cp -p config.sample.inc.php config.inc.php
vim config.inc.php
重起httpd
测试:192.168.0.146/mysqladmin进入可管理数据库
192.168.0.146/mysqladmin->建立westos数据库及postfix表->插入用户信息 ([email protected]   cun  westos.com   /westos.com/cun/ 注意:用户名与域不能与本地的与重合,否则,如本地的域是example.com,当mail [email protected]时,会发送到本地的cun用户)
[root@server46 postfix]# vim main.cf // 编辑postfix的配置文件
[root@server10 postfix]# useradd -s /sbin/nologin vmail -u 800
use mysql->grant all on westos.postfix to postfix@localhost identified by 'postfix';//给postfix用户授权,只有该用户能够操作库westos
postconf -d | grep virtual
virtual_mailbox_base = /home/vmail指定虚拟邮箱位置
virtual_gid_maps = static:800
virtual_uid_maps = static:800
virtual_alias_maps = mysql:/etc/postfix/userfile.cf //链接数据库
virtual_mailbox_domains = mysql:/etc/postfix/domainfile.cf
virtual_mailbox_maps = mysql:/etc/postfix/maildirfile.cf
[root@server46 postfix]# cat userfile.cf
hosts = localhost
user = postfix
password = postfix
dbname = email
table = postfix
select_field = username //寻找的域
where_field = username //根据用户名来查找
[root@server21 postfix]# cat domainfile.cf
hosts = localhost
user = postfix
password = postfix
dbname = email
table = postfix
select_field = domain //寻找的域
where_field = domain //根据域名查找
[root@server46 postfix]# cat maildirfile.cf
hosts = localhost
user = postfix
password = postfix
dbname = email
table = postfix
select_field = maildir //寻找的域
where_field = username //根据用户名查找目录
测试:
[root@server46 postfix]# postmap -q "[email protected]" mysql:/etc/postfix/userfile.cf
[email protected]
[root@server46 postfix]# postmap -q "westos.com" mysql:/etc/postfix/domainfile.cf
westos.com
[root@server46 postfix]# postmap -q "[email protected]" mysql:/etc/postfix/maildirfile.cf
/westos.com/cun/
[root@server46 postfix]# mail [email protected]
[root@server46 vmail]# ls
westos.com //成功

你可能感兴趣的:(linux,postfix)