メールサーバの移行

イメージ
 自前のメールサーバを停止 これまで、自ドメインのメールサーバはVPS上に構築していた。 ・Ubuntu Server ・Postfix ・Dovecot ・spamAssassinと、BlackListの利用 Spam対策を行ってきたし、サーバ上でメールをトリガーにして各種プログラムを動かしたりしてきた。 メールサーバのメンテナンスは結構面倒くさくて、  ・Disk容量のチェック  ・不正アクセスのチェック  ・各種セキュリティパッチの適用 など、手間がかかる。 そこで、外部のサーバを利用することに…。 結構安くて使い勝手の良さそうなのが、「さくらのメールボックス」 3年契約で、3070円とな…。  メールアドレスは自分のだけなので、20GBまで利用可能!  (Gmailより大きいねぇ) ということで、早速契約。 アカウント設定を行って、既存のDNSを書き換える。WHOISも書き換えて完了。 SMTPとIMAPが利用できればOK。 ちょうど、GoogleがSPF設定していないと受信しないし、DKIMおよびDMARCに対応していないメールを弾くようになったので、対応しているのを確認。 さくらサーバ自体は、これまでお客さんのサーバとして何件も利用しているので、利用方法も難しくはない。  Webメールにも対応しているので、いざという場合にもありがたい。 ということで、各メールソフトの設定を変更。  PC(常時使用する3台)とタブレット、スマートフォンと台数は多いがそれ程手間はかからない。 問題は、旧サーバで送受信したメールの履歴だけれど、これはThunderbrdを使ってローカルに保存することで回避。  本当は、サーバtoサーバでMailboxに残そうとも考えたんだけど、古いメールはそれ程必要ないし、ローカルにバックアップしてあれば凌げるので、良しとする。 移行時にDNSの反映で若干時間がかかったものの、問題なく送受信できるのを確認して、作業完了。  これでメンテナンスの手間が減るので、安いもんです。

conky設定変更

環境表示ツールの再設定

 SSDを増設したが、NVMe M.2 は発熱が酷く、あまり温度が上がると、速度低下を起こすことが知られている。

ということで、自前のディスクも監視した結果を表示するようにした。


conkyというツールを、これまでも使用していてCPUの負荷状況、メモリの使用状況などをデスクトップに表示させていた。

でもって、自分の設定ファイルを紹介。

homeフォルダに [.conkyrc]というファイルを作成し、以下のような内容を記述

conky.config = {
  use_spacer = 'left',
  pad_percents = 3,
  background = false,
  double_buffer = true,
  draw_shades = true,
  font = 'Migu 1M DejaVu Sans Mono:bold:size=10',
  use_xft = true,
  alignment = 'top_right',
  gap_x = 10,
  gap_y = 40,
  own_window_argb_visual = true,
  own_window_argb_value = 50,
  own_window_type = 'normal',
  own_window_hints = 'undecorated,below,skip_taskbar,skip_pager,sticky',
  own_window = true,
  update_interval = 5.0,
}

conky.text = [[
${color orange}Hostname: ${color}${nodename}
${color orange}Kernel:   ${color}${sysname} ${kernel} on ${machine}
${color orange}Uptime:   ${color}${uptime}
${exec /usr/lib/update-notifier/apt-check --human-readable}
${hr}
${color orange}CPU:${color} ${freq_g} GHz
${color orange}CPU Temp:${color} ${execi 5 sensors | grep Tdie | cut -c 15-19} ℃
${color orange} 1:${color} ${cpu cpu1}% ${cpubar cpu1}
${color orange} 2:${color} ${cpu cpu2}% ${cpubar cpu2}
${color orange} 3:${color} ${cpu cpu3}% ${cpubar cpu3}
${color orange} 4:${color} ${cpu cpu4}% ${cpubar cpu4}
${color orange} 5:${color} ${cpu cpu5}% ${cpubar cpu5}
${color orange} 6:${color} ${cpu cpu6}% ${cpubar cpu6}
${color orange} 7:${color} ${cpu cpu7}% ${cpubar cpu7}
${color orange} 8:${color} ${cpu cpu8}% ${cpubar cpu8}
${color orange} 9:${color} ${cpu cpu9}% ${cpubar cpu9}
${color orange}10:${color} ${cpu cpu10}% ${cpubar cpu10}
${color orange}11:${color} ${cpu cpu11}% ${cpubar cpu11}
${color orange}12:${color} ${cpu cpu12}% ${cpubar cpu12}
${cpugraph}
${color orange}Name $alignr PID   CPU%   MEM%
${color lightgrey} ${top name 1} $alignr ${top pid 1} ${top cpu 1} ${top mem 1}
${color lightgrey} ${top name 2} $alignr ${top pid 2} ${top cpu 2} ${top mem 2}
${color lightgrey} ${top name 3} $alignr ${top pid 3} ${top cpu 3} ${top mem 3}
${color lightgrey} ${top name 4} $alignr ${top pid 4} ${top cpu 4} ${top mem 4}
${color lightgrey} ${top name 5} $alignr ${top pid 5} ${top cpu 5} ${top mem 5}
${color orange}Load average: ${color}${loadavg}
${color orange}Processes: ${color}${processes}
${color orange}Running:${color} ${running_processes}
${hr}
${color orange}RAM:  ${color}${mem}/${memmax}
${memperc}% ${membar 4}
${color orange}Swap: ${color}${swap}/${swapmax}
${swapperc}% ${swapbar 4}
${memgraph}
${hr}
${color orange}/     ${color}${fs_used /}/${fs_size /} ${fs_bar 6 /}
${color orange}SSD0:  ${execi 5 nvme smart-log /dev/nvme0 | grep temperature | cut -c 38-40 } ℃
${color orange}/home ${color}${fs_used /home}/${fs_size /home} ${fs_bar 6 /home}
${color orange}SSD1:  ${execi 5 nvme smart-log /dev/nvme1 | grep temperature | cut -c 38-40 } ℃
${hr}
${if_up enp9s0}
${color orange}IP:   ${color}${addr enp9s0}
${color orange}Up:   ${color}${upspeed enp9s0} ${color orange}Down:{color}${downspeed enp9s0}
${upspeedgraph enp9s0 32,140 000000 ffffff} ${downspeedgraph enp9s0 32,140 000000 ffffff}
${endif}
${if_up enxbc5c4c5be981}
${color orange}IP:   ${color}${addr enxbc5c4c5be981}
${color orange}Up:   ${color}${upspeed enxbc5c4c5be981} ${color orange}Down: ${color}${downspeed enxbc5c4c5be981}
${upspeedgraph enxbc5c4c5be981 32,140 000000 ffffff} ${downspeedgraph enxbc5c4c5be981 32,140 000000 ffffff}
${endif}
]]

これで、次のような表示がデスクトップ上に。

内容を解説すると
初めの、.config={ ... } に表示位置やフォントなど基本的な設定を記述。
.text = [[ ... ]] に、表示内容を設定

CPUの温度表示


${execi 5 sensors | grep Tdie | cut -c 15-19} ℃

の部分は、sensors コマンドの結果を、grepで検索(Tdieを含む行)
でもって、15桁目から19桁目を5秒毎に出力 という意味になります。

そもそも、sensorsコマンドは、lm-sensorsをインストールしないと使用できないので以下の手順が必要

$ sudo apt install lm-sensors
$ sensors
k10temp-pci-00c3
Adapter: PCI adapter
Tdie:         +52.4°C  (high = +70.0°C)
Tctl:         +52.4°C  

nct6779-isa-0290
Adapter: ISA adapter
Vcore:                 480.00 mV (min =  +0.00 V, max =  +1.74 V)
in1:                     1.28 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
AVCC:                    3.38 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
+3.3V:                   3.38 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in4:                     1.87 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in5:                     1.03 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in6:                     1.22 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
3VSB:                    3.44 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
Vbat:                    3.26 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in9:                     0.00 V  (min =  +0.00 V, max =  +0.00 V)
in10:                  944.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM
in11:                    1.08 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in12:                    1.70 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in13:                  312.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM
in14:                    1.84 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
fan1:                   636 RPM  (min =    0 RPM)
fan2:                  1672 RPM  (min =    0 RPM)
fan3:                     0 RPM  (min =    0 RPM)
fan4:                   653 RPM  (min =    0 RPM)
fan5:                     0 RPM  (min =    0 RPM)
SYSTIN:                 +30.0°C  (high =  +0.0°C, hyst =  +0.0°C)  ALARM  sensor = thermistor
CPUTIN:                 +39.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor
AUXTIN0:                +14.0°C    sensor = thermistor
AUXTIN1:                +29.0°C    sensor = thermistor
AUXTIN2:                +22.0°C    sensor = thermistor
AUXTIN3:                -27.0°C    sensor = thermistor
SMBUSMASTER 0:          +52.5°C  
PCH_CHIP_CPU_MAX_TEMP:   +0.0°C  
PCH_CHIP_TEMP:           +0.0°C  
PCH_CPU_TEMP:            +0.0°C  
intrusion0:            ALARM
intrusion1:            ALARM
beep_enable:           disabled


この結果の初めの方にある、「Tdie:         +52.4°C  (high = +70.0°C)」の温度部分を取り込んで表示することになるわけです。


SSDの温度表示

${execi 5 nvme smart-log /dev/nvme0 | grep temperature | cut -c 38-40 } ℃

こいつは、nvmeコマンドで、SSD0(/dev/nvme0)の結果から、温度(temperatue)の行を取り出し、その行の38から40桁目を出力させています。5秒毎…。

$ sudo nvme smart-log /dev/nvme0
Smart Log for NVME device:nvme0 namespace-id:ffffffff
critical_warning                    : 0
temperature                         : 27 C
available_spare                     : 100%
available_spare_threshold           : 5%
percentage_used                     : 9%
data_units_read                     : 129,187,397
data_units_written                  : 49,560,539
host_read_commands                  : 1,198,407,322
host_write_commands                 : 1,036,537,291
controller_busy_time                : 4,550
power_cycles                        : 18
power_on_hours                      : 18,311
unsafe_shutdowns                    : 12
media_errors                        : 0
num_err_log_entries                 : 127
Warning Temperature Time            : 0
Critical Composite Temperature Time : 0
Thermal Management T1 Trans Count   : 0
Thermal Management T2 Trans Count   : 0
Thermal Management T1 Total Time    : 0
Thermal Management T2 Total Time    : 0


nvmeコマンド自体は、nvme-cliをインストールする必要があるので以下のように…。

$ sudo apt install nvme-cli

ところが、このnvmeコマンドは、管理者権限がないと正常に情報が取得できない。
でも、conkyはユーザ権限で実行している。
表示するためにはsudoで管理者として実行しないといけない
そのためには、パスワードの入力が必要…
バックグラウンドで実行しているコマンドに定期的にパスワードを入れるなんて無理です。

そのためにLinuxには特殊なアクセス権が存在していて…。

SUIDと言います。

$ sudo chmod u+s /usr/sbin/nvme

と実行すると、nvmeコマンドにSet User ID(SUID)フラグを設定するわけです。
これは、ファイル所有者の権限で実行してくれる。
nvmeの所有者がrootなので、root権限(管理者権限)で勝手に実行してくれることになるわけですな…。

$ ls -l /usr/sbin/nvme

として、確認してみると…

$ ls -l /usr/sbin/nvme
-rwsr-xr-x 1 root root 436120  9月  7  2020 /usr/sbin/nvme*

最初のユーザのところは、本来「rwx」なんだけど 「rws」と表示が変更されているのが確認できる。

これで、パスワード入力無しで、管理者としてこのコマンドを実行可能になる。
(何でもかんでもこの設定をしてはいけないです…)

念の為、

$ nvme smart-log /dev/nvme0

と、sudo無しで実行して、同じように表示されればOK。



設定は、分かり難い箇所もあるでしょうが、1つ1つの意味を理解する作業をしていけば、すんなり納得できるでしょう。
自分なりに変更などもできるようになるので、お勧めです。


時々、このような解説を行なっていこうかと思案中。

コメント

このブログの人気の投稿

WPS Officeで日本語入力ができない

VirtualBoxでUSBから起動

Virtualboxとnvidiaドライバ