页次: 1
前提:没有网络邮箱。
目标:能在本地发送邮件,比如我希望接收到 cron 发的邮件。
>0< ~# cat test.mail | msmtp -a default fb@localhost
msmtp: account default from /etc/msmtprc: envelope-from address is missing
>78< ~# cat /etc/msmtprc
account default
host localhost
>0< ~#
离线
离线
mymailer.py:
#!/usr/bin/env python3
import os
import sys
import time
import subprocess
def getmailplace():
if os.environ['USER'] == 'lilydjwg':
f = b'.Mail/inbox'
else:
f = b'cron.letter'
return f
def process_message():
r, w = os.pipe()
try:
os.set_inheritable(r, True)
except AttributeError:
pass # Python 3.3-
# use procmail so we needn't care about locking
try:
p = subprocess.Popen(['procmail', '-f', 'crond', '/proc/self/fd/%d' % r],
pass_fds=(r,), stdin=subprocess.PIPE)
os.write(w, b'DEFAULT=$HOME/' + getmailplace() + b'\n')
os.close(w)
mail = p.stdin
mail.write(b'Delivered-To: localhost\n')
mail.write(b'Date: ' + time.ctime().encode() + b'\n')
mail.write(b'Content-Type: text/plain; charset=utf-8\n')
for l in sys.stdin.buffer:
mail.write(l)
mail.write(b'\n')
finally:
p.stdin.close()
p.wait()
if __name__ == '__main__':
process_message()
离线
离线
楼上这是?
专门给 cron 用的邮件投递程序。
离线
自由建客 说:楼上这是?
专门给 cron 用的邮件投递程序。
專門的就不必了,我還有 mldonkey(電騾,怎拼的忘了)。我研究發現好像就在 sendmail 命令,exim4 提供的該命令就能如願且無需守護進程,postfix 能用但必須要守護進程,msmtp 就不行。
离线
页次: 1