taskkillコマンドを使う
taskkill /f /im explorer.exe
taskkillではアクセス拒否されてしまい、killできないこともある。管理者権限で指定しているのだから、killできないとおかしいのだが。
これでも言うことを聞かない場合は、こちらを試す。
wmic process where "name='explorer.exe'" delete
これなら、確実にプロセスをkillできるようだ。
taskkillコマンドを使う
taskkill /f /im explorer.exe
taskkillではアクセス拒否されてしまい、killできないこともある。管理者権限で指定しているのだから、killできないとおかしいのだが。
これでも言うことを聞かない場合は、こちらを試す。
wmic process where "name='explorer.exe'" delete
これなら、確実にプロセスをkillできるようだ。
wslを起動してから、
$ sudo vi /etc/wsl.conf
でエディタを起動して、以下を記述する。
[boot]
systemd=true
これで、次回のwslの起動から、systemdが自動起動してinitの処理を行うようになる。ただし、initの処理が走るためにwslの高速な起動が、もっさり起動になってしまうのが、玉に瑕。
FreeBSDで、Let’s EncryptでTLS(SSL)の証明書を設定し、HTTP2プロトコルを有効にしたWebサーバを、Apache 2.4とPHP 8.2で作成する。
以下、簡単な手順を記述。
root権限でpkgで必要なものをインストールする。PHPの追加パッケージはお好みで。
pkg install php82 php82-gd php82-mbstring php82-mysqli php82-pgsql pkg install apache24 ap24-mod_http2 pkg install py39-certbot py39-certbot-apache
/etc/rc.conf にApache Web Serverの起動設定を行う。
apache24_enable="YES"
Apache Web Serverを起動する。ここではhttpのみの起動となる。
/usr/local/etc/rc.d/apache24 start
Let’s Encryptの実行をして証明書を取得する。httpでサーバにアクセスがあるので、Apache Web Serverの起動されていることが前提。
certbot certonly --webroot -w /usr/local/www/apache24/data -d www.example.com
crontabで定期的に更新するように設定。
0 9 1,15 * * /usr/local/bin/certbot renew
SSLの設定を行う。
cp /usr/local/etc/apache24/extra/httpd-ssl.conf /usr/local/etc/apache24/modules.d/000_httpd-ssl.conf
SSLの設定ファイルをコピーして編集する。Let’s Encryptで作ったキーファイルを指定
ファイル内の書き換える箇所のみ引用SSLCertificateFile "/usr/local/etc/letsencrypt/live/www.example.com/cert.pem"
SSLCertificateKeyFile "/usr/local/etc/letsencrypt/live/www.example.com/privkey.pem"
SSLCertificateChainFile "/usr/local/etc/letsencrypt/live/www.example.com/fullchain.
pem"
Apacheの設定では、 /usr/local/www/apache24/httpd.conf を書き換えする。
LoadModule mpm_event_module libexec/apache24/mod_mpm_event.so # LoadModule mpm_prefork_module libexec/apache24/mod_mpm_prefork.so
mod_mpm_preforkがデフォルトになっているが、これではHTTP2でPHPを実行できないので、mod_mpm_eventを有効にする。
設置されている /usr/local/etc/apache24/modules.d/200_mod_h2.conf を編集する
LoadModule http2_module libexec/apache24/mod_h2.so
/usr/local/etc/apache24/modules.d/001_php.conf というファイルを作成して編集。
HTTP2の環境でのPHPはmod_phpではなく、php-fpmでの実行となる。
LoadModule proxy_module libexec/apache24/mod_proxy.so LoadModule proxy_http2_module libexec/apache24/mod_proxy_http2.so LoadModule proxy_fcgi_module libexec/apache24/mod_proxy_fcgi.so <FilesMatch \.php$> SetHandler "proxy:fcgi://127.0.0.1:9000" </FilesMatch>
/etc/rc.conf で起動するように設定
php_fpm_enable="YES"
php-fpmを起動し、Apache Web Serverを再起動する。
/usr/local/etc/rc.d/php-fpm start /usr/local/etc/rc.d/apache24 restart
iPadのOSを16.1に更新したところ、Safariの表示がおかしくなった。デスクトップモードのview port が正しく認識されていない可能性がありそう。
iPadを横向きにしたときは、きちんと横幅にフィットして表示される。
iPadを縦にすると、Safariの表示で横幅にフィットしないではみ出る。
これは、いわゆる「おま環」の現象だろうか?
補足:ステージマネージャをoffにしたら、iPad縦向きでも、Safariできちんと幅いっぱいにフィットした。ステージマネージャのバグのような気がする。
2022/12/14追記
iPadOS 16.2に更新したところ、まだこの状況は変わっていないみたい。ただ、うまく表示できているサイトもあって、どうなっているのかな。Yahoo Japanは16.1と同様で、縦モードのときはみ出たままです。
めげずにCentOS8に設定中
# dnf install vbsftpd # systemctl start vsftpd # systemctl enable vsftpd
まずはportsを最新にする
# portsnap all
portsでqmailをmakeする
# cd /usr/ports/mail/qmail # make config # make install
configはこんな感じで、設定。あれこれ詰め込んでnetqmailを構築する
続いてcheckpasswordとtcpserverをインストール。この2つはデフォルト設定のままで進む
# cd /usr/ports/security/checkpassword # make install # /usr/ports/sysutils/ucspi-tcp # make install
qmailの基本的な設定は割愛。
/var/qmail/rc は、Maildirの形式にする。
# cp /var/qmail/boot/maildir /var/qmail/rc
vpopmailのインストール
# /usr/ports/mail/vpopmail # make config # make install
configはこんな感じで、設定。あれこれ詰め込んでvpopmailを構築する。
起動スクリプトは、あれこれ自前で設定したいので、独自に作成する。
# vi /usr/local/etc/rc.d/qmail
!/bin/sh # PROVIDE: qmail # REQUIRE: LOGIN # KEYWORD: shutdown # # Add the following line to /etc/rc.conf to enable qmail: # qmail_enable="YES" # . /etc/rc.subr name="qmail" desc="Enable/Disable qmail" rcvar="qmail_enable" load_rc_config "$name" start_cmd="${name}_start" command="/var/qmail/bin/qmail-start" extra_commands="stop" stop_cmd="${name}_stop" pidfile="/var/run/${name}.pid" HOSTNAME=hostname
qmail_start(){#start qmail daemon
/var/qmail/rc start
/usr/local/bin/tcprules /usr/local/vpopmail/etc/tcp.smtp.cdb \
/usr/local/vpopmail/etc/tcp.smtp.tmp \
< /usr/local/vpopmail/etc/tcp.smtp
#start smtpd
/usr/local/bin/tcpserver -H -R -v -x /usr/local/vpopmail/etc/tcp.smtp.cdb -c 100 -u qmaild -g qmaild 0 25 \
/var/qmail/bin/qmail-smtpd 2>&1 \
| /var/qmail/bin/splogger smtpd &
#start popd
/usr/local/bin/tcpserver -R -H 0 110 /var/qmail/bin/qmail-popup $HOSTNAME \
/usr/local/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1 \ | /var/qmail/bin/splogger pop3d &
/bin/pgrep qmail-send > ${pidfile}
echo "qmail start"
} qmail_stop(){killall tcpserver
killall qmail-send
echo "Shutting down pop & smtp"
} run_rc_command "$1"
# chmod 0755 /usr/local/etc/rc.d/qmail
# echo qmail_enable=\"YES\" >> /etc/rc.conf # echo sendmail_enable=\"NONE\" >> /etc/rc.conf
こんな感じで起動スクリプトを置いて、rc.confで起動設定と、標準のsendmailの停止を設定する。
他のプログラムはpkgでイントールしたいので、qmailとvpopmailはpkgで更新されないようにlockをかける
# pkg lock netqmail-1.06_5 # pkg lock vpopmail-5.4.33_3
以上で、qmailとvpopmailの基本的なインストールと設定は終了。
WEBブラウザでアカウント管理するならqmailadminをインストールする。
# cd /usr/ports/mail/qmailadmin # make install
設定は標準のままでインストールまで行う。
Linux環境であれこれ苦労してパッケージ入れたり、自分でコンパイルすることに比べて、FreeBSDでの構築は非常に簡単ですね。
[2024/02/19追記]
このところ、gmailの設定であれこれ話題になっているDKIMやSPF,DMARCなどはこちら
メールのなりすましを電子署名Domainkeys/DKIMで防ぐ(qmailまとめ)
qmailの情報収集 2019/08/26
を見ておきましょう。以下の手順はあくまでも素のnotqmailのインストール方法になりますので、ご注意ください。
[追記ここまで]
過去の古いOSのサーバから移行することを目的にqmailの環境をもう一度、新しいOSの環境に構築する。
10年近く何も作業していなかった設定方法のため、1から思い出して処理する必要があった。
いまさらqmailを使うのはどうかと思うが、vpopmailとqmailadminでオペレートが楽なのは評価。あと、過去のOSのサーバからの移行がそのままファイルコピーで済むため、postfixの環境に移行より楽。また、プレーンなqmailでなく、フォークされて開発が続けられているnotqmailをインストールすることにした。
dnf install gcc.x86_64
https://github.com/notqmail/notqmail からnotqmailのソースコードを取得
ユーザーをシステムに設定
# groupadd nofiles
# useradd -g nofiles -d /var/qmail/alias -s /bin/false alias
# useradd -g nofiles -d /var/qmail -s /bin/false qmaild
# useradd -g nofiles -d /var/qmail -s /bin/false qmaill
# useradd -g nofiles -d /var/qmail -s /bin/false qmailp
# groupadd qmail
# useradd -g qmail -d /var/qmail -s /bin/false qmailq
# useradd -g qmail -d /var/qmail -s /bin/false qmailr
# useradd -g qmail -d /var/qmail -s /bin/false qmails
rootアカウントでmakeしてインストール
# make setup check
初回のドメイン設定
# ./config-fast example.com
rcファイルのコピー
# cp home /var/qmail/rc
# chmod 0755 /var/qmail/rc
rcファイル内は、以下のように書き換え
qmail-start ./Mailbox splogger qmail
↓
qmail-start ./Maildir/ splogger qmail
初期の管理アカウントを設定
(外部の他メールアカウントへ転送の例)
# cd ~alias
# touch .qmail-root .qmail-postmaster .qmail-mailer-daemon
# chmod 644 .qmail*
# echo -n ‘xxx@example.com’ > .qmail-root
# echo -n ‘xxx@example.com’ > .qmail-postmaster
# echo -n ‘xxx@example.com’ > .qmail-mailer-daemon
wget https://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
vi error.h で extern int errno; を #include <errno.h> と書き換える
rootアカウントでmakeしてインストール
# make setup check
wget http://jaist.dl.sourceforge.net/project/vpopmail/vpopmail-stable/5.4.33/vpopmail-5.4.33.tar.gz
vpopmailのアカウントを作成
# groupadd vchkpw
# useradd -g vchkpw -s /bin/false -M vpopmail
# mkdir /home/vpopmail
# chown vpopmail:vchkpw /home/vpopmail
# mkdir /home/vpopmail/etc
# chown vpopmail:vchkpw /home/vpopmail/etc
rootアカウントにて実行
# ./configure –enable-roaming-users=y –enable-relay-clear-minutes=10
# make
# make install-strip
crontabでpop before smtpのデータを10分ごとにリフレッシュ
0-59/10 * * * * /home/vpopmail/bin/clearopensmtp 2>&1 > /dev/null
vpopmailへの新規ドメインの追加
# /home/vpopmail/bin/vadddomain example.com
# su – vpopmail
$ cd /home/vpopmail/domains/example.com/postmaster/
$ echo -n ‘xxx@example.com’ > .qmail
でpostmasterの設定
(他メールへの転送の設定)
この設定がない場合は /home/vpopmail/domains/example.com/postmaster/Maildir/ へのローカル配送される
$ cd /home/vpopmail/domains/example.com/
$ echo -n ‘xxx@example.com’ > .qmail-root
でrootアカウントのメールの設定
(他メールへの転送の設定)
すでにインストールされていたposfixを削除
# dnf remove postfix
メール関連のコマンドをsymlinkで設定
# ln -s /var/qmail/bin/qmail-qstat /usr/bin/mailq
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
Daemontoolsを使わずにいったん仮で起動させてローカルのメールデリバリーを確認する
# sh /var/qmail/rc &
# wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
展開したディレクトリが実行ファイルの置き場になり/command/からsymlinkとなるため、コンパイル前に展開場所を/usr/local/などにする。
vi src/error.h で extern int errno; を #include <errno.h> と書き換える
# package/install
systemctl用daemontools を設定
/etc/systemd/system/daemontools.service
[Unit]
Description=daemontools Start supervise
After=getty.target
[Service]
Type=simple
User=root
Group=root
Restart=always
ExecStart=/command/svscanboot /dev/ttyS0
TimeoutSec=0
[Install]
WantedBy=multi-user.target
# systemctl enable daemontools
# systemctl start daemontools
Daemontoolsでsmtp:qmail/pop3:vpoopmailの待ち受けのtcpserverを設定
/var/superviseに必要なディレクトリを作成
# mkdir -p /var/supervise/qmail
# mkdir -p /var/supervise/smtpd
# mkdir -p /var/supervise/pop3
# vi /var/supervise/qmail/run
#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start ./Maildir/ splogger qmail
# vi /var/supervise/smtpd/run
#!/bin/sh
/usr/local/bin/tcprules /home/vpopmail/etc/tcp.smtp.cdb \
/home/vpopmail/etc/tcp.smtp.tmp \
< /home/vpopmail/etc/tcp.smtp
exec env - PATH="/var/qmail/bin:$PATH" \
/usr/local/bin/tcpserver -HRl `hostname` -v -x /home/vpopmail/etc/tcp.smtp.cdb -u `id -u vpopmail` -g `id -g vpopmail` 0 smtp \
qmail-smtpd 2>&1 | splogger smtp 3
# vi /var/supervise/pop3/run
#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" \
/usr/local/bin/tcpserver -HRl `hostname` -v 0 pop3 qmail-popup `hostname` /home/
vpopmail/bin/vchkpw \
qmail-pop3d Maildir 2>&1 | splogger pop3 3
# chmod 0755 /var/supervise/qmail/run
# chmod 0755 /var/supervise/smtpd/run
# chmod 0755 /var/supervise/pop3/run
あとは、/serviceにリンボリックリンクをつける
# cd /service
# ln -s /var/supervise/qmail .
# ln -s /var/supervise/smtpd .
# ln -s /var/supervise/pop3 .
(qmail付属のmultilogの設定は省略、qmail付属のsploggerに投げているので最低限必要なログはsyslog経由で取得できるはず)
これで起動するので、firewalldで閉めているportを開けよう
# firewall-cmd –add-service=smtp –zone=public –permanent
# firewall-cmd –add-service=pop3 –zone=public –permanent
# firewall-cmd –add-port=587/tcp –permanent
daemontoolsの設定は、このへん参照
https://pocolog.bass-world.net/tech/2018/gmo-cloud-centos7-daemontools-tcpserver/
https://yassu.jp/pukiwiki/index.php?daemontools%A4%C7%A5%ED%A5%B0%B5%AD%CF%BF%A4%C8%A5%D7%A5%ED%A5%BB%A5%B9%B4%C9%CD%FD
http://www.marronkun.net/linux/other/daemontools_000040.html
http://www.emaillab.org/djb/daemontools/daemontools-howto.html
https://www.atmarkit.co.jp/ait/articles/0205/21/news002.html
# wget http://ezmlm.untroubled.org/archive/7.2.2/ezmlm-idx-7.2.2.tar.gz
# tar xzf ezmlm-idx-7.2.2.tar.gz
# cd ezmlm-idx-7.2.2
# make
# make man
# ./ezmlm-test
# make install
(設定中:時間がとれなくて作業遅延……)
キューに入っているメールを確認
/var/qmail/bin/qmail-qread
キューに入っている数を確認
/var/qmail/bin/qmail-qstat
キューの強制再送
kill -s ALRM qmail-send のPID
設定ファイルについては別途修正が必要。インストールと初期起動までをメモ。
hostnameを設定する
# hostnamectl set-hostname www.example.com
timezoneを設定する
# timedatectl set-timezone Asia/Tokyo
epelレポジトリを追加する
# dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnfの自動更新設定
# dnf install dnf-automatic
Postfixを起動する
# dnf install postfix
# systemctl start postfix
# systemctl enable postfix
PostgreSQLを起動する
# dnf install postgresql-server postgresql
# postgresql-setup initdb
# systemctl start postgresql
# systemctl enable postgresql
MariaDBを起動する
インストール直後はrootにパスワード未設定なので注意
# dnf install mariadb-server mariadb
# systemctl start mariadb
# systemctl enable mariadb
nginxを起動する
# dnf install nginx
# systemctl start nginx
# systemctl enable nginx
php-fpmを起動する
# dnf install php php-fpm php-cli php-pgsql php-devel php-xml php-json php-pear php-pear-Cache-Lite php-mysqlnd php-bcmath php-gd php-xmlrpc php-mbstring php-opcache php-pecl-zip php-pecl-apcu php-pear-Date php-pear-Mail php-pear-Net-URL php-pear-Net-SMTP php-pear-Net-Socket php-pear-HTTP-Request
# systemctl start php-fpm
# systemctl enable php-fpm
firewalldの設定を追加
# firewall-cmd –add-service=http –zone=public
# firewall-cmd –add-service=https –zone=public
# firewall-cmd –add-service=http –zone=public –permanent
# firewall-cmd –add-service=https –zone=public –permanent
# firewall-cmd –list-services –zone=public
tcp_wrappersはRHEL8/Centos8から削除されていて使えないのでIPアドレスの開け閉めもfirewalldですべて行うこと
# firewall-cmd –permanent –remove-service=ssh
# firewall-cmd –permanent –zone=public –add-rich-rule=”rule family=”ipv4″ source address=”[接続元のIP]” port protocol=”tcp” port=”22″ accept”
# firewall-cmd –reload
設定失敗するとリモートログインできなくなるので注意
特定のIPアドレスの接続を拒否
# firewall-cmd –zone=drop –permanent –add-source=192.168.0.0/24
# firewall-cmd –reload
logwatchをインストール
# dnf install logwatch
必要なツールをインストール
# dnf install rpm-build
# dnf install make
# dnf install ncurses-devel
Remiのレポジトリを追加
# dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
# dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
php7.3を入れる
デフォルトのphp7.2を消す
# systemctl disable php-fpm
# systemctl stop php-fpm
# dnf remove php php-fpm php-cli php-pgsql php-devel php-xml php-json php-pear php-pear-Cache-Lite php-mysqlnd php-bcmath php-gd php-xmlrpc php-mbstring php-opcache php-pecl-zip php-pecl-apcu php-pear-Date php-pear-Mail php-pear-Net-URL php-pear-Net-SMTP php-pear-Net-Socket php-pear-HTTP-Request php-cgi
# dnf install php73-php php73-php-gd php73-php-cli php73-php-fpm php73-php-xml php73-php-imap php73-php-json php73-php-pear php73-php-pgsql php73-php-bcmath php73-php-common php73-php-xmlrpc php73-php-mysqlnd php73-php-opcache php73-php-mbstring php73-php-pecl-zip php73-php-pecl-apcu php73-php-pecl-http php73-php-pecl-uuid php73-php-pecl-yaml php73-php-pecl-mcrypt php73-php-pecl-pdflib php73-php-pecl-memcache php73-php-pecl-xlswriter
# ln -s /usr/bin/php73 /usr/bin/php
(phpコマンドが/usr/bin/php73でインストールされるので、symlinkでphpを作っておく)
# systemctl start php73-php-fpm
# systemctl enable php73-php-fpm
php-pear-Date php-pear-Mail php-pear-Net-URL php-pear-Net-SMTP php-pear-Net-Socket php-pear-HTTP-Request などは標準パケージのphp(version 7.2)に依存しているので、dnfでinstallできない(composerでプロジェクトごとインストールすればよい)
selinuxの設定
# vi /etc/selinux/config で SELINUX=permissive として再起動
# setenforce 0
ログをみて後から設定する
sshdの設定
# vi /etc/ssh/sshd_config で PermitRootLogin no と PasswordAuthentication no と修正
# systemctl restart sshd
設定失敗するとリモートログインできなくなるので注意
Let’s Encryptのインストール
なぜかepelパッケージから消えたので手動でインストール
# wget https://dl.eff.org/certbot-auto
# mv certbot-auto /usr/local/bin/certbot-auto
# chown root /usr/local/bin/certbot-auto
# chmod 0755 /usr/local/bin/certbot-auto
# /usr/local/bin/certbot-auto –nginx
あとはcrontabで自動実行設定
0 9 10 * * /usr/local/bin/certbot-auto renew
(パッケージ certbot で問題ないのか確認中)
PHP7.4がstableでリリースされたのでphp7.3から更新(7.3いれた分だけど、先のことを考えると入れ替えておいたほうがよさそう……)
# rm /usr/bin/php
# systemctl disable php73-php-fpm
# systemctl stop php73-php-fpm
# dnf remove php73-php php73-php-gd php73-php-cli php73-php-fpm php73-php-xml php73-php-imap php73-php-json php73-php-pear php73-php-pgsql php73-php-bcmath php73-php-common php73-php-xmlrpc php73-php-mysqlnd php73-php-opcache php73-php-mbstring php73-php-pecl-zip php73-php-pecl-apcu php73-php-pecl-http php73-php-pecl-uuid php73-php-pecl-yaml php73-php-pecl-mcrypt php73-php-pecl-pdflib php73-php-pecl-memcache php73-php-pecl-xlswriter
# dnf install php74-php php74-php-gd php74-php-cli php74-php-fpm php74-php-xml php74-php-imap php74-php-json php74-php-pear php74-php-pgsql php74-php-bcmath php74-php-common php74-php-xmlrpc php74-php-mysqlnd php74-php-opcache php74-php-mbstring php74-php-pecl-zip php74-php-pecl-apcu php74-php-pecl-http php74-php-pecl-uuid php74-php-pecl-yaml php74-php-pecl-mcrypt php74-php-pecl-pdflib php74-php-pecl-memcache php74-php-pecl-xlswriter
# systemctl start php74-php-fpm
# systemctl enable php74-php-fpm
# ln -s /usr/bin/php74 /usr/bin/php
ユーザーベースのmod_rewrite(.htaccess)やmod_pagespeedを使いたいのでnginxからapache httpd serverに変更
# dnf remove nginx
# dnf install httpd
# systemctl enable httpd
# systemctl start httpd
# /usr/local/bin/certbot-auto –apache
http2の設定はApacheにHTTP/2を設定してサイトの表示速度とパフォーマンスをアップを参照
apache httpd serverは、centos8のパッケージではeventMPMの場合は、phpはモジュールでなくphp-fpm経由になる設定なので、nginx用に準備したphp-fpmはそのままにする
mod_pagespeedのインストール
https://www.modpagespeed.com/doc/download
にある
Latest Stable Version
mod_pagespeed 64-bit .rpm (CentOS/Fedora)
を
# dnf install https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_x86_64.rpm
でインストール
apache版は.htaccessで設定がディレクトリごと、バーチャルドメインのサイトごと、ユーザー権限で可能なので、便利。ただし、処理速度はapacheのconfや、nginxでのconfに書くより遅い。
https://www.rem-system.com/centos8-first-settings/
参照情報にブックマーク。
DHCPの設定が腐っていてネットに繋がらないときは
https://www.server-world.info/query?os=CentOS_8&p=dhcp&f=2
最低でも
sudo dhcp-client xxx (xxxはネットワークデバイス名)
でつながるはず
ip addr show でIPアドレスは確認
sudo systemctl disable gdm.service
でgdmの起動を停止して再起動