元RX-7乗りの適当な日々 このページをアンテナに追加 RSSフィード Twitter

RX-7(FD3S)WRX STI関連のキーワードで検索されて来られた方へ。
右サイドのカテゴリ『』をクリックすると関連する項目だけが表示されます。
日々の写真は『Flickr』で公開しています。

2016/05/31

LinuxのmailコマンドでSMTPサーバを使ってメール送信する (from GCE/nagios)


情報ソースとして割とあふれている話なんですが、前提が足りない情報が多いので、補足すべく書いておきます。

と、その前に、mail コマンドで SMTPサーバ経由のメール送信をやりたくなった、そもそもの動機を書いておきます。


GCE(Google Compute Engine)で作ったサーバに、nagios をセットアップしていて、アラートをメールで飛ばしたい。が、現在はGCE のインスタンスから宛先{25, 465, 587}番ポートへのメール送信は仕様として禁止されている。なので、GCE では sendgrid や mailgun、Google Apps を使ってメール送信してくれ、とドキュメントに記載されているのですが、まぁ色々な事情と対象がアラートメールという性質もあり、GCE 外部で既に動かしているSMTPサーバを経由して送りたい。

で、nagios のメール送信は、内部的に mail コマンドを使っていて、MTA を挟むよりは mail コマンドで完結できれば楽だよねー、ということでタイトル通りのことを実現したいというのがやりたいことです。

ちなみに、接続先となる外部のSMTPサーバで、上記ポート番号は使えない(接続できない)ので、あらかじめ2525番ポート等で LISTEN させておく必要があります。


mailコマンドの "-S" オプションを使う

結論から書いておくと、このオプションを使います。これは、世の中の色々なブログで紹介されている内容で、その通りなのです。

ああ、なるほど、サポートしてるよね。じゃあ試してみようと、GCE で立ち上げた Ubuntu なインスタンスから、意気揚々とコマンドを打つと、

mail: invalid option -- 'S'
Try 'mail --help' or 'mail --usage' for more information.

そんなオプションは無いと。manを読んでみても、確かに "-S" なんてオプションは無い。

他にも、 /etc/mail.rc や .mailrc に "set smtp" で指定すべしという情報もよく見かけるが、こちらも有効にならない。


何が足りなかったのか

上記の Ubuntu なインスタンスで使っていたのは、GNU Mailutils だったのですが、他所のサイトで調べていくと CentOS などでは "yum install mailx" とインストールされていて、ああ、mailutils よりリッチなやつを使うのか、と気づきました。

で、Ubuntu だと apt パッケージで用意されているので。


$ sudo apt-get install heirloom-mailx

とインストールしてから、メールコマンドを実行すると、"-S" オプションを指定することで、問題なくSMTPサーバ経由でメールを送ることができました。


 -S variable[=value]
     Sets the internal option variable and, in case of a value option, assigns value to it.  Even though options set
     via -S may be overwritten from within resource files, the command line setting will be reestablished after all
     resource files have been loaded.

man はこんな感じ。


mailコマンド・オプション例

例として、nagios に設定した commands.cfg の mail コマンドを載せておきます。

# 'notify-host-by-email' command definition
define command{
        command_name    notify-host-by-email
        command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" -S "smtp=smtp://(SMTPサーバ名):(ポート)" -r (送信元メールアドレス) $CONTACTEMAIL$
        }

# 'notify-service-by-email' command definition
define command{
        command_name    notify-service-by-email
        command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" -S "smtp=smtp://(SMTPサーバ名):(ポート)" -r (送信元メールアドレス) $CONTACTEMAIL$
        }

とまぁ、こんな感じですかね。

それでは!=͟͟͞͞(๑•̀=͟͟͞͞(๑•̀д•́=͟͟͞͞(๑•̀д•́๑)=͟͟͞͞(๑•̀д•́


[改訂第3版]Linuxコマンドポケットリファレンス

[改訂第3版]Linuxコマンドポケットリファレンス

2016/04/30

DUNLOP RUNSCOOT D307

ジョルノの後輪タイヤを DUNLOP RUNSCOOT D307 に交換した


備忘録的に、久しぶりにバイクのこと。

春先の話。いつもの近所のバイク屋さんにオイル交換に行ったのですが、ピットの方から「後ろのタイヤ、ほとんど溝が残っていないですよ」と指摘を受けました。

まぁ、認識はしていて、後輪タイヤはもうすぐ替えないと、とは思っていたものの、購入してもうすぐ5年の節目だったので、そのタイミングで大きな点検を受けて、その時にでも消耗品は一式交換しようとか考えていたのでした。


で、雨の後など路面がウェットになっていると、確かに滑りやすくなってきていたので、その場で交換してもらうことにしました。オススメされた DUNLOP RUNSCOOT D307 をそのまま採用。

ちなみに、うちのジョルノは後輪タイヤを約4,700kmでの交換となりましたが、ピットの方に聞くと、純正のDUROのタイヤは大体8,000kmくらいはもつとのこと。乗り方が悪いのかなとも思いましたが、よくよく考えると駐輪場でバイク間の隙間に入れる際に、いつも後輪を擦らせて入れていたのがよくなかったかなと反省。


DUNLOP RUNSCOOT D307


さて、タイヤ交換後、しばらく走行して、皮がムケたかなーという頃合のインプレですが、カーの時の食いつきが確実によくなり、安心して曲がれるようになりました。雨の日もカーブのマンホール等ではさすがに滑りますが、全体的に安定感は良好です。限界が上がったような感覚です。


元々、純正のタイヤとしては、DUROのタイヤがついていましたが、DUROは確かダンロップと提携してOEM生産しているくらいなので、質感的にはそんなに変わらないのかなぁと思いましたが、すいません全然別モノでした。

・・・と言いいつつも、交換前は溝がほとんど残っていないタイヤだったので、一概には言えませんけどね。。。


DUNLOP RUNSCOOT D307

交換後の RUNSCOOT D307 (後輪)。こんな感じのパターンです。溝たっぷり。


DURO

こちらは、DUROの純正タイヤ(前輪)。ヒビが見られるし、そのうちこっちも替えないとねぇ。


と、今日はここまで。

それでは!=͟͟͞͞(๑•̀=͟͟͞͞(๑•̀д•́=͟͟͞͞(๑•̀д•́๑)=͟͟͞͞(๑•̀д•́


2016/03/15

Ubuntu に Oracle Java (JDK) を サイレントモードでインストールする


メモ。

PPAで公開されている webupd8team のリポジトリを使えば、apt で Oracle Java (JDK) がインストールできるので便利。

なのですが、 Chef さんとかで自動化しようとすると、途中でインタラクティブにご出現されるライセンスの同意画面が大変やっかいなので、なんとかサイレントモードでインストールしたい。

で、どういう風にやったかというと、下記で何も問われることなくインストールできた。


# add-apt-repository -y ppa:webupd8team/java
# apt-get update
# echo debconf shared/accepted-oracle-license-v1-1 select true | debconf-set-selections
# apt-get -y install oracle-java8-installer

あとは、これを Recipe 化して無事自動化完了、というログでした。

それでは!=͟͟͞͞(๑•̀=͟͟͞͞(๑•̀д•́=͟͟͞͞(๑•̀д•́๑)=͟͟͞͞(๑•̀д•́


参考


オススメ (一部は、最近読んでいる本とも言う)
Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus) クラウド Amazon EC2/S3のすべて~実践者から学ぶ設計/構築/運用ノウハウ~ [Web開発者のための]大規模サービス技術入門 ―データ構造、メモリ、OS、DB、サーバ/インフラ (WEB+DB PRESS plusシリーズ) エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド [24時間365日] サーバ/インフラを支える技術 ~スケーラビリティ、ハイパフォーマンス、省力運用 Linux-DB システム構築/運用入門 (DB Magazine SELECTION) キャパシティプランニング ― リソースを最大限に活かすサイト分析・予測・配置 スケーラブルWebサイト 実践ハイパフォーマンスMySQL 第3版 ウェブオペレーション ―サイト運用管理の実践テクニック (THEORY/IN/PRACTICE) SQLアンチパターン インターネットのカタチ―もろさが織り成す粘り強い世界― ハイパフォーマンス ブラウザネットワーキング ―ネットワークアプリケーションのためのパフォーマンス最適化 Linuxの教科書―ホントに読んでほしいroot入門講座 (IDGムックシリーズ)