hide's memo
17 2月, 2022

json を見やすく整形表示

以下のコマンドを実行

python -mjson.tool input.json

 

項目がアルファベット順に並んでしまい、それを避けたい場合

 cat input.json | python -c "import json, sys, collections; print(json.dumps(json.loads(sys.stdin.read(), object_pairs_hook=collections.OrderedDict), indent=4))"

以下のURLを参考にした
https://github.com/lukepark327/onechain/issues/40

16 2月, 2022

mail

telnet でメール送信

認証なし)

telnet メールサーバ 25
EHLO localhost
MAIL FROM:<foo@hoge.com>
RCPT TO: <foo@hoge.com>
DATA
subject: test
from: foo@hoge.com
to: foo@hoge.com
this is test.
.
quit

 

PLAINでSMTP認証

telnet メールサーバ 25

EHLO localhost
AUTH PLAIN \0ユーザ名\0パスワードを base64でエンコードした文字列
MAIL FROM:<foo@hoge.com>
RCPT TO: <foo@hoge.com>
DATA
subject: test
from: foo@hoge.com
to: foo@hoge.com
this is test.
.
quit

 

LOGINでSMTP認証

telnet メールサーバ 25
EHLO localhost
AUTH LOGIN
ユーザ名をbase64エンコード
パスワードをbase64エンコード
MAIL FROM:<foo@hoge.com>
RCPT TO: <foo@hoge.com>
DATA
subject: test
from: foo@hoge.com
to: foo@hoge.com
this is test.
.
quit

 

LOGINでSMTP認証 CMAM-MD5でSMTP認証

以下の処理シーケンスでデータを送信する

 

16 2月, 2022

コマンドラインでHTTPS

[English]

以下のようにサーバに接続する。

openssl s_client -connect サーバ:443

以降は通常のHTTP接続できているので、GET等を発行する。

 

SNIで稼働しているWEBサーバの場合、以下のように指定する。

openssl s_client -connect サーバ:443 -servername サーバ名
16 2月, 2022

シェル(引数で与えられた年月日の範囲±1日の範囲の文字列を得る)

[English]

引数で与えられた年月日の範囲±1日の範囲を取得し、それをループで回すシェル。

#!/bin/sh
START=$1
END=$2


START_1DAY_BEFORE=`date '+%Y%m%d' -d "1 days ago ${START}"`
END_1DAY_AFTER=`date '+%Y%m%d' -d "-1 days ago ${END}"`


echo $START_1DAY_BEFORE

for j in {0..10000}; do
    TARGET_YYYYMMDD=`date '+%Y%m%d' -d "-$j days ago ${START_1DAY_BEFORE}"`
    echo ${TARGET_YYYYMMDD}

    if [ ${TARGET_YYYYMMDD} -gt ${END_1DAY_AFTER} ]; then
       break
    fi
done
13 2月, 2022

sendmail

[English]

1.sendmaiの転送

sendmail.cf (sendmail.mcも同じ)のSMART_HOSTは、”[“の有無で動きが変わる。

[例]sendmailを、常に mailserver.hoge.comに転送したいと思ったときは、以下のように”[“をつけて記述する。

DS[mailserver.hoge.com]

もし、”[“をつけない場合、sendmailはMXレコードを検索して転送先を振り分けるので必ずmailserver.hoge.comに転送するとは限らない。

 

2. sendmailで特定ドメイン以外のメール転送を止める

(1)aliasを追加

#echo 'trash: /dev/null' >> /etc/aliases
#newaliases

(2)mailertable修正

#vi /etc/mail/mailertable
hoge.jp.com	smtp:[リレー先メールサーバ]
.	local:trash
(ここで、[]を付けているのは、MXレコードを引くのを避けるため)

(3)mailertableをDB変換

#makemap hash /etc/mail/mailertable < /etc/mail/mailertable

(4)sendmail再起動

#/etc/rc.d/init.d/sendmail restart

 

3. DNSが引けない環境で、sendmailで別のSMTPに転送

/etc/mail/service.switchファイルを作成し以下のように記述

hosts  files

13 2月, 2022

iptablesを使ったポート転送

[English]

iptablesを使って下図のようにポート転送を設定。

 

1.Linuxで転送設定を追加

# sysctl -w net.ipv4.ip_forward=1
# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

2.iptablesの定義を追加

#iptables -t nat -A PREROUTING -m tcp -p tcp --dst WAITING_ADDR --dport WAITING_PORT -j DNAT --to-destination DET_ADDR:DEST_PORT
#iptables -t nat -A POSTROUTING -m tcp -p tcp --dst DEST_ADDR --dport DEST_PORT -j SNAT --to-source WAITING_ADDR