[vine-users:082927] Re: fml で文字コードを変換したい

Hajime Satono halcom @ feelkind.com
2017年 10月 7日 (土) 14:07:53 JST


里野@金沢在住です。

牛島@奈良在住さん・・・はまだいらっしゃるでしょうか(^^;)?

fmlのフィルタリングの件、実は以前から本家に資料が書かれていました。

http://www.fml.org/fml/Japanese/utility_programs/6.html

の

6.14	Multipart Canceler Filter (bin/multipart.pl)

です。

−−−引用ここから
   最近、ML に Multipart/Mixed とか Multipart/Alternative とかの
形式で、メールを送ってくる人がいるので(特にコマンドの処理がで
きないので)、Multipart Canceler なるフィルタを作ってみました。
   Multipart/Mixed の場合は、# End of Document No.??? でつなげる。
Multipart/Alternative の場合は、最初の文書以外は捨てる。...と
いうことをしています。
   使い方は、fml を起動するのに "|/fmlpath/fml.pl ..." と記述し
ているところを "|/scriptpath/multipart.pl|/fmlpath/fml.pl ..."
などと記述すれば機能します。
−−−引用ここまで

これでmultipart/alternative形式などの件
(例えばyahoomailからの発信やiphone等からの発信)に関しても
plaintextへコンバートされてから配信されるようになります。

具体的には先に使わせていただいたgmail-filter.plの前に、
さらにフィルタをかけるイメージです。

「multipart.pl」の本体はfmlをサーバ上の
どこにインストールされているかに依存しますが、
当方の場合は/home/fml/bin/multipart.plに存在していましたので

/var/ml/etc/aliasesの書き換え内容サンプルとしては・・・

test-ml:  
"|/home/fml/bin/multipart.pl|/usr/bin/gmail-filter.pl|/home/fml/fml.pl  
/var/spool/ml/test-ml"
test-ml-ctl:  
"|/home/fml/bin/multipart.pl|/usr/bin/gmail-filter.pl|/home/fml/fml.pl  
/var/spool/ml/test-ml --ctladdr"
test-ml-request: test-ml-admin
test-ml-admin: fml
owner-test-ml: fml
owner-test-ml-ctl: fml

・・・といった2段構えでの対処になります。

aliasesを書き換えた後は

/var/ml/etc/

にて

newaliases

の実行をお忘れ無きよう_(^_^)_



以上、相当昔のネタへの追加レスで恐縮ですが、報告を兼ねて投稿します。


	By Hajime-Satono / halcom @ feelkind.com



On 2014/09/15 10:42, usi @ mba.nifty.ne.jp wrote:
> 里野@金沢在住 様
>
> 牛島@奈良在住です。
> コメント、ありがとうございました。
>
> aliasesのデータベースの件、ありがとうございました。
> サンプルが本当に助かりました。結論から言うと、無事に動き出しましたが、
> 浅い管理者知識が致命傷でした。
>
> ・設定ファイル
> /etc/aliaseが正解だと思っていたのですが、/varの方にあったのですね。知りません
> でした。
>
> 早速対応してみたところ、それでもうまくいきませんでした。
> どうしてもメールがサーバで止まってしまいます。
>
> そこで、サンプルと書式を確認したところ、私の設定は、
> test-ml: "|/usr/bin/gmail-filter.pl |/home/fml/fml.pl /var/spool/ml/test-ml "
> test-ml-ctl: "|/home/fml/fml.pl /var/spool/ml/test-ml --ctladdr"
> test-ml-request: usitest-admin
> test-ml-admin: fml
> owner-test-ml: fml
> owner-test-ml-ctl: fml
> と、2行目にgmail-filter.plが入っていませんでした。
> ホームページの書き方だとメールをfmlに送る前に文字変換すればよいので
> 1行目だけで良いように思うのですが、2行目にも必要だったのですね。
> 前からなぜ良く似たものを2行書いているのか不思議でしたが、実際にメールをfmlに
> 送って
> いるのは「ctl」が書かれた2行目だったのですね。勉強になりました。
> (逆に1行目の存在意義がわからなくなりましたが・・・)
>
> それでも、メールはまだサーバにて消滅します。
> Sep 15 09:21:55 fml postfix/local[20260]: C9105DC00E0: to=<test-ml @ domain.jp>,
>  relay=local, delay=0.12, delays=0.05/0.01/0/0.06, dsn=2.0.0, status=sent (del
> ivered to command: /usr/bin/gmail-filter.pl|/home/fml/fml.pl /var/spool/ml/tes
> t-ml )
> Sep 15 09:21:55 fml postfix/qmgr[2365]: C9105DC00E0: removed
>
> コピーが間違っていたのかと、再度コピーをしたり文字コードを JIS や utf-8 、euc-
> jp に
> して保存してもだめでした。
>
> そこで、ファイル名が間違っていないかと確認したときに、
> [root @ fml bin]# ls -l gmail-filter.pl
> -rw-r--r-- 1 root root 6159  9月 15 09:44 gmail-filter.pl
>
> 「実行」のフラグが上がっていないことに気が付きました。
> そこで、
> [root @ fml bin]# chmod +x gmail-filter.pl
> [root @ fml bin]# ls -l gmail-filter.pl
> -rwxr-xr-x 1 root root 6159  9月 15 09:44 gmail-filter.pl*
>
> としたところ、ようやく動き出しました。
>
> phpのファイルはこのフラグを立てるのですが、shのファイルは立てなくても
> 動くので、perlだから大丈夫かなぁと思い込んでいました。
>
> これからは気を付けます。ありがとうございました。
>
> 追伸
> multipart/alternative形式の件は知りませんでした。
> Google先生に聞いたところ、ずいぶん変な形式ですね。
> うまく、txt部分だけを抽出できれば問題は少なくなると思いますが、
> そうすると、html形式のメールとの区別が付くかどうかが肝ですね。
> すみません、答えにならなくて。
>
> (2014/09/14 20:13), Hajime Satono wrote:>
>> 牛島さん。
>>
>> 里野@金沢在住と申します。
>>
>>
>> On 2014/09/14 18:13, usi @ mba.nifty.ne.jp wrote:
>>> メーリングリストのユーザがほとんどが携帯電話となっています。
>>> 最近、iphoneユーザの投稿が文字化けをするという事がありました。
>>> 調べてみるとどうやら utf-8 でメールを送信しているようです。
>>> キャリアーはdocomoでした。jisに変えれないかと設定を見てみた
>>> のですが、文字コードを変更する方法はわかりませんでした。
>>>
>>> そこで、サーバでjisに置き換えて見ようと色々と調べてみると
>>> 下記のようなサイトがあり、perlで変換するプログラムがありました。
>>>
>>> http://yamagata.int21h.jp/tool/gmail-filter/
>>
>> 全く同様の悩みで全く同様の対処を行っています(^^;)
>>
>>
>>> 早速入れてみたのですが、メールは返って来ませんでした。
>>>
>>> 理由の1つは 1行目の perl の位置が違っていたので
>>> そこは変更しましたが、結果は変わりませんでした。
>>> #!/usr/local/bin/perl -> #!/usr/bin/perl
>>
>> まずfmlにて「test-ml」などのテスト用mlを作成して配信先を自分などにして下
>> さい。そしてそのtest-ml @ hogehoge.comなどにテストメールを投げてみて下さい。
>>
>> フィルタが正常に動作していれば配信されたメールのメールヘッダに・・・
>>
>> 「X-GMail-Filter: gmail-filter.pl(ver0.19.02) by yamagata @ openmya>>
>> ・・・が付加されているはずです。
>> 受信メーラでメールヘッダ表示を「全て」にして確認してみて下さい。
>>
>> 付加されていない場合、フィルタ自体が稼働していない懸念があります。
>>
>> fmlをサーバのどこでどのように動かしているかによりますが、
>> 例えば当方の場合は/var/spool/ml/・・・配下に各mlがあり、
>> fmlの設定ファイルは/var/spool/ml/etc/・・・配下にあります。
>>
>> /var/spool/ml/etc/aliases
>>
>> の内容に
>>
>>
>> test-ml: "|/usr/bin/gmail-filter.pl |/home/fml/fml.pl /var/spool/ml/test-ml"
>> test-ml-ctl: "|/usr/bin/gmail-filter.pl |/home/fml/fml.pl
>> /var/spool/ml/test-ml --ctladdr"
>> test-ml-request: test-ml-admin
>> test-ml-admin: fml
>> owner-test-ml: fml
>> owner-test-ml-ctl: fml
>>
>> といった「|/usr/bin/gmail-filter.pl」などの記述が追記されており、
>> 同ディレクトリ配下で管理者権限により・・・
>>
>> newaliases
>>
>> ・・・を実行すれば動くかと思います。
>>
>> fmlで「実際に利用されている」aliasデータベースファイルの所在を誤認してい
>> るといつまで経っても動作しません(当方この罠に3日ぐらいハマりました)。
>>
>> 以上、ご参考になれば幸いです。
>>
>>
>> ちなみに本フィルタを使った場合でも・・・
>>
>> 「Content-Type: 	multipart/alternative;」
>>
>> ・・・でmlに対して送信されたメールは正しく変換されない模様です。
>>
>> この解決法をご存じの方がいらっしゃれば是非ご教示下さい_(_ _)_
>>
>>
>> 	By Hajime-Satono / halcom @ feelkind.com
>>
>> _______________________________________________
>> vine-users mailing list
>> vine-users @ listserv.linux.or.jp
>> http://listserv.linux.or.jp/mailman/listinfo/vine-users
>>
>
> _______________________________________________
> vine-users mailing list
> vine-users @ listserv.linux.or.jp
> http://listserv.linux.or.jp/mailman/listinfo/vine-users
>



vine-users メーリングリストの案内