blob: 2ff4f372ef09db3f2ef64abf41842f1b7938b316 [file] [log] [blame]
#
# Receive and deliver mail
#
require 'digest'
require 'time'
require 'fileutils'
MAIL_ROOT = '/srv/mail'
mail = STDIN.read.force_encoding('binary')
# extract info
dest = mail[/List-Id: <(.*)>/, 1] || mail[/Delivered-To.* (\S+)\s*$/, 1]
time = Time.parse(mail[/^Date: (.*)/, 1]) rescue Time.now
hash = Digest::SHA1.hexdigest(mail[/^Message-ID:.*/i] || mail)[0..9]
# build file name
file = "#{MAIL_ROOT}/#{dest[/^[-\w]+/]}/#{time.strftime("%Y%m")}/#{hash}"
File.umask 0002
FileUtils.mkdir_p File.dirname(file)
File.write file, mail, encoding: Encoding::BINARY
File.utime time, time, file
File.chmod 0644, file