Linuxサーバー構築・設定,PHP

550-5.1.1 The email account that you tried to reach does not exist. Please try 550-5.1.1

メールアドレスは正しいのにGmailから「550-5.1.1 The email account that you tried to reach does not exist. Please try 550-5.1.1」というエラーメールが返ってくることがあります。

他のメールアカウントから送信すると正常に送信されます。

SPFやDKIMの設定はされているのになぜ?となりましたが、以下が原因でした。

メール本文に問題あり

メール本文内に区切りのために「——–」「=======」などを多用すると上記のようにエラーが返ってくることが分かりました。

上記をなくすと無事エラーメールにはならなくなりました。

恐らくスパムメールのような扱いになってしまうんですね。

Linuxサーバー構築・設定

ログファイルなどlogrotaleで古いファイルが削除されてくれればよいのですが、何故か削除されずにずっと残りHDDを使い切ってしまうことがあります。

logrotaleの設定などをしっかり見直せば良いのですが時間が許さなかったりします。

また、PHPなどが生成するファイルやアップロードした画像ファイルなどでも同様可と思います。

そういう時に、一定期間経過したファイルを削除するコマンドを使います。

find /ディレクトリパス/ -name '*.log' -daystart -mtime +4  -delete

上記は4日経過したファイルを削除します。

Linuxサーバー構築・設定

例えば/homeディレクトリ内のディレクトリで容量を食っているディレクトリがあるとします。一つづつディレクトリを見ていくのは面倒です。

# du -s /home/* | sort -rn | head -10

上記コマンドで使用量の多い順に表示されます。

Linuxサーバー構築・設定,Postfix

たくさんのメールアカウントを作成して、転送先をリスト出力したいときは以下の作業。

# cd /home/
# more ./*/.forward >> /root/hogehoge.txt

Linuxサーバー構築・設定

ディレクトリ内の特定のLinuxユーザー権限のファイルを探したいときには以下(例:nobody)

find /home/ -user nobody

Linuxサーバー構築・設定

ディレクトリ内のファイルを一括削除したいのに、

bash: /bin/rm: Argument list too long

と怒られる場合があります。ファイル数が多すぎて削除できない!というエラーです。そういうときには以下。

echo *.html | xargs rm

.htmlのファイルを一括で削除したい時の例です。

Linuxサーバー構築・設定

apacheを再起動しようとするとプロセスが残ってしまい再起動できない場合があります。例えば以下のようなエラーのときです。

 [crit] (28)No space left on device: mod_rewrite: could not create rewrite_log_lock
 Configuration Failed

数個のプロセスなら1つづつkillしていけばよいのですが、数十となると手作業では厳しいです。そういうときには、

ipcs -s | grep apache | awk ' { print $2 } ' | xargs -i ipcrm -s {}

とやると、apacheなプロセスがすべてkillされます。

Linuxサーバー構築・設定

ps auxを実行して今稼働しているプロセスを調べますが、その表示順を変える方法です。

CPU使用率昇順

ps aux | sort -nk 3

メモリ使用量昇順

ps aux | sort -nk 4

プロセスの親子関係をツリー表示

順番とは関係ないのですが、プロセスの親子関係を知りたいときがあります。

ps -auxf

を実行すると、以下のようにツリー構造で表示されます。

ps -auxf
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         2  0.0  0.0      0     0 ?        S    11月29   0:01 [kthreadd]
root         4  0.0  0.0      0     0 ?        S<   11月29   0:00  \_ [kworker/0:0H]
root         6  0.0  0.0      0     0 ?        S    11月29   0:21  \_ [ksoftirqd/0]
root         7  0.0  0.0      0     0 ?        S    11月29   0:01  \_ [migration/0]
root         8  0.0  0.0      0     0 ?        S    11月29   0:00  \_ [rcu_bh]
root         9  0.0  0.0      0     0 ?        S    11月29   7:25  \_ [rcu_sched]
root        10  0.0  0.0      0     0 ?        S<   11月29   0:00  \_ [lru-add-drain]

Linuxサーバー構築・設定

各種ログの確認作業は本当に骨が折れます。そういう時に特定の文字列が含まれた行のみを抽出することができると、問題のあるログを見つけやすかったりします。

sed -n '/抽出したい文字列/p' ファイル名 > 出力するファイル名

Linuxサーバー構築・設定

yumでアップデートした後に、サーバーを再起動すべきか迷うことがあります。kernelのアップデートがあれば再起動は必須なのですが、それ以外でも再起動が必要な場合がある可能性があります。

そういうときは、

needs-restarting -r

再起動が必要ではない時

再起動が必要ではないときには以下のように結果が帰ってきます。

Reboot is probably not necessary.

再起動が必要な時

再起動が必要なときは以下のように結果が帰ってきます。

Core libraries or services have been updated:
  kernel -> 3.10.0-1160.80.1.el7

Reboot is required to ensure that your system benefits from these updates.

More information:
https://access.redhat.com/solutions/27943

Core libraries or services have been updated:
の下が再起動が必要な理由が書かれています。

こういうときにはサーバーを再起動します。