為什麼用 postfix
?
因為是 macOS 自带的,不用白不用。
為什麼用 launchd/launchctl
?
因為 macOS 独此一家,別的 OS 上想用也沒得用。
那為啥一定要用 fetchmail
呢,getmail
不好麼?
因為用了 getmail
就沒機會用 postfix
了。
准备
notmuch
& fetchmail
,其他 macOS 都有。
fetchmailrc
set postmaster "ldbeth"
poll pop.qq.com with proto pop3
user "[email protected]" there with password "***********" is "ldbeth" here options ssl
org.ldbeth.fetchmail.plist、org.ldbeth.postfix.master.plist、org.ldbeth.notmuch.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.ldbeth.fetchmail</string>
<key>ProgramArguments</key>
<array>
<string>/opt/pkg/bin/fetchmail</string>
<string>-d</string>
<string>900</string>
<string>-f</string>
<string>/Users/ldbeth/.fetchmailrc</string>
<string>--syslog</string>
</array>
<key>KeepAlive</key>
<true/>
<key>UserName</key>
<string>ldbeth</string>
<key>EnvironmentVariables</key>
<dict>
<key>LC_ALL</key>
<string>C</string>
</dict>
</dict>
</plist>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.ldbeth.postfix.master</string>
<key>ProgramArguments</key>
<array>
<string>/usr/libexec/postfix/master</string>
<string>-e</string>
<string>60</string>
</array>
<key>Sockets</key>
<dict>
<key>Listeners</key>
<dict>
<key>SockServiceName</key>
<string>smtp</string>
<key>SockType</key>
<string>stream</string>
</dict>
</dict>
<key>QueueDirectories</key>
<array>
<string>/var/spool/postfix/maildrop</string>
</array>
<key>AbandonProcessGroup</key>
<true/>
</dict>
</plist>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.ldbeth.notmuch</string>
<key>ProgramArguments</key>
<array>
<string>/opt/pkg/bin/notmuch</string>
<string>new</string>
</array>
<key>UserName</key>
<string>ldbeth</string>
<key>WatchPaths</key>
<array>
<string>/Users/ldbeth/Net/Maildir/new</string>
</array>
<key>StandardOutPath</key>
<string>/var/log/mail.log</string>
<key>StandardErrorPath</key>
<string>/var/log/mail.log</string>
</dict>
</plist>
放 ~/Library/LaunchAgents
postfix 配罝
http://mattshaw.org/news/how-to-filter-mail-with-postfix-header_checks/
http://www.postfix.org/VIRTUAL_README.html
工作原理:
-
第一个 launchd.plist 负责开機启動
fetchmail
Daemon,fetchmail
定時收件,投至本地 SMTP port。 -
第二个监听本地 SMTP port 和投件箱,自动按需启用
postfix
,以免一直連行的开銷。postfix
根據配置分件投件。 -
第三个监听收件箱,有新邮件就更新
notmuch
Database。并 log STDOUT & STDERR