mail-relay - UNIXからメールを送る際に、接続先SMTPサーバを指定したい

目的

以下の条件に合うように、

  1. 特定ドメインのアドレス(jp.example.com)宛のメールはサーバ1に送る。
  2. それ以外のメールはサーバ2に送る。

以下のメールサーバ(MTA)で、メール送信時のSMTP接続先を指定したい。

※なぜこの3つかというと、RHELが想定しているMTAがこの3つだから(参考: Product Documentation for Red Hat Enterprise Linux 8 - Red Hat Customer Portal; system-switch-mail コマンドで切り替え可能)。

結果

MTAの設定変更で実現できた。

MTA 特定ドメインのアドレスの接続先 それ以外のメールの接続先
sendmail(FC使用) mailertableファイルで設定 sendmail.mcファイルのSMART_HOSTで設定
postfix transportファイルで設定 relayhostファイルで設定
exim (未調査) (未調査)

注意:メールのFromかToどちらかが自社の有効なメールアドレスでないと、SMTPサーバがメールを無視してしまう場合があるので、気をつける。
これをlocalhostへの送信時に判別できるようにする方法も試みたが、うまくいかず断念。

続きを読む

signal-piping - SIGNALをpipe経由でハンドラからメインスレッドに渡す方法

目的

Linux上(UNIX全般)で「安全な」シグナル処理を実装したい。
本来シグナルハンドラでしてもよい処理は非常に限られており、実質は特定の型のグローバル変数操作と、非同期シグナルセーフ関数の呼び出ししか安全ではない(参考:UNIX上でのC++ソフトウェア設計の定石 (2) - memologue)。
この条件を守ったうえで、多用な処理をするシグナルハンドラを実装したい。

結果

別途、pipeとスレッド(メインスレッドでも良い)を用意して、

  1. シグナルハンドラ: 受け取ったシグナル情報をpipeにwriteするだけ
  2. 別スレッド: pipeをreadしてその後の処理を実行

という役割分担にすれば良い。

続きを読む

multi-opts - gccの-Oオプションを複数個付けたらどうなるか?

目的

"gcc -O2 -O0" のように複数最適化オプションを付けた場合に、ちゃんと -O0 だけが有効になるかを確認したい。

結果

アセンブル結果を比較して、確かに、最後に付けた -O* だけが有効になっていた。

以下、詳細。

続きを読む

make-filter-out - filter-out関数の使い方

目的

GNU make の関数 $(filter-out) の使い方をメモしておく。

結果

filter-outを使うと、変数内の特定の単語を、完全一致/前方一致/後方一致で取り除くことができる。

続きを読む

cvsを認証必須のプロキシ経由で使いたい

目的

id:taiyo:20080401#p1 を参照。

結果

社内プロキシの設定では、CVSプロトコルを用いての取得はムリ(80番以外のポートへのCONNECTメソッドを許可していないため)。
ViewCVSなどのWebインターフェースを経由してのアクセスなら可能なはず(CVSGrabを使用)。ただし未だ成功せず。

続きを読む

subversionを認証必須のプロキシ経由で使いたい

目的

id:taiyo:20080401#p1 を参照。

結果

リポジトリhttpsでアクセスする場合のみ可能(httpアクセスは、プロキシサーバがPROPFINDメソッドを許可していないため、不可能)。

~/.subversion/servers に、以下の設定を記述する:

[groups]
external = sssvn.jp, svn.ruby-lang.org

[external]
http-proxy-host = abcproxy.examlple.com
http-proxy-port = 8080
http-proxy-username = 4000000
http-proxy-password = PassWord
ssl-trust-default-ca = yes

ファイルのパーミッションも適切に。

※外部にあるリポジトリにしかアクセスしない場合は、"[global]"セクションに書いても良い。

続きを読む

gem(RubyGems)を認証必須のプロキシ経由で使いたい

目的

id:taiyo:20080401#p1 を参照。

結果

~/.gemrc に、以下の設定を記述する(大文字の箇所は記入例、各自で変えること):

http_proxy: http://4000000:PassWord@abcproxy.examlple.com:8080

※PassWordに英数字以外が含まれる場合はURLエンコードが必要

もちろん、~/.gemrc のパーミッションは 600(自分のみread/wriet可) にしておくこと。

続きを読む