野宮です.
In the Message;
Subject : Re: [opensuse-ja] Re: メールを転送したい
Message-ID : <20160313113041.b1f608ee028f49f3400b3175@reasonset.net>
Date & Time: Sun, 13 Mar 2016 11:30:41 +0900
MASAKI Yuhsuke
正木です。 誤って直接送ってしまいました。失礼しました。
そういうことでしたか.
入り口がfetchmailでなるべく単純解を考えることにします。 私はRubyistなので、Rubyでいきます。
まず、スクリプトを作ります。ここでは、外部Mutt(若干面倒がある)や sSMTP(古いパッケージしかない)に頼らない方向にします。
ヘッダの解析が問題です。エンコーディングをうまいこと処理してくれるラ イブラリがあるかもしれませんが、とりあえず手抜きします。
なお、もっとちゃんとやっているものはGitHubにおいてあります。 https://github.com/reasonset/maildeliver2
後で、取得することとします.
--- #!/usr/bin/ruby mail = ARGF.read header = mail.split(/\r\n\r\n|\n\n|\r\r/, 2).first to = header[/To:.*(?:^\s+.*$)*/]
if to && to.downcase.include?("foo@bar.com") serv = Net::SMTP.new('some.smtp.server', 587) serv.enable_tls(OpenSSL::SSL::VERIFY_NONE)
serv.start('host.name', 'user@example.com', 'password', :login) do |smtp| smtp.send_message(mail, "destination@example.com", "otheraddr@example.net") end else IO.popen(["rcvstore", "+inbox"], "r") {|io| io.write mail } end ---
外部コマンドとしてnmhのrcvstoreを使って直接MHメールボックスに対して 保存しています。 それ以外の書き込みは、procmailに渡すなり、maildropに渡すなりすれば良 いと思います。
多段化したいのであれば(clamavとbogofilterのために)スクリプト側で処理 しても良いですし、rcvstoreでなくprocmailに渡してもいいでしょう。 (その場合は、転送するメールはフィルタを経由しませんが)
あとは、実行可能として.fetchmailrcでMDAとしてこれを指定します。
mda "/home/foo/bin/mymdascript.rb"
ただし、この方法の問題は、Toアドレスで判断しているということです。 当該アカウントに対するメールであっても、Toが正しく書かれていなければ 機能しません。 これを重視するのであれば、.fetchmailrcを使い分けることによって解決が 可能です。 例えば、当該アカウントの時だけ HOME=/home/foo/forwardmail fetchmail のようにして、そこで指定したmdaによって問答無用で転送します。 この方法の問題は、転送によって同一のメールボックスに複数の宛先を集約 している場合は望むように機能しないということです。
なお、スクリプトの動作確認はしておりません;-)
じっくり勉強することとします. どうも、有難うございます. --- ┏━━┓彡 野宮 賢 mail-to: m.nomiya @ gmail.com ┃\/彡 ┗━━┛ 「先端技術の開発は、優れた頭脳を持つ人間が集中しないと成功しない。 しかし、技術開発と、それが何をもたらすかを考えることは別だ。 一人の人間に二つは望めない。」 -- M. Crichton -- -- To unsubscribe, e-mail: opensuse-ja+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-ja+owner@opensuse.org