GNU/Linux 下超酷又灵活的 Email 系统

来自Jack's Lab
(版本间的差异)
跳转到: 导航, 搜索
(sSMTP 发邮件)
(fetchmail 取邮件)
第29行: 第29行:
  
 
</pre>
 
</pre>
 +
 +
默认情形下,fetchmail 从服务器取到的邮件后,会检查本地 localhost 的 25 端口,看有没有 SMTP 服务,即其是把取到的邮件 re-route 到本地的 MTA (Mail Transfer Agent),比如 exim4,postfix ...
 +
 +
如果本地没有安装 MTA,则可在配置文件里指定 MDA (Mail Delivery Agent),上面的配置文件,我们指定 procmail 作为 MDA,fetchmail 取到邮件后,会直接将邮件抛给 procmail 处理。
  
 
<br><br>
 
<br><br>

2013年3月18日 (一) 14:29的版本

目录

1 概述

简单地说就是:fetchmail 从邮件服务器取邮件到本地,经 procmail 过滤分捡后写入相应的 mailbox 文件,邮件客户端 Mutt 读取 mailbox 文件并与用户交互,使用 ssmtp 联系邮件服务器发邮件

fetchmail + procmail + Mutt + Exim4 的方案个人用了 7 年多,效率高,非常适合 Hacker/Geeker

近来发现 sSMTP 更好用,配置简单,风格和 fetchmail 类似,很自然地切到了 sSMTP



2 fetchmail 取邮件

fetchmail 的默认配置文件位于当前用户主目录下,即:$HOME/.fetchmailrc,没有可自己建一个

例如,我的 gmail 账户的 $HOME/.fetchmailrc 例子:

set postmaster "comcat"
set bouncemail
set no spambounce
set properties ""
set daemon 60

poll imap.gmail.com protocol IMAP port 993 auth password
	user "YOUR_GMAIL_USERNAME@gmail.com" there
	with password 'YOUR_GMAIL_PASSWD'
	is 'comcat' here options no fetchall keep ssl
	mda "/usr/bin/procmail -f %F -d %T"

默认情形下,fetchmail 从服务器取到的邮件后,会检查本地 localhost 的 25 端口,看有没有 SMTP 服务,即其是把取到的邮件 re-route 到本地的 MTA (Mail Transfer Agent),比如 exim4,postfix ...

如果本地没有安装 MTA,则可在配置文件里指定 MDA (Mail Delivery Agent),上面的配置文件,我们指定 procmail 作为 MDA,fetchmail 取到邮件后,会直接将邮件抛给 procmail 处理。



3 procmail 分捡邮件



4 Mutt 读邮件



5 sSMTP 发邮件

$ sudo apt-get install ssmtp
$ vim /etc/ssmtp/ssmtp.conf
# The place where the mail goes. The actual machine name is required no 
# MX records are consulted. Commonly mailhosts are named mail.domain.com
Root=postmaster                        # Redirect mail for root@ to postmaster@

Mailhub=smtp.gmail.com:587             # TLS

AuthUser=YOUR_GMAIL_USERNAME           # Your DreamHost mail account
AuthPass=YOUR_GMAIL_PASSWORD           # The password for the mail account
UseTLS=YES                             # Secure connection (SSL/TLS)
UseSTARTTLS=YES

rewriteDomain=jackslab.org             # The host the mail appears to be coming from, seems like gmail can not be rewrited
hostname=jackslab.org                  # The name of this host

FromLineOverride=YES                   # Allow the user to specify their own From: address, seems like gmail is not allow


关于发件人:

发送时,不指定 'From:',则默认的 'From:' 地址就是:你的当前用户名 @ rewriteDomain,ssmtp 会检索 /etc/passwd 获取你的全名,并显示在 'From:' 后

FromLineOverride=YES 则允许用户用其他地址,覆盖默认的 "当前用户名 @ rewriteDomain"

最终出现在邮件头的 'From:' 是 log 中 'MAIL FROM:' 后的地址


关于收件人:

ssmtp 命令行后跟的地址,是真正邮送的地址,即显示在 'RCPT TO:' 后的地址

默认命令行参数下,ssmtp 不对邮件头中的 'To:', 'Cc:' 作真在的邮送,只是显示在邮件头而已,如果不指定 'To:",则收的邮件,收件人就为空


测试发送:

comcat@Pek-tux:/work$ ssmtp -v jack.tan@windriver.com
From: tandajie@gmail.com
To: jack.tan@windriver.com
Cc: help.eprs@gmail.com
Subject: hahaha test

test
[<-] 220 mx.google.com ESMTP j6sm28278295qek.8 - gsmtp
[->] EHLO jackslab.org
[<-] 250 ENHANCEDSTATUSCODES
[->] STARTTLS
[<-] 220 2.0.0 Ready to start TLS
[->] EHLO jackslab.org
[<-] 250 ENHANCEDSTATUSCODES
[->] AUTH LOGIN
[<-] 334 VXNlcm5hbWU6
[->] amlhbmtlbWVuZw==
[<-] 334 UGFzc3dvcmQ6
[<-] 235 2.7.0 Accepted
[->] MAIL FROM:<tandajie@gmail.com>
[<-] 250 2.1.0 OK j6sm28278295qek.8 - gsmtp
[->] RCPT TO:<jack.tan@windriver.com>
[<-] 250 2.1.5 OK j6sm28278295qek.8 - gsmtp
[->] DATA
[<-] 354  Go ahead j6sm28278295qek.8 - gsmtp
[->] Received: by jackslab.org (sSMTP sendmail emulation); Mon, 18 Mar 2013 11:17:32 +0800
[->] Date: Mon, 18 Mar 2013 11:17:32 +0800
[->] From: tandajie@gmail.com
[->] To: jack.tan@windriver.com
[->] Cc: help.eprs@gmail.com
[->] Subject: hahaha test
[->] 
[->] test
[->] .
[<-] 250 2.0.0 OK 1363576688 j6sm28278295qek.8 - gsmtp
[->] QUIT
[<-] 221 2.0.0 closing connection j6sm28278295qek.8 - gsmtp

Ctrl-D 退出









个人工具
名字空间

变换
操作
导航
工具箱