カテゴリー別アーカイブ: UNIX

ffmpeg vs libav

動画・音声コーデック界のスイスアーミーナイフと呼ばれる ffmpeg から、数年前に libav がforkして分裂した。

参考: ffmpegとlibavの背景事情

Debian/Ubuntu の標準パッケージは libav の方に追随したのだが、結局メンテナンス頻度の問題で ffmpeg に再度鞍替えしたらしい。

参考: Ubuntu 15.10 その12 – Libavが無くなり、FFmpegに戻りました

forkがあったときにどっちに付いていくかは微妙な問題だけど、単なるいちユーザーとしては多数派になった方が使えればどうでもいいのよ、と思わないでもない。ffmpeg コマンドを前提にして色々スクリプトを書いていたが、コマンドが avconv に変わって、また ffmpeg に変わって、しかも微妙に互換性がないという困ったことになっている。

OpenOffice.org とか MySQL とか、ほかにも色々あるはず。

Postfixのsender_canonical_mapsでヘッダを書きかえてくれない

sender_canonical_mapsを設定したけど、エンベロープFromは書きかわってもヘッダFromが書きかわらない!という場合がある。sender_canonical_classes にもちゃんと header_sender が含まれている(デフォルト)のに書きかわらない。

結論から言うと、local_header_rewrite_clients の設定を見直す必要がある。

デフォルトでは

local_header_rewrite_clients = permit_inet_interfaces

となっていて、サーバのローカルから送信されたメールのみ、ヘッダも書きかえるという動作をする。つまり、メールハブでいくらsender_canonical_mapsを設定しても、他サーバから送信されたメールのFromは書きかえてくれないのだ。

管理しているドメイン(ローカルネットワーク)内のどのクライアント・サーバから送られたメールでもFromヘッダを書きかえ対象としたい場合、管理対象ドメインのIPアドレスをmynetworksに列挙した上で

local_header_rewrite_clients = permit_mynetworks

とする必要がある。

参考:

Postfixで送信者(From:)によってルーティングを変更する

メールのFrom:を見て、条件により nexthop メールリレーサーバを変更する設定をしたい。アウトバウンドリレーサーバに、ライセンス数制限のあるメールセキュリティアプライアンスなどを選択したい場合に使う。

設定項目としては、sender_dependent_default_transport_maps と sender_dependent_relayhost_maps がある。どちらを使っても同等の動作を実現できるが、少し書式が異なる。

1. sender_dependent_default_transport_maps を使う場合

/etc/postfix/main.cf:

sender_dependent_default_transport_maps = hash:/etc/postfix/sender_dependent_transport

/etc/postfix/sender_dependent_transport:

@example.co.jp            smtp:[リレーサーバ1]:25
@sub.example.co.jp        smtp:[リレーサーバ2]:25

メールの送信者が foo@example.co.jp の場合はリレーサーバ1に、bar@sub.example.co.jp の場合はリレーサーバ2に送られる。

この設定は、default_transport (デフォルト値: smtp) をエンベロープ From: によって上書きするというものである。上記のような書き方もできるし、master.cf で別の transport を定義しておき右辺に使うことも可能。

2. sender_dependent_relayhost_maps を使う場合

/etc/postfix/main.cf:

sender_dependent_relayhost_maps = hash:/etc/postfix/sender_dependent_relayhost

/etc/postfix/sender_dependent_relayhost:

@example.co.jp           [リレーサーバ1]:25
@sub.example.co.jp       [リレーサーバ2]:25

これは relayhost の設定を From: によって上書きするという機能なので、テーブルの右辺は relayhost を書くときの形式でなければならない。つまり、 transport:host:port の形式ではなく、host:port だけの形式となる。

ただし、「この情報は relay_transport、default_transport および transport(5) テーブルで上書きされます。」とのことなので、transportテーブルを併用する場合は思った通りに動作しないかもしれない(そこまでは手元で試していない)。