熟悉postfix中的一些命令,对于今后的维护是很必要的。接下来会分析其中一些重要的配置文件和相关命令.

一、总体说明

引用

/etc/postfix/main.cf

这是postfix的主配置文件,几乎所有的配置都在这里设定。设定完毕后,需要用reload或restart重新读取配置信息。(涉及网络的配置,需要使用restart)

引用

/etc/postfix/master.cf

这个是postfix子程序的运行状态设置,例如是否使用chroot等。

引用

/etc/postfix/access

类似黑白名单的作用,设置完毕后,需要在main.cf中激活,并使用postmap生成相关的数据库。

引用

/etc/aliases

别名的设置目录,同样,需要在main.cf中激活,并使用postalias生成相关数据库。

二、main.cf文件

该文件的配置比较规范,文件中也带了很详细的帮助说明。其主要包括几部分:

1、“#”号开头,表示改行是注释;

2、可以使用下面的形式给变量定义:

引用

变量 = 值

请注意等号两边需要留一空格。并且变量最好符合Bash的规范。

3、可以使用“$变量”来引用该变量的值;

例如 myorigin = $myhostname,会等于 myorigin = linuxfly.org;

4、如果变量使用两个以上的数据,可以用空格符或逗号来分隔,设置跨行也可以;

例如:

引用

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

也可以写为:

引用

mydestination = $myhostname localhost.$mydomain localhost $mydomain

或:

引用

mydestination = $myhostname,

localhost.$mydomain,

localhost,

$mydomain

结果是相同的。

5、可以使用hash等格式进行更规范的设定;

例如:

引用

alias_maps = hash:/etc/aliases

那么,相关的值就可以写入/etc/aliases文件中。

6、若重复设定某一变量的设定,则以最后出现的设定值为准~!

三、/etc/postfix/access文件

1、需要在main.cf中打开

引用

/etc/postfix/main.cf:

smtpd_client_restrictions = check_client_access hash:/etc/postfix/access

2、设定值

例如:

引用

/etc/postfix/access:

192.168.228.10 REJECT

192.168.228.1 OK

linuxfly.org OK

3、生成数据库

# postmap hash:/etc/postfix/access

四、/etc/aliases文件

1、同样需要在main.cf中打开

引用

/etc/postfix/main.cf:

alias_database = hash:/etc/aliases

alias_maps = hash:/etc/aliases

2、设定值

引用

/etc/aliases:

mailer-daemon: postmaster

postmaster: root

root: linuxing,root

前面是键值,后面是真实的值。真实的值不要求是本地邮件,也可以是外面的邮箱,例如:linuxing@163.com等。

3、生成数据库

# postalias hash:/etc/aliases

※这会生成类似.db的数据库文件,主要是为了让postfix能快速的读取。其他可以使用多值的地方也可以该方式定义。默认会自动识别,但也可以用“hash:文件”指定格式。

4、若是个人用户,可以设置主目录下的~/.forward文件,也可以设置别名,一行一个Email地址,例如:

引用

[linuxing@dc5test ~]$ cat .forward

test

test@test.com

[linuxing@dc5test ~]$ chmod 644 .forward

权限不要搞错了!

五、postfix主要命令

1、查看配置信息

引用

[root@dc5test postfix]# postconf -n

alias_database = hash:/etc/aliases

alias_maps = hash:/etc/aliases

broken_sasl_auth_clients = yes

command_directory = /usr/sbin

config_directory = /etc/postfix

daemon_directory = /usr/libexec/postfix

debug_peer_level = 2

html_directory = no

inet_interfaces = $myhostname, localhost

mail_owner = postfix

mailq_path = /usr/bin/mailq.postfix

manpage_directory = /usr/share/man

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

mydomain = linuxfly.cn

mynetworks = 192.168.218.0/24, 127.0.0.0/8

myorigin = $mydomain

newaliases_path = /usr/bin/newaliases.postfix

queue_directory = /var/spool/postfix

readme_directory = /usr/share/doc/postfix-2.1.5/README_FILES

relay_domains = $mydestination

sample_directory = /usr/share/doc/postfix-2.1.5/samples

sendmail_path = /usr/sbin/sendmail.postfix

setgid_group = postdrop

smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination

smtpd_sasl_auth_enable = yes

smtpd_sasl_security_options = noanonymous

unknown_local_recipient_reject_code = 550

2、查看队列信息

引用

# mailq

-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------

DB7678DA5 289 Wed Aug 22 16:46:28 root@linuxfly.org

(Host or domain name not found. Name service error for name=linuxfly.org type=MX: Host not found, try again)

root@linuxfly.org

-- 0 Kbytes in 1 Request.

引用

# postqueue -p

-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------

DB7678DA5 289 Wed Aug 22 16:46:28 root@linuxfly.org

(Host or domain name not found. Name service error for name=linuxfly.org type=MX: Host not found, try again)

root@linuxfly.org

-- 0 Kbytes in 1 Request.

结果是一样的。

3、强制发出邮件

# postfix flush

# postqueue -f

这会把队列中的邮件再发一次。可以处理一些临时的错误问题。

4、查看在发邮件信息

在发的邮件会放在/var/spool/postfix/deferred目录中,但其中含有一些postfix特定字符,可通过postcat查看:

引用

# postcat DB7678DA5

*** ENVELOPE RECORDS DB7678DA5 ***

message_size: 289 163 1 0

message_arrival_time: Wed Aug 22 16:46:28 2007

named_attribute: message_origin=local

sender_fullname: root

sender: root@linuxfly.org

original_recipient: root@linuxfly.org

recipient: root@linuxfly.org

*** MESSAGE CONTENTS DB7678DA5 ***

Received: by dc5test.linuxfly.org (Postfix, from userid 0)

id DB7678DA5; Wed, 22 Aug 2007 16:46:28 +0800 (CST)

To: root@linuxfly.org

Subject: test

Message-Id: <20070822084628.DB7678DA5@dc5test.linuxfly.org>

Date: Wed, 22 Aug 2007 16:46:28 +0800 (CST)

From: root@linuxfly.org (root)

*** HEADER EXTRACTED DB7678DA5 ***

*** MESSAGE FILE END DB7678DA5 ***

5、一些Email测试用命令

◎mail,字符下的客户端

$ mail -s 'subject' linuxing < ~/file

把file中的内容作为邮件内容,以subject做标题,发给本地的linuxing用户。

引用

$ mail -s 'subject' linuxing

test

Ctrl-D保存退出

Cc: root

●mail直接回车

则是作为本地的邮件接收客户端,可以用d删除,回车查看,序号查看,help帮助或q退出等操作。

引用

# mail

Mail version 8.1 6/6/93. Type ? for help.

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

>U 1 root@linuxfly.org Tue Aug 21 11:56 94/2251 "LogWatch for dc5test"

U 2 root@linuxfly.org Tue Aug 21 11:57 23/846 "Anacron job 'cron.daily'"

●使用mail发送附件

# uuencode /root/install.log install.log|mail -s 'install log' linuxing

uuencode后第一个参数的本地文件,第二个参数是邮件中的附件名称。

●字符下收信:

引用

$ mail

Mail version 8.1 6/6/93. Type ? for help.

"/var/spool/mail/linuxing": 1 message 1 new

>N 1 root@linuxfly.org Wed Aug 22 17:10 853/52344 "install log"

& s 1 install.log

"install.log" [New file]

& exit

会保存为install.log文件,然后再解压出来:

$ uudecode install.log -o install.log

uudecode: install.log: Short file

◎telnet,测试smtp和pop3服务

●smtp服务

引用

# telnet localhost 25

Trying 127.0.0.1...

Connected to localhost.localdomain (127.0.0.1).

Escape character is '^]'.

220 dc5test.linuxfly.org ESMTP Postfix

ehlo localhost

250-dc5test.linuxfly.org

250-PIPELINING

250-SIZE 10240000

250-VRFY

250-ETRN

250-AUTH DIGEST-MD5 CRAM-MD5 NTLM LOGIN GSSAPI PLAIN

250-AUTH=DIGEST-MD5 CRAM-MD5 NTLM LOGIN GSSAPI PLAIN

250 8BITMIME

mail from:"root"

250 Ok

rcpt to:

250 Ok

data

354 End data with .

A test mail.

.

250 Ok: queued as A27B38DAF

quit

221 Bye

Connection closed by foreign host.

※内容后的“.”号表示内容的终结符。

●pop3服务

引用

# telnet localhost 110

Trying 127.0.0.1...

Connected to localhost.localdomain (127.0.0.1).

Escape character is '^]'.

+OK dovecot ready.

user linuxing

+OK

pass password

+OK Logged in.

list

+OK 1 messages:

1 576

retr 1

+OK 576 octets

Return-Path:

X-Original-To: linuxing

Delivered-To: linuxing@linuxfly.org

Received: by dc5test.linuxfly.org (Postfix, from userid 0)

id D6D728DB4; Wed, 22 Aug 2007 17:28:33 +0800 (CST)

To: linuxing@linuxfly.org

Subject: subject

Message-Id: <20070822092833.D6D728DB4@dc5test.linuxfly.cn>

Date: Wed, 22 Aug 2007 17:28:33 +0800 (CST)

From: root@linuxfly.org (root)

X-IMAPbase: 1187497071 28

Status: O

X-UID: 28

Content-Length: 13

X-Keywords:

A test mail.

quit

+OK Logging out.

Connection closed by foreign host.