Postfix 是MTA负责接收MUA传过来要发送到信件,以及和其他MTA传递信件和relay,用的是SMTP协定。
Dovecot是 MDA,负责MUA收信。用的是POP3,POP3S,IMAP, IMAPS协定

 
一 : 首先安装Postfix ,  sudo aptitude install postfix。随便选,因为待会我们要重新设定
执行  sudo dpkg-reconfigure postfix 进入设定画面
(1)General type of mail configuration : 选 internet site
     (2)  Mail name : 输入在 www.dyndns.com 申请到的DDNS
     (3) Post master : 就输入在ubuntu 里的 user name
     (4)  Final destination : 这个不用改
     (5)  Synchronous update on mail queue : 选 no, 处理邮件的速度会快一些
     (6)  Local network : 127.0.0.0/8 192.168.0.0/24 这样同一个网段也可以经由postfix发mail
     (7)  Mailbox size limit :  0 , 不用改
     (8)  Local address extension : + ,不用改
     (9) Internet protocol : 选IPv4就可以了

 
     这样main.cf基本设定就差不多了。接下来可以telnet 进smtp试试看发信,如下:
     (1) telnet localhost 25
     (2) helo kenji
     (3) mail from: kenji@xxx.com  发信人的mail address,,随便填,反正没王法
     (4) rcpt to : xxxxxxx@gmail.com  收信人的mail address ,用gmail测试,速度快
     (5) data 然后enter . 然后输入信件内容。写完之后,enter 到下一行,输入一个dot ,,就是 .  在按enter ,,,信就queue了,,其实是已经发出去了。去gmail看一下。。哇,真快。

 
      可是telnet 进smtp发信,,怎么没有subject呢,真是怪异。后来发现怎么加上subject了。就在信件内容第一行输入subject: xxxxxx,内容在第二行开始输入。不过中文发不出去,不知道为什么。。。

 
       不过呢,这封测试的mail,直接就被gmail丢到spam里面了。。

 
        再来测试从Gmail发到postfix.当然要把DDNS先设定好,在router把port 25 forward到postfix这台电脑。从Gmail发信成功,没有任何错误讯息,问题是,mail在哪里?答案是,,,在/var/spool/mail 里面。就是你对email account 那个档案。这是mbox的格式。不过呢,我们要用的是Maildir,据说Maildir比mbox效能好。这时候我们就要到 /etc/postfix/main.cf 来更改一些设定。

 
       在最后一行加入  home_mailbox = Maildir/ , 然后restart postfix。在从gmail发信之前,我们进入自己的家目录看看,并没有Maildir这个目录。从Gmail发邮件之后,发现家目录里多了个一个Maildir..信件就在里面了。不过不是像mbox这样,所有信件都在一个档案里。而是每个信件一个档案,在' mailbox_command = procmail -a "$EXTENSION" '那一行前面加上一个"#"将其注释掉

二: 再来安装Dovecot ,  sudo aptitude install dovecot-imapd dovecot-pop3d
       然后进入 /etc/dovecot 里面的dovecot.conf 

 
       找到这一段落 Mailbox locations and namespaces 里面有个参数 mail_locations = ,有几个预设的设定都被comment掉了。就是两个设定,一个是Maildir ,另一个是mbox,我们要用Maildir ,所以把mail_location = maildir:~/Maildir 给uncomment掉就可以了。
 

 
三:到目前为止,postfix 可以收到外部来信,可以relay给本机上的mail account ,可以发信。而dovecot 可以收信,不过要输入linux user的密码。所有的email account同时也是linux 里面的user。所以不需要再为使用者增加新的email account.

 
       用thunderbird来试试看,发信和收信。收信选pop 和 smtp , server 是localhost .但这一切都在本机上执行。而且server的设定是localhost,,如果要从外面连进来,应该怎么做呢?

 
      在thunderbird里面把pop ,smtp  server 都设定成dyndns.com申请来的DDNS . 来测试看看。
      (1)测试dovecot收信,输入密码,可是没用,系统提示要有TLS,SSL。解决如下:
                在 dovecot.conf 找到 disable_plaintext_auth = ,把这个uncomment掉,然后设为 no。就是可以用plaintext来验证。重启dovecot,这样就可以收到信了。

如果服务器不能向外网发送邮件:

可以更改 /etc/postfix/main.cf文件

mynetworks = 127.0.0.0/8,192.168.0.0/24,外网ip地址