Vueってなんなの?

おはようございますー。

最近弊社ではvue.jsなるものが賑やかしています。

導入が容易ということも手伝い、世間的にもなかなかに流行っているようです。

ということで、実装や構造的な云々はさておき、
とりあえず今まで使ったことのあるjQuery
「何が違うってどういいのよ」ってのが知りたくなったので
Wスカディエドモンで種火周回しながら調べてみました。多段HIT全体Q宝具は神。

php+javascriptでWebサイトを構築する的な前提で調べています。

ワッツ ザ・違い jQueryとVue

jQuery

javascriptによってページを構成する要素を操作*する。
*値の更新、要素の追加、削除

例えばテーブル構造の一覧を更新するときは、

  1. バックエンドに対象データをjsonで返すAPI構築して、
  2. フロントではAjaxAPI叩いてjson取得して、
  3. クラスかIDで対象テーブルを特定して、
  4. json解析して必要な分foreach回して追加&更新

こんなイメージ。

Vue

Javascipt上で保持しているデータと構成要素が紐づいている。
保持しているデータを書き換えると紐づく要素も自動で書き換わる。

jQueryの時と同じ想定を例に取っても、

  1. バックエンドに対象データをjsonで返すAPI構築して、
  2. フロントではAjaxaxiosってのを使う?)でAPI叩いてjson取得して、
  3. jsonを保持してるデータとして扱う

という感じで、わざわざforeach回して要素をごにょごにょする必要なし的な。
(まだ特に2,3のあたりの仕組みがよくわかってないです)

 

うん、確かに便利そうな感じがする。(合ってれば)

番外:vuex

vueとの組み合わせでvuexってやつもあるみたいなんですが、
【vuexを使わない】

  1. 一覧(親)から詳細(子)を開くとき、一覧で保持してる情報を詳細に渡す
  2. 更新する時も子から親にデータを渡す必要がある。
  3. 複雑になると受け渡しで憤死する

【vuexを使う】

  1. 一覧(親)も詳細(子)も同じデータ(store)を参照してるから受け渡し不要
  2. 更新時も親にはわたさなくてよい

くらいに今のところは解釈してます。あってる?ねえねえ合ってる?

なんか知ってるな

調べててvueの発想って
なんかに近いなーと思ったんですよ。考え方に覚えがあるというか。

で、これってその昔いた会社で、
Excelベースの集計帳票作ったときと同じ発想だなー」と。
発想と言ったらいいか、楽さというか。

当時の作ったものの構造

メインシステムのDBからデータを引っ張って集計するExcel帳票を作ってたんですよ。
構造的には下にあるような感じ。

【メインシート(帳票として使う)】
 セルに「データシートの何列目の数値を〜な条件で集計」みたいな関数を記述

【データシート】
 DBから引っ張ってきたデータを展開しておく

あとは適当に貼っつけた集計ボタン押すとODBCドライバ(ADOだっけ)
でDB接続して、データシートを更新するだけの作り。

そうすると帳票を構成するマクロ書かなくても、
データシートの更新するだけでメインシート内の集計値も更新されるお手軽帳票が作れるんですよ。

とんかつとDJって同じだったんだ!的なアレ

これってvueの発想に近いなと。とんかつDJアゲ太郎
「とんかつとDJって同じだったんだ!」
って閃く時の他人には理解できなさそうな「同じだったんだ!」を味わいました。

 

いや、わかってる、怒らない、怒るのはよくない。
色々違うのはわかってるけどなんか似た良さを感じたって話。

逆にjQueryはデータシートを元にエクセルVBAとかマクロで
「集計した値を〜セルに書き出し」みたいなソースを書いて帳票作ったときに近い感覚。

 

というわけで何これ怖い感は多少なくなりましたよ的な話でした。
(個人の感想です)

PHP勉強会@東京いってきたよ

おはようございます。

最近また料理をし出したので、
「これがあれば勝つる」と噂の創味シャンタン、Buyしました。

www.somi.jp

これマジで神がかってる。
使うだけで中華屋の味が再現可。アレンジなど不要です。

全ての自炊派にオススメします。
真実はコードの中ではなく白い缶の中にある。

みんな、創味シャンタンを信じろ。

■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□

というわけで件名通り、今まで

「行ってみようかなーどうしようかなーでもぼっちこええなー」

と思って避けてた技術系の勉強会に行ってみました!

 

今回は日本PHPユーザ会のメンバーが運営する

PHP勉強会@東京 | Doorkeeper

に参加してきました!(7/25の回)

phpstudy.doorkeeper.jp


後輩のYくん、いや、Yさんのケツに張り付くことで恐怖を軽減です。

細かい内容は公式とかから頑張って掘り起こしてもらうとして
ざっくり感想

セルリアンタワーかっけえ。まずビル名がかっけえ。
・雰囲気は和やか
PHP歴、年齢はかなり幅広い(今月始めましたーとか普通にいます)
・うちで使ってるフレームワーク(Laravel)の使用率はぼちぼち高い。
・LT中は軽い茶々あり(ガチのじゃないので安心安心)
・セッションは概念的なもの、ガチ実装レベルの話(この中でも範囲広い)まで多様
・ピザが食える。飲み物付き。1000円。

という感じで、普段実装しない僕のようなエンジニア(弱)って感じの人でも気兼ねなく参加できる勉強会です。

「え?実装しない?あー、書けない人?プークスクスプー」
とか(少なくとも面と向かっては)言われません。

あと途中の懇親会でも他社&場合によっては会場を貸しているGMO Yoursの人と話す機会もある(一緒に参加したYくんは引くほど交流してました)ので、営業寄りの人も参加してみるのも大いにありかと。

むしろ初心者、入門クラスの人ほど行ってみたらいい刺激になると思います。

僕はだいぶ恐怖心薄れたのでこれからは色々参加してみようと思います。

 

というわけで勉強会行ったことない人、
ピザと飲み物の時点で元は取れます。

恐れず是非参加してみてください。

創味シャンタンを信じる俺を信じろ。

ひこひこ的エンジニア列伝〜その1〜

先日友人の結婚式に行ってきました。

今まで人前式ばっかだったので、実は所謂スタンダードな教会式は初めてでした。
あれ、神父さんって、海外の方が多いんかな?
「海外の人が話す日本語のモノマネ」みたいな口調で式が進むもので、
いいシーンなはずなのに笑いをこらえるのが大変だったヨーw

判例モッ↑トモ トオトイムォ↑ノ↑ スォレハ~ アイデス

 いや式自体はいい式だったよ。ええ。とても美味しかった。

 

という感じで古い友人に会ったりで懐古気味なので、たまには気分を変えて、
今までの経歴で出会った、かつ影響を受けたり
考えさせられたエンジニア(ほぼ)の人を紹介してみたりします。

例によって頭に浮かんだことつらつら書くのでたぶんまとめもオチもないヨーw

No.1:DBマスターIさん

この人は「仕事上での人との関わり方」
みたいなことについて意識するきっかけになった人。

昔いた会社で使ってたDBの、ごいすーな資格を持ってる人で。チューニングとか超うまい。
レベルが高すぎて全く話しについていけなかったけどw

その時の会社、たまに開発部もサポートで導入先に数ヶ月出張すんのね。
初めて話したのはそれで組んだときかな。

実はこの人、初め超怖かったんだわw
近寄り難いというか。偏屈というか。会社内でもそんな扱いだったように思う。

でも出張先で一緒に仕事したりして慣れてきて話すようになったらさ、
結構優しい人なんだわw
なんだよビビらせやがってw

ともかくどうやら気は許してくれたみたいで、会社に戻ってもたまに話したりしたなー。
僕が幹事&司会の飲み会でIさんが茶々入れてきたりね。
司会でいっぱいいっぱいの新人に女性関係の話題ぶっこむのは鬼畜だよIさんw

そのとき周りで先輩らが「あのIさんが人と関わりを…。どうやったんだ」とか言ってたの覚えてる。

どうも何も、Iさんも先輩らも、お互いろくに関わろうともしなかっただけだよねーw
僕も機会がなかったら同じだっただろうけどナw

そんな風に思われてることは、漠然と「勿体無いなー」と思ったのね。

すごい力のある人なのに、実はわりと面倒見もいい人なのに。
まあIさんの上司とかへの態度にも大いに問題あるから色々自業自得的なとこもあるけどw

その辺から、仕事上での人との関わり方について色々考えることが増えた気がすんのね。

例えばさ、よくフィクションとかでもあるやつ。
「俺はあいつと同じくらいできるのに、上とうまくやってるだけで・・・」的な。

その「だけで」と言ってることがうまくできない事については考えないのかなと。
「だけで」なんて軽く見てることでの差が不満ならサクッと自分もやればいいじゃないw
意識的にか無意識は置いておいて、周りとうまくやるために支払ってる代償もあるんじゃないかな?と。
そういうことをぼや〜っと考えるようになった。

新卒で入った当初「仕事に人間関係とか必要ない」って考えてたけど、
確実にその辺からちょっとずつ考え方が変わって行ったかな。

でもだからってそれが正しくて、みんなそうしようってのも違うと思うけどさ。
Iさんもうまくやれてはなさそうだったけど、前述の不満を言うタイプでなく(少なくとも知る限りは)「俺はこれでいい」て人だったし。職人的なね。
その考え方も大いにアリだと思う。色んなだからね、みんな。

 

あかん、やっぱよくわかんなくなってきたわw
着地点考えてから書くようにしないとネーw

「じゃあ僕が"色んなタイプの人とそこそこうまくやれます"的な人はになったら有用かな?」
「話し方とか、色々気をつけてみようかな」
とか、もやもや〜と思うようなった新卒2年目のあの頃でした。

もうこれ以上時間使えないのでおしまいwじゃーねーw 

sarコマンドについて 〜燃えるワンマンフォース編〜

ペルソナ5Aのアニメ、妙に作画よくて毎週大満足してます。

BGMもキャラの動きもゲームそのままやってくれてるんでゲーム勢の僕は大満足なんですがアニメから入った勢からみたらどうなんかな〜と思ったり思わなかったり。

とりあえず円盤売れたらアペンドか完全版出してくれさい。

 

□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■

 

というわけで今日はサーバのメモリやCPUの状態を調べるコマンドを使ったので軽くご紹介します。

sar イズ 何?

Linuxの負荷状況をモニタリングしてくれるコマンドです。

弊社ではよくmuninを使っているのですが、その代わりとして
”sar”コマンドが利用可能です。メモリ、CPU使用率など割と色々見れます。

使い方 

基本的にはlinux環境であればyumでインストールすればすぐ使えます。

$ sudo yum install -y sysstat

ていうか筆者はインストールせずに使えたのでデフォで入ってる疑惑あり。

ちょっと試してみましょう。

基本的にはsarのあとに出力間隔、回数を指定するだけです。

今回は5秒に1回を4回の例。メモリを見るときのrオプションを添えて。

$ sar 5 4 -r
00時00分01秒 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit
180025 69228 979348 93.40 11256 454836 2060276 69636 3.27 32000 180030 43184 1005392 95.88 12328 456884 2060276 69636 3.27 32000 18時0035 40304 1008272 96.16 13168 458564 2060276 69636 3.27 32000 18時0040 37056 1011520 96.47 13932 459952 2060276 69636 3.27 32000 平均値: 89600 958976 91.46 33046 337958 2060276 69636 3.27 31455

空きメモリ、バッファやキャッシュにまわっている分もモニタリングできます。

平均を出してくれるのも地味に嬉しいです。

sarさんのいいとこ

メモリやCPUの使用状況をみるだけであればfreeコマンドなどもあります。

ただし、これがグンバツな点は

「過去日に遡ってデータを保持してくれている」
というところです。

 /var/log/sa(設定や環境で差異あり)に「sa + 日付」という名称で過去分のファイルがあるので、それを指定して中を見ることが可能です。

28日のメモリ情報はこんな感じでみます。

$ sar -f /var/log/sa/sa28 -r
183001     37056   1011520     96.47     13932    459952   2060276     69636      3.27     32000
平均値:      89600    958976     91.46     33046    337958   2060276     69636      3.27     31455

過去ってどんくらい? 

設定によります。デフォだと7日分です。

/etc/sysconfig/sysstatが設定ファイルなので、そこのHISTORYの値を変更します。

ここを28日以上にすると、/var/log/sa以下の保持形式が代わり、年月単位で格納されるようになります。

28未満:/var/log/sa/sa{DD}
28以上:/var/log/sa/{yyyyMM}/{DD}

設定変更はまだ試せてないけどナw

 

というわけで導入も楽だし機会があったら使ってみてねー

 

参考:

https://qiita.com/makaaso/items/6e27a2f0948241891667

https://qiita.com/fk_2000/items/340ec95b77f73a1f3ad9

https://qiita.com/kawakamasu/items/0f67ffc2650f074b497a

 

明日なんとかしたいオレオレ証明書

おはようございます。

人様がKindle Paperwhite買った直後に新型ipadを4万弱で出してくるのは人道的にどうなんでしょうか。ペン対応だし。

もう少し早かったら半年前に買い換えたPCも色々考慮の余地があったのに・・・。

 

□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■

最近初めてapacheサーバのテスト用サーバ証明書
所謂「自己証明書」もしく「オレオレ証明書
といわれるものについて作業したので、それについてまとめてみようと思います。

どうでもいいけど自己証明書って書くとなんか哲学チックすね。

オレオレ証明書 イズ 何?

apacheサーバで通信の暗号化(SSL通信)を行うためには、「信頼できるサーバです」と証明するためのサーバ証明書が必要となります。

本来的にはCA(認証局)に署名をしてもらう必要がありますが、この署名を自ら行って作成された証明書を「オレオレ証明書」と呼びます。

何が違うか

SSL証明書の役割としてはざっくり以下があります

1.通信の暗号化

2.通信相手(証明書設置側)の保証、存在証明(これについてCAが署名)

3.通信経路上での改竄の検出

ちなみにCAに署名をしてもらう正規の証明書は基本有料です。
オレオレ証明書でも1はできますが、それ以外はオレオレ証明書ではできません。

あとブラウザ毎に細部は異なりますが

「安全じゃないかもしれへんで。ええんか?知らんぞ?」的な画面をくぐり抜けないとアクセスできません。

なのでセキュリティ的にも運用的にも可能な限りCAに署名してもらった正式なものを使いましょー。

オレオレ証明書の生成

とはいえ、プロジェクトによってはどうても必要な場面が出てきます。

こっからはどんな感じに作ってくか見てみましょー。

試した環境はApache2.2.15す。バージョンによっては微妙に違ってくると思いますが、工程的には同じです。

秘密鍵の生成とパスフーレズの解除

まずOpenSSLコマンドを使って秘密鍵を生成します。

コマンドはopenssl genrsaです。これでRSA暗号化方式の鍵が生成できます。

コマンドを打つとパスフレーズの指定を求められますので、任意の値に設定してください。(この段階で無しにはできない)

openssl genrsa -des3 -out hogehoge.jp.key 2048

ここでつけたオプションですは以下の意味です。

-des3:暗号化方式の指定

他)DES, DES3, AES128, AES192, AES256 

-out hogehoge.jp.key:ファイル名指定(> hogehoge.jp.key でもいける模様)

2048:鍵長の指定(この場合は2048bit。1024だと不安視されたり)

 

つぎに生成時に指定したパスフレーズを解除します。

rsa -in hogehoge.key -out hogehoge.key

上記の入力でパスフレーズを求められますので、未入力で登録し直します。

パスフレーズはセキュリティ的にはもちろんついていた方がよろしいですが、ついたままだとapacheの再起動時にパスフレーズの入力を求められます。
sshでログインしてる際は問題ないですが、不意のサーバ再起動でapacheの起動が止まってしまうので、その辺はプロジェクト次第でしょうか。

公開鍵(csr)の生成

次は生成した秘密鍵を元に公開鍵を生成します。

コマンドはopenssl reqです。

下記意味合いとしては「hogehoge秘密鍵(key)を元にhogehoge公開鍵(csr)を作るぜー」です。

openssl req -new -key hogehoge.key -out hogehoge.csr

コマンドを打つとサーバ識別情報(DN)として色々聞かれます。

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:Minato-ku
Organization Name (eg, company) [Default Company Ltd]:heisya
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:hogehoge
Email Address []:

DNの細かい意味はこちらをどうぞ

OpenSSLでキーペアやCSRを作成する手順 - Qiita

証明書の生成

いよいよ証明書です。

openssl x509コマンドを打ちましょう。

意味としては「hogehoge公開鍵(csr)とhogehoge秘密鍵(key)を元に署名した証明書(crt)を作るぜー」です。まんまですね。

openssl x509 -in hogehoge.csr -days 3650 -req -signkey hogehoge.key > hogehoge.crt

ちなみに証明書には期限の設定が必要です。

ここではdaysオプションで3650、つまりおよそ10年間の期限設定をしてあります。
CA証明書だと1年か2年とかになるかと。

apacheへの適用

まずは作ったものを移動させましょう。

mv hogehoge.crt  /etc/pki/tls/certs/hogehoge.crt
mv hogehoge.key /etc/pki/tls/private/hogehoge.key mv hogehoge.csr /etc/pki/tls/hogehoge.csr

/etc/pki/tls以下、もしくは/etc/httpd/conf.dとかに置くのが一般的(っぽい)ですが、

ぶっちゃけ外から見えなくてapacheから参照できる場所ならどこでもいいはず。

まあ誤操作で削除とかしないようにあんま変なとこには置かない方がよろしかと。

 

あとはapacheのconfファイルに参照先の指定だのを書いてきます。

SSLポート(通常443)の設定に以下を追加します。

SSLEngine on ←SSL使うぜー
SSLCertificateFile /etc/pki/tls/certs/hogehoge.crt ←証明書はここだぜー
SSLCertificateKeyFile /etc/pki/tls/private/hogehoge.key ←暗号鍵はここだぜー
SSLVerifyClient none ←接続元(クライアント)の検証なんかしないぜー
SSLVerifyDepth 0 ←CA証明書とかいらないぜー

SSLVerifyClientとかの細かい説明は脱線になるので今回は端折ります。

あとは設定ミスがなければapache再起動でいけるはず。

sudo /etc/init.d/httpd graceful

ポート開けんの忘れないでね!

 

ていう塩梅。

ちょっと資料やサイトによってcsr、crtの日本語呼称がぶれてるんでその辺の説明に異論ある方もいるかと思いますが許してつかあさい。

参考:

SSLを利用するための自己証明書(オレオレ証明書)の設定メモ - Qiita

Apacheでのクライアント認証の仕組み - Qiita

オレオレ証明書を使いたがる人を例を用いて説得する - Qiita

今夜勝ちたいFTPサーバ構築

おはこにゃばちにんこ、ひこひこだよ。

最近はもっぱらメタルギアサヴァイブをやってます。

最初はタワーディフェンス&サバイバルものって初めてな上に、迫り来る敵の大群にパニクってましたが慣れてくるといい感じのハラハラ感が面白い。

↓メインの敵、映画泥棒ことワンダラーさん

f:id:plm_hikohiko:20180329170536p:plain

↓こんな感じでぞろぞろ向かってきます 

f:id:plm_hikohiko:20180329171252j:plain

最初は食料も物資も全然無い状態から始まり、武器も鉄パイプを基にした槍一本ですが、序盤でたどり着くベースキャンプを開拓、強化していくうちに色々作れるようになってきます。
かわいい動物たちを飼育することも。(食料)

タワーディフェンス、サバイバル、開拓、探索と色々と楽しめて5000円以下(メタルギア過去作のエンジンを流用したせいか安い)なので「新しいゲーム欲しいけどフルプライスはなー」なんて人にもオススメ。

マルチでわいわいやるのも面白いっすよ!

 

□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■

 

ていうわけで一応会社のブログなので真面目なことも書くよ!

今回は仕事でFTP鯖立てたのでざっくりまとめ。いつものごとく今夜勝てるだけのレベルの内容なので詳しい人は別に見なくていいよ!

FTP イズ 何?

ざっくり言うとファイルのやり取りをするための決まり事のことです。
この決まり事に沿うことでサーバに対して外からファイルを置いたり消したりすることが可能です。

イメージ的には、家に専用の扉を作ってそこから屋内に入って物を置く感じです。
あとは入れる人、部屋などを限定したり出来ます。

 

ただし、素のFTP接続はセキュリティ的には正直アレです。
しかしながら必要に迫られることはあったりします。

なので今回は、せめてもの対応ということで、
以下の要件でLinuxサーバでFTPサーバを構築していきます。

sshログインは出来ない専用ユーザを作る
・接続できるディレクトリを限定する
・接続元のIPアドレスを限定する

STEP1:vsftpdのインストールと設定

linuxサーバでftpを使うためにはvsftpdというものをインストールする必要があります。

yumが使えればとっても簡単。

$ sudo yum -y install vsftpd

次に仮想ユーザでログインを出来させるように、設定をいじります。なんでもかんでも詳細に書くと長くなるので抜粋して書くよ!

$ sudo vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO # NOで匿名ユーザのログインを拒否
chroot_local_user=YES # YESでユーザ毎のrootディレクトリ上層へのアクセスを禁止
guest_enable=YES # 接続を全て仮想ユーザとみなす
guest_username=vftp # 仮想ユーザにマッピングされるユーザ名(操作がサーバ上はユーザ名義になる)
user_config_dir=/etc/vsftpd/user_config # 仮想ユーザの設定を格納するディレクト

細かい設定(重要なものも含む)は僕が参考にしたサイトの方が間違いないよ()

参考1:FTPサーバーの設定 - Qiita

参考2:OS上にいないバーチャルユーザーを使ってFTP接続する | A Day In The Boy's Life

STEP2:専用ユーザ(仮想ユーザ)の作成

ていうことで次はOS上のユーザと外から接続する際のユーザを作ります。
サーバ上でのユーザと外から見えるユーザ(仮想ユーザ)を作って紐づける感じ。

まずユーザにマッピングされるユーザと所属グループを作成します。
ここではvftpグループのvftpさんを作ってます。
sshできないようパスワードは設定しません。

$ groupadd vftp
$ sudo useradd -g vftp vftp

場所移動して仮想ユーザの設定を作ってきます。

loginというファイルを作り、そこに仮想ユーザ名とパスワードをセットで記述します。

$ cd /etc/vsftpd
$ sudo vi login {仮想ユーザ名} {パスワード}

記述したら今度はそれDBファイル化。あとついでに権限変更。

$ sudo db_load -T -t hash -f login login.db
$ sudo chmod 600 login
$ sudo chmod 600 login.db

db4-utils入れといてね。

ほんでvsftpd.confのuser_config_dirで指定したディレクトリに直下に外から接続するときに使うユーザ名のファイルを作り、rootディレクトリを指定します。

$ sudo mkdir user_config
$ sudo vi user_config/{仮想ユーザ名}
local_root={仮想ユーザが行動できるディレクトリの最上層ディレクトリ}

これをちゃんと設定してchroot_local_user=YESにしておけば変なところまでいけません。

STEP3:PAMの設定を変更

PAMって正直あんまよくわかってないけど、ここをいじって認証設定をSTEP2でつくったlogin.dbを見るようにします。デフォの設定は今回はコメントアウトしてます。

$ sudo vi /etc/pam.d/vsftpd
auth required pam_userdb.so db=/etc/vsftpd/login account required pam_userdb.so db=/etc/vsftpd/login

STEP4:vsftpdの起動

一通り終わったので起動します。

$ sudo service vsftpd start
vsftpd 用の vsftpd を起動中:                               [  OK  ]

無事起動に成功。

STEP5:ポート開けとip制限

ここまできたら指定IPに対して必要なポートを開けたら接続できるようになります。

今回はアクティブモードでFTP接続するので21番だけ開けてますが、パッシブモードの場合はvsftpd.confでパッシブモードを使えるようにして、解放ポートの範囲を決めた上でiptablesで当該ポートも解放してあげる必要があります。

$ sudo iptables -D INPUT -s {指定IP} -p tcp --dport 21 -j ACCEPT
$ sudo service iptables save
$ sudo service iptables restart
iptables: チェインをポリシー ACCEPT へ設定中filter         [  OK  ]
iptables: ファイアウォールルールを消去中:                  [  OK  ]
iptables: モジュールを取り外し中:                          [  OK  ]
iptables: ファイアウォールルールを適用中:                  [  OK  ]

ちな、ポート解放の際、クラウドサーバによってはサーバとは別にサービス側でファイアウォールかけてる場合があるので、その際はそちらの解放も必要になります。

IP指定しないで解放は開けっぴろげな感じになるのでできる限りやめような!お兄さんとの約束だ!

 

これで問題なければとりあえずFTPは繋がるはず!たぶんね!!

今夜勝ちたいpostfix&リレー配送

ジム通いしての筋トレ始めました。
主目的は肩こりの解消と腹筋の強化。

インナーマッスルが弱いとやっぱりダメみたいだしね。
週2~3回通い、メニューは大体以下のような感じ

準備
・ストレッチ(15分ほど)

マシントレーニング
・チェストプレス(胸筋)
・ローワーバック(腰筋)
・ラットプルダウン(背筋)
アブダクション(お尻、外腿)
・レッグプレス(脚)
・アブドミナル(腹筋)
各12~20回×3セット

その他
・ランニングマシン 30分(6mph・傾斜6)
 or スタジオレッスン(45分)
※元々痩せる目的ではないのでランニングはそこまで重視してない

回数に変動があるのは、ジムの体調測定器みたいなのが出してくれる最適回数に合わせてるためです(`・ω・´)

スタジオレッスンも定番のエアロビからヨガ、コアマッスル重視まで広くあって結構楽しいです。

終わったらプロテインを飲みます。ウィダーのココア味美味しい。
夏頃には成果出てくるかな?早くマグりたい。

■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□

今回は予定を変更して今月実施した
postfix&リレーサーバを利用したメールリレー設定」についてまとめたいと思います。

詳しい解説でなく「とりあえず仕上げたい!今夜勝ちたい(早く帰りたい)!」人向け。

なお、本ブログではCentos7系での設定を前提として記載していきます。
バージョン違いや他OSの方はその辺読み替えてってください。あとpostfixそのもののインストールとか稼働は触れないので自分でやってね!

ざっくり概要

サーバ内にpostfixを設定してメールの送受信を行っていることは多いと思いますが、
送信の際、他のメールサーバを経由(リレー)することが可能です。
昔は色々と意味があったようですが、今ではメリットは減ってきているようです(ちょっとした高速化&スパム対策)

大まかに以下の項目を整備していきます。

メールサーバ側

1.メールサーバ&リレー用ユーザの用意

メインサーバ側

2.cyrus-saslのインストール
3.認証ユーザ情報の整備
4.postfix設定の修正

1.メールサーバ&リレー用ユーザの用意

メールをリレーして配信するという形式上、メールを宛先に送信するメールサーバが必須です。自分でメールをたてずにどこかでメールボックスなどを契約する場合は特にポートがどうみたいな設定はいらないはずです。
また、このメールサーバにリレーする際に必要な認証ユーザの作成も必要です。
正確に言うと作らなくてもリレーは出来ますが、常用の既存ユーザを使うと、そのユーザに常にリレーしたメールが送信として残ってしまうので、特に意図がなければ新規で作ってしまいましょう。

この段階では以下を控えておきましょう

・ ホスト名(IPアドレスでもOK)
・ サブミッションポート(通常587)
SMTP-AUTH対応方式(CRAM-MD5, PLAIN, LOGINとか)
・認証ユーザID&パスワード

2.cyrus-saslのインストール

ここからはメインサーバ側での作業です。
メインサーバから1.で用意したサーバへの認証にSASL認証という機構を使用します。
参考:SASLの設定 - Qiita

SASL認証に必要なcyrus-saslパッケージをインストールし、saslauthdの起動&自動起動設定を行います。
cyrus-sasl-md5、cyrus-sasl-plainがないと安全な認証が出来ません。yumリポジトリ次第ではcyrus-saslをインストールするだけでも入ってくるかも?まあ手動で指定した方が安心です。

$ sudo yum install cyrus-sasl
$ sudo yum install cyrus-sasl-md5 cyrus-sasl-plain $ yum list installed | grep sasl ←インストールの確認 cyrus-sasl.x86_64 2.1.23-15.el6_6.2 @base cyrus-sasl-devel.x86_64 2.1.23-15.el6_6.2 @base cyrus-sasl-lib.x86_64 2.1.23-15.el6_6.2 @base cyrus-sasl-md5.x86_64 2.1.23-15.el6_6.2 @base cyrus-sasl-plain.x86_64 2.1.23-15.el6_6.2 @base $ sudo /etc/init.d/saslauthd start ←起動
saslauthd を起動中: [ OK ]
$ sudo chkconfig saslauthd on ←自動起動設定
$ chkconfig --list saslauthd ←自動起動設定の確認
saslauthd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

3.認証ユーザ情報の整備

2.で設定したパッケを使用してメールサーバに認証するユーザ情報の設定をします。

/etc/postfix/sasl_passwdの作成&ハッシュ化

サーバ、認証ユーザ、パスワードを記載したものを/etc/postfix/sasl_passwdとして作成します。ここで、1.で控えたホスト名などの情報を設定します。
記載したものをハッシュ化して本項目は終了です。

$ sudo vi /etc/postfix/sasl_passwd
[ホスト名]:587 {認証ユーザ}:{パスワード}
$ sudo postmap /etc/postfix/sasl_passwd

4.postfix設定の修正

大体の下ごしらえは終わったのでいよいよpostfixに設定を加えていきます。

postfixの設定としてetc/postfix/main.cfがあるのでこちらを編集していきます。
以下を追記、編集して下さい。

$ sudo cp /etc/postfix/main.cf /etc/postfix/main.cf.org
$ sudo vi /etc/postfix/main.cf
relayhost = [ホスト名]:587 ←リレー先のホスト&サブミッションポート
smtp_sasl_auth_enable = yes ←SASL認証の使用可否(yes or no)
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd ←認証用ユーザ&パスワード設定ファイルの場所
smtp_sasl_mechanism_filter = cram-md5, plain, login ←リレー先で使用する認証方式の候補(記載順に優先される)
smtp_sasl_tls_security_options = noanonymous, noplaintext ←認証方式の制限(ここでは匿名、平文を使う方式を制限)
smtp_tls_security_level = may ←tls暗号化仕様に関する設定(mayは試行してダメなら平文で通信。encryptだと強制)
smtp_tls_CApath = /etc/pki/tls/certs/ca-bundle.crt ←サーバ証明書の格納場所

参考:Postfixで外部のサーバでメールをリレーさせる - Qiita

他にも設定はありますが今回は上記を設定しました。
smtp_sasl_mechanism_filter、smtp_tls_security_levelは要件によっていじりましょう。

smtp_sasl_mechanism_filterは外部のメールサービスを契約して使用する場合は、対応している方式を確認して設定してください。(極力平文での認証は避けたいところですががが)
smtp_tls_security_levelあたりはセキュリティを考えるとencryptにしたいところですが対応していないメールサーバもあるのでmayにしてあります。

試行

ということでここまで設定出来たらpostfixとsaslauthdを再起動してsendmailコマンドなどでメールをしてみましょう。

$ sudo service saslauthd restart
saslauthd を停止中: [ OK ]
saslauthd を起動中: [ OK ]
$ sudo service postfix restart
postfix を停止中: [ OK ]
postfix を起動中: [ OK ]
$ sendmail hogehoge@example.com
From:no-reply@example.com
To:hogehoge@example.com
Subject:Test
テスト配信メールです。
リレー成功してますか?
.

maillogを確認してリレーの結果を確認しましょう。

postfix/smtpのレコードで

relay={指定したメールサーバのホスト}[メールサーバのIPアドレス]:587 ~ status=sent

となっていれば成功しているはずです。

ちなみに

SASL authentication failed; cannot authenticate to server ~: no mechanism available

みたいなエラーが出ている場合はSASLのパッケージが足りていないので確認してみましょう。(実際、最初試した際にcyrus-sasl-md5 cyrus-sasl-plainが入ってなくてエラー出しました

 

ということでざっくり説明でした。
まだ細かい設定はありますがこれでとりあえず動くはず。
ダメな場合は設定ももちろんですが、サーバのポート(通常だと25、587番)とかも怪しいと思うのでそのあたりも見てみましょう。

 

今日も平和!