2019年1月22日火曜日

AWS SESのsendRawEmailでスパム判定されてしまう件

sendRawEmailで添付ファイル付きのメールを送信したところ 以下のようなエラーで送信に失敗しました。 550-5.7.1 not RFC 5322 compliant: 550-5.7.1 'From' header is missing. 550-5.7.1 To reduce the amount of spam sent to Gmail, this message has been
$result = $SesClient->sendRawEmail([
        'Destinations' => [$to],
        'Source' => $from,
        'RawMessage' => [
            'Data' => base64_encode($message)
        ],
]);
このbase64_encodeがいけないようで外したところうまく動作しました。

2018年3月12日月曜日

SFTP専用ユーザーの作成

sftpで特定のディレクトリだけアクセス許可するユーザーの作成手順。 sshd_configに以下の行を追加。
Match User sftp_user
 PasswordAuthentication yes # パスワード認証を許可
 ChrootDirectory /home/sftp_user # sftp_userディレクトリをホームディレクトリにする
 ForceCommand internal-sftp # sftpコマンドに制限
さらにSFTPの接続を処理するサブシステムを、標準のsftp-serverからsshd内部のinternal-sftpに変更。
#Subsystem      sftp    /usr/local/libexec/sftp-server
Subsystem       sftp    internal-sftp
sshdを再起動。 ホームディレクトリはroot所有でrootのみread/writeのパーミッションが必要なため変更。
# chown root:root /home/sftp_user
# chmod 755 /home/sftp_user

2017年6月14日水曜日

Apache + OpenSSLでのCSR生成方法

Apache + OpenSSLでのCSR生成方法

①秘密鍵を生成する
openssl genrsa -des3 -out ./xxxxxx(ファイル名).key 2048
-des3:des3アルゴリズムのパスワードを保護する
パスフレーズを要求されるので忘れない
keyファイルが生成されます

②①で作成した秘密鍵ファイルからCSRを生成する
# openssl req -new -key ./xxxxxx(ファイル名).key -out ./xxxxx.csr

③証明書の署名要求が表示されるので諸々入力していく
# Country Name (2 letter code):JP(国コード)
# State or Province Name (full name) []:Tokyo(都道府県)
# Locality Name (eg, city) [Default City]:Shibuya(市区町村)
# Organization Name (eg, company) [Default Company Ltd]:会社・組織名
# Organizational Unit Name (eg, section) []:部署名
# Common Name (eg, your name or your server's hostname) []:認証を受けるホスト名
# Email Address []:
# Please enter the following 'extra' attributes
# to be sent with your certificate request
# A challenge password []:
# An optional company name []:
csrファイルが生成されます

2017年4月18日火曜日

header("Location:~")でページしない件

header("Location:~")で遷移しない。
header("Location:~")の前にhtmlがあると止まるそう。

<html><body>
<?php 
    header("Location: URL"); 
    exit(); 
?> 

こういうのはダメ。

2017年3月1日水曜日

今更ながらgitのお勉強(2) git pushで本番環境に自動デプロイさせる

ローカル環境で
git push origin master

本番環境で
git pull origin master

これが面倒なので、ローカルでgit pushさせたら本番でpushを検知して、自動でpullするようにする。

$ cd /home/gitrepo/○○.git/hook
$ vi post-receive
#!/bin/sh
cd /var/www/html/test
git --git-dir=.git pull
$ chmod a+x post-receive

これでローカルからgit pushすると本番に自動反映されるようになりました。

2017年2月27日月曜日

実行中のプロセスの調べ方

そもそもプロセスって何?・・・Linuxで動作中のプログラム。タスクとも呼ばれる。プロセスには親子関係があり、親プロセスが子プロセスを生む。

プロセスの確認
psコマンドで実行します。まずはオプションなしの単純なパターン

$ ps
PID TTY          TIME CMD
21750 pts/0    00:00:00 ps
30490 pts/0    00:00:00 bash

表示の意味
PID・・・プロセス番号
TTY・・・プロセスを実行している制御端末
TIME・・・CPUの消費時間
CMD・・・実行コマンド

すべてのプロセスを確認
$ ps a

すべてのプロセスをユーザーフォーマットで表示
$ ps au

制御端末のないものも含むすべてのプロセスをユーザーフォーマットで表示
$ ps aux

特定のプロセスを確認する(ここではhttpd)
$ ps aux | grep httpd
root      4250  0.0  0.1 413200 39388 ?        Ss   Feb26   0:55 /usr/sbin/httpd
nobody   23957 17.6  0.1 426296 45972 ?        R    17:23   0:01 /usr/sbin/httpd
nobody   23958  3.5  0.1 418328 37932 ?        S    17:23   0:00 /usr/sbin/httpd
nobody   23984 10.7  0.1 422560 41852 ?        S    17:23   0:00 /usr/sbin/httpd
nobody   23985  6.1  0.1 421728 41468 ?        S    17:23   0:00 /usr/sbin/httpd
nobody   23986  1.6  0.1 423500 41816 ?        S    17:23   0:00 /usr/sbin/httpd
nobody   23987  1.8  0.0      0     0 ?        Z    17:23   0:00 [httpd] <defunct>
nobody   23988  3.2  0.1 423456 42744 ?        S    17:23   0:00 /usr/sbin/httpd
nobody   23989  2.7  0.1 421540 41456 ?        S    17:23   0:00 /usr/sbin/httpd
nobody   23991 10.5  0.1 444792 63724 ?        S    17:23   0:00 /usr/sbin/httpd
500      24130  0.0  0.0 107456   940 pts/0    S+   17:23   0:00 grep httpd

STATのアルファベットの意味
R・・・稼働中
S・・・スリープ中
D・・・スリープ中(現在制御不可)
T・・・停止処理中、またはトレース中
Z・・・ゾンビ状態

以前起きたトラブル
nagiosからプロセス増加の警告
→ps aux | grep httpdでapacheのプロセスを確認
→スリープ状態のhttpdが大量にある

とりあえずは以下で対処できます
・killコマンドで個別にプロセスを消す
・apache再起動

2017年2月22日水曜日

setcookieした内容がリダイレクトで消える件

セットしたクッキーがリダイレクト後に消えてしまう
setcookie( "test", "value", time() + 1800 );
header("location:example.com");
デフォルトではカレントディレクトリが有効範囲らしいので
setcookie( "test", "value", time() + 1800, "/" );
としてドメイン配下をすべて有効にするとうまくクッキーが焼けました