vine-users ML アーカイブ



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

  • From: Hajime Satono <halcom@xxxxxxxxxxxx>
  • Subject: [vine-users:082927] Re: fml で文字コードを変換したい
  • Date: Sat, 7 Oct 2017 14:07:53 +0900

里野@金沢在住です。

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

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@xxxxxxxxxxxx



On 2014/09/15 10:42, usi@xxxxxxxxxxxxxxx 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@xxxxxxxxx>,
 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@xxxxxxxxxxxxxxx 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@xxxxxxxxxxxxなどにテストメールを投げてみて下さい。

フィルタが正常に動作していれば配信されたメールのメールヘッダに・・・

「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@xxxxxxxxxxxx

_______________________________________________
vine-users mailing list
vine-users@xxxxxxxxxxxxxxxxxxxx
http://listserv.linux.or.jp/mailman/listinfo/vine-users


_______________________________________________
vine-users mailing list
vine-users@xxxxxxxxxxxxxxxxxxxx
http://listserv.linux.or.jp/mailman/listinfo/vine-users


_______________________________________________
vine-users mailing list
vine-users@xxxxxxxxxxxxxxxxxxxx
http://listserv.linux.or.jp/mailman/listinfo/vine-users