postfix

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了postfix相关的知识,希望对你有一定的参考价值。

   

#################postfix###################

1.postfix提供smtp协议用来投递邮件

默认端口 25

默认发布目录 /var/log/maillog          ##服务日志

mail root @.....      发邮件

主题:   

内容....

.

mailq                  ###查看邮件队列

postqueue -f           ###重新处理邮件队列

 

默认情况下邮件端口只在127.0.0.1上开启

 

2.

配置

vim /etc/postfix/main.cf

76 myhostname = westos-mail.westos.com   ###25端口开启的网络借口

83 mydomain = westos.com                 ###指定mta的域名

99 myorigin = westos.com                 ###制定邮件来源结尾(@后面的字符内容)

116 inet_interfaces = all                ###25端口开启的网络借口

164 mydestination = $myhostname, $mydomain, localhost     ###接受邮件字符的指定

systemctl restart postfix.service

systemctl stop firewalld

 

3.邮件别名

[[email protected] named]# vim /etc/aliases

    97 admin:          root                          ##邮件别名

    98 moreuser:       :include:/etc/postfix/moreuser    ##邮件群发

 

[[email protected] ~]# vim /etc/postfix/moreuser

   user1

   user2

[[email protected] ~]# systemctl restart postfix.service

mail -u 用户名

postsuper -d  删除排队邮件

postqueue -f  重新发送排队的邮件

postalias /etc/aliases

 

 

 

4.通过远程主机发送邮件

[[email protected] Desktop]$ yum install -y telnet

[[email protected] Desktop]# telnet 172.25.254.101 25

Trying 172.25.254.101...

Connected to 172.25.254.101.

Escape character is ‘^]‘.

220 westos-mail.westos.com ESMTP Postfix

ehlo hello

250-westos-mail.westos.com

250-PIPELINING

250-SIZE 10240000

250-VRFY

250-ETRN

250-ENHANCEDSTATUSCODES

250-8BITMIME

250 DSN

mail from:[email protected]

250 2.1.0 Ok

rcpt to:[email protected]

250 2.1.5 Ok

data

354 End data with <CR><LF>.<CR><LF>

qwdq

qwdeq

qeq

.

测试

[[email protected] ~]# mail

Heirloom Mail version 12.5 7/5/10.  Type ? for help.

"/var/spool/mail/root": 2 messages 1 new 2 unread

 U  1 root                  Tue May 23 09:45  25/739   "qq"

>N  2 [email protected]       Tue May 23 09:53  15/494   

& 2

Message  2:

From [email protected]  Tue May 23 09:53:48 2017

Return-Path: <[email protected]>

X-Original-To: [email protected]

Delivered-To: [email protected]

Status: R

 

qwdq

qwdeq

qeq

 

5.邮件客户端的访问控制

mta上

postconf -e "smtpd_client_restrictions = check_client_access hash:/etc/postfix/access"

[email protected] named]# vim /etc/postfix/main.cf

 681 smtpd_client_restrictions = check_client_access hash:/etc/postfix/acce    ss

[email protected] named]# vim /etc/postfix/access

  476 172.25.254.95 REJECT

[[email protected] named]# postmap /etc/postfix/access

[[email protected] named]# ls

data     named.ca     named.localhost  qq.com.zone  westos.com.zone

dynamic  named.empty  named.loopback   slaves

[[email protected] named]# cd /etc/postfix

[[email protected] postfix]# ls

access     canonical  header_checks  master.cf  transport

access.db  generic    main.cf        relocated  virtual

测试

[[email protected] Desktop]# telnet 172.25.254.195 25

Trying 172.25.254.195...

Connected to 172.25.254.195.

Escape character is ‘^]‘.

220 westos-mail.westos.com ESMTP Postfix

mail from:[email protected]           

250 2.1.0 Ok

rcpt to:[email protected]

554 5.7.1 <unknown[172.25.254.95]>: Client host rejected: Access denied

##限制用户发送

[[email protected] postfix]# postconf -e "smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/sender"

[[email protected] postfix]# vim /etc/postfix/main.cf

  681 smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/sender

[[email protected] postfix]# vim /etc/postfix/sender

   [email protected]    REJECT

[[email protected] postfix]# postmap /etc/postfix/sender

[[email protected] postfix]# ls

access     canonical  header_checks  master.cf  sender     transport

access.db  generic    main.cf        relocated  sender.db  virtual

[[email protected] postfix]# systemctl restart postfix.service

测试

[[email protected] Desktop]# telnet 172.25.254.101 25

Trying 172.25.254.101...

Connected to 172.25.254.101.

Escape character is ‘^]‘.

220 westos-mail.westos.com ESMTP Postfix

mail from:[email protected]

250 2.1.0 Ok

rcpt to:[email protected]

554 5.7.1 <[email protected]>: Sender address rejected: Access denied

##限制用户接收

[root[email protected] postfix]# postconf -e "smtpd_sender_restrictions = check_recipient_access hash:/etc/postfix/recip"

[[email protected] postfix]# vim /etc/postfix/main.cf

  smtpd_sender_restrictions = check_recipient_access hash:/etc/postfix/recip

[[email protected] postfix]# vim /etc/postfix/recip

  [email protected]    REJECT

[[email protected] postfix]# postmap /etc/postfix/recip

[[email protected] postfix]# systemctl restart postfix.service

测试

[[email protected] Desktop]# telnet 172.25.254.101 25

Trying 172.25.254.101...

Connected to 172.25.254.101.

Escape character is ‘^]‘.

220 westos-mail.westos.com ESMTP Postfix

mail from:[email protected]

250 2.1.0 Ok

rcpt to:[email protected]

554 5.7.1 <[email protected]>: Recipient address rejected: Access denied

#出站地址伪装

做好dns解析

[[email protected] named]#  postconf -e "smtp_generic_maps = hash:/etc/postfix/generic"

[[email protected] named]# vim /etc/postfix/main.cf

  smtp_generic_maps = hash:/etc/postfix/generic

[[email protected] named]#  vim /etc/postfix/generic

  [email protected]           [email protected]

[[email protected] named]# postmap /etc/postfix/generic

[[email protected] named]# cd /etc/postfix/

[[email protected] postfix]# ls

access     canonical  generic.db     main.cf    recip     relocated  sender.db  virtual

access.db  generic    header_checks  master.cf  recip.db  sender     transport

[[email protected] postfix]# id westos

uid=1001(westos) gid=1001(westos) groups=1001(westos)

测试

From [email protected]  Tue May 23 11:55:08 2017

Return-Path: <[email protected]>

X-Original-To: [email protected]

Delivered-To: [email protected]

Date: Tue, 23 May 2017 11:55:08 -0400

To: [email protected]

Subject: qdq

User-Agent: Heirloom mailx 12.5 7/5/10

Content-Type: text/plain; charset=us-ascii

From: [email protected]

Status: R

##入站地址转换

做好dns解析

[[email protected] postfix]# postconf -e "virtual_alias_maps = hash:/etc/postfix/virtual"

[[email protected] postfix]# vim /etc/postfix/virtual

   295 [email protected]         [email protected]

[[email protected] postfix]# vim /etc/postfix/main.cf

  virtual_alias_maps = hash:/etc/postfix/virtual

[[email protected] postfix]# postmap /etc/postfix/virtual

[[email protected] postfix]# systemctl restart postfix.service

[[email protected] postfix]# mail [email protected]

Subject: qwdq

qwdq

dq

wdq

.

EOT

测试

[[email protected] postfix]# mail -u westos

Heirloom Mail version 12.5 7/5/10.  Type ? for help.

"/var/mail/westos": 1 message 1 new

>N  1 root                  Tue May 23 12:10  20/560   "qwdq"

& 1

Message  1:

From [email protected]  Tue May 23 12:10:01 2017

Return-Path: <[email protected]>

X-Original-To: [email protected]

Delivered-To: [email protected]

Date: Tue, 23 May 2017 12:10:00 -0400

To: [email protected]

Subject: qwdq

User-Agent: Heirloom mailx 12.5 7/5/10

Content-Type: text/plain; charset=us-ascii

From: [email protected] (root)

Status: R

######################################

###########dovecot####################

1.dovecot用来提供收件协议

pop3            110

imap            143

imaps           993    

pop3s           995

给定用户名称,用户密码,dovecot程序代替我们去看这个用户的邮件文件

 

2.yum intsall -y dovecot

3.

[[email protected] named]# vim /etc/dovecot/dovecot.conf

 24 protocols = imap pop3 lmtp

 48 login_trusted_networks = 0.0.0.0/0

 49 disable_plaintext_auth = no

 

[[email protected] named]# vim /etc/dovecot/conf.d/10-mail.conf

   30 mail_location = mbox:~/mail:INBOX=/var/mail/%u

[[email protected] ~]# su westos

[[email protected] root]$ cd ~

[[email protected] ~]$ mkdir /home/westos/mail/.imap -p

[[email protected] ~]$ touch /home/westos/mail/.imap/INBOX

[[email protected] westos]# passwd westos

Changing password for user westos.

New password:

BAD PASSWORD: The password is a palindrome

Retype new password:

passwd: all authentication tokens updated successfully.

[[email protected] westos]# systemctl restart dovecot.service

[[email protected] ~]# mkdir /etc/skel/mail/.imap -p

[[email protected] ~]# touch /etc/skel/mail/.imap/INBOX

[[email protected] ~]# useradd zhang

[[email protected] ~]# passwd zhang

Changing password for user zhang.

New password:

BAD PASSWORD: The password is a palindrome

Retype new password:

passwd: all authentication tokens updated successfully.

[[email protected] ~]# systemctl restart dovecot.service

测试

主机安装mutt

[[email protected] Desktop]# mutt -f pop://[email protected]

安装雷鸟

用真机

rpm -ivh thunderbird-31.2.0-1.el7.x86_64.rpm

接下来进行以下操作

 技术分享

 

进去之后进行登陆并且给[email protected]恢复邮件

测试

[[email protected] ~]# mail

Heirloom Mail version 12.5 7/5/10.  Type ? for help.

"/var/spool/mail/root": 2 messages 1 new

    1 root                  Tue May 23 11:22  21/572   "qwew"

>N  2 [email protected]     Wed May 24 11:52  32/940   "Re:123"

& 2

Message  2:

From [email protected]  Wed May 24 11:52:52 2017

Return-Path: <[email protected]>

X-Original-To: [email protected]

Delivered-To: [email protected]

Date: Wed, 24 May 2017 23:52:52 +0800

From: "[email protected]" <[email protected]>

User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/

31.2.0

To: root <[email protected]>

Subject: Re:123

Content-Type: text/plain; charset=UTF-8; format=flowed

Status: R

 

 

################postfix+mariadb##############

 

[[email protected] ~]# yum install -y httpd php php-mysql mariadb-server

[[email protected] ~]# systemctl start mariadb

[[email protected] ~]# vim /etc/my.cnf

[[email protected] ~]# systemctl restart postfix.service

[[email protected] ~]# systemctl restart mariadb.service

[[email protected] ~]# mysql_secure_installation

[[email protected] ~]# cd /var/www/html

[[email protected] html]# ls

phpMyAdmin-3.4.0-all-languages.tar.bz2

[[email protected] html]# tar jxf phpMyAdmin-3.4.0-all-languages.tar.bz2

[[email protected] html]# rm -fr *.bz2

[[email protected] html]# ls

phpMyAdmin-3.4.0-all-languages

[[email protected] html]# mv phpMyAdmin-3.4.0-all-languages/ myadmin

[[email protected] html]# ls

myadmin

[[email protected] html]# cd myadmin

[[email protected] myadmin]# cp config.sample.inc.php  config.inc.php

[[email protected] myadmin]# vim config.inc.php

[[email protected] myadmin]# systemctl restart httpd

[[email protected] myadmin]# mysql -uroot -p

Enter password:

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 32

Server version: 5.5.35-MariaDB MariaDB Server

 

Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.

 

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

 

MariaDB [(none)]> create user [email protected] identified by ‘postuser‘;

Query OK, 0 rows affected (0.00 sec)

 

MariaDB [(none)]> grant select,update,insert on email.* to [email protected];

Query OK, 0 rows affected (0.00 sec)

 

MariaDB [(none)]> quit

Bye

[[email protected] myadmin]# mysql -upostuser -p

Enter password:

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 33

Server version: 5.5.35-MariaDB MariaDB Server

 

Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.

 

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

 

MariaDB [(none)]> select * from email.emailuser;

+-------------+----------+---------+-------------------+

| username    | password | domain  | maildir           |

+-------------+----------+---------+-------------------+

| [email protected] | lee      | lee.com | /mnt/lee.com/lee/ |

+-------------+----------+---------+-------------------+

[[email protected] ~]# cd /etc/postfix/

[[email protected] postfix]# vim mailuser.cf            ####用户名查询

 1 hosts = localhost                 ##数据库所在的主机

  2 user = postuser                  ##登陆数据库的用户

  3 password = postuser              ##登陆数据库的密码

  4 dbname = email                   ##postfix要查询的名称

  5 table = emailuser                ##postfix要查询表的名称

  6 select_field = username          ##postfix要查询的字段

  7 where_field = username           ##用户给定postfix的查询条件

[[email protected] postfix]#  postmap -q "[email protected]" mysql:/etc/postfix/mailuser.cf

[email protected]

[[email protected] postfix]# vim maildomain.cf       ####用户域名查询

 1 hosts = localhost

  2 user = postuser

  3 password = postuser

  4 dbname = email

  5 table = emailuser

  6 select_field = domain

  7 where_field = domain

[[email protected] postfix]#  postmap -q "lee.com" mysql:/etc/postfix/maildomain.cf

lee.com

[[email protected] postfix]# vim mailbox.cf       ####用户邮箱位置查询

 1 hosts = localhost

  2 user = postuser

  3 password = postuser

  4 dbname = email

  5 table = emailuser

  6 select_field = maildir

  7 where_field = username

 

[[email protected] postfix]#  postmap -q "[email protected]" mysql:/etc/postfix/mailbox.cf

/mnt/lee.com/lee/

 附图

技术分享

技术分享

技术分享

技术分享

技术分享


####配置postfix

[[email protected] ~]# groupadd -g 666 vmail

[[email protected] ~]# id vmail

uid=666(vmail) gid=666(vmail) groups=666(vmail)

[[email protected] ~]# postconf -d | grep virtual

[[email protected] ~]# postconf -e "virtual_mailbox_base = /home/vmail"

[[email protected] ~]# postconf -e "virtual_uid_maps = static:666"

[[email protected] ~]# postconf -e "virtual_gid_maps = static:666"

[[email protected] ~]# postconf -e "virtual_alias_maps = mysql:/etc/postfix/mailuser.cf"

[[email protected] ~]# postconf -e "virtual_mailbox_maps = mysql:/etc/postfix/mailbox.cf"

[[email protected] ~]# postconf -e "virtual_mailbox_domain = mysql:/etc/postfi/maildomain.cf"

systemctl restart postfix.service

测试

[email protected]的邮件在/home/vmail/lee.com/new/里面可以找到


附图

技术分享

技术分享



以上是关于postfix的主要内容,如果未能解决你的问题,请参考以下文章

Centos 下搭建postfix和Dovecot的邮箱服务系统