Jekyll2023-12-12T21:38:21+09:00https://komasaru.github.io/atom.xmlmk-mode BLOGこのブログは自宅サーバ(Debian GNU/Linux)で運用してしている<a href="https://www.mk-mode.com/blog/">ブログ</a>のクローンです。<br />PC・サーバ構築等の話題を中心に公開しております。mk-mode.comDebian 12 (bookworm) - Web サーバ Nginx 構築(Nginx 公式リポジトリ使用)!2023-12-13T00:00:00+09:002023-12-13T00:00:00+09:00https://komasaru.github.io/2023/12/13/debian-12-nginx-installation-by-official-apt<p>Debian GNU/Linux 12 (bookworm) に Web サーバ Nginx を Nginx 公式リポジトリを使用して導入する方法についての記録です。</p>
<p>以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。<br />
(当然ながら、興味がなければスルーしてください)</p>
<!--more-->
<h3 id="0-前提条件">0 前提条件</h3>
<ul>
<li>Debian GNU/Linux 12 (bookworm; 64bit) での作業を想定。</li>
<li>接続元のマシンも Debian GNU/Linux 12 (bookworm; 64bit) を想定。</li>
<li>Debian 公式リポジトリの Nginx はバージョンが古いため、Nginx リポジトリを使用して 1.24.0(当記事執筆時点最新安定版)をインストールする。</li>
<li>実際に運用する際は、ドキュメントルートを変更する等、設定を編集すること。</li>
<li>一般ユーザでの作業を想定。</li>
</ul>
<h3 id="1-必要パッケージのインストール">1. 必要パッケージのインストール</h3>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt -y install curl gnupg2 ca-certificates lsb-release debian-archive-keyring
</code></pre></div></div>
<h3 id="2-公式-nginx-署名キーのインポート">2. 公式 Nginx 署名キーのインポート</h3>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
</code></pre></div></div>
<h3 id="3-署名キーの検証">3. 署名キーの検証</h3>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg
</code></pre></div></div>
<p>出力されるフィンガープリンが以下と一致することを確認する。</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>pub rsa2048 2011-08-19 [SC] [expires: 2024-06-14]
573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
uid nginx signing key <signing-key@nginx.com>
</code></pre></div></div>
<h3 id="4-apt-リポジトリの設定">4. apt リポジトリの設定</h3>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/debian `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
</code></pre></div></div>
<h3 id="5-apt-リポジトリの優先度設定">5. apt リポジトリの優先度設定</h3>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
| sudo tee /etc/apt/preferences.d/99nginx
</code></pre></div></div>
<h3 id="6-nginx-のインストール">6. Nginx のインストール</h3>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt -y update
$ sudo apt -y install nginx
</code></pre></div></div>
<h3 id="7-インストールの確認">7. インストールの確認</h3>
<p>Nginx がインストールできたか確認してみる。(<code class="language-plaintext highlighter-rouge">-v</code> の代わりに <code class="language-plaintext highlighter-rouge">-V</code> オプションを使用すると詳細に表示される)</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo nginx -v
nginx version: nginx/1.24.0
</code></pre></div></div>
<h3 id="8-設定">8. 設定</h3>
<p>今回のインストール環境の場合、基本的(グローバル)な設定のファイルは <code class="language-plaintext highlighter-rouge">/etc/nginx/nginx.conf</code> で、このファイルから <code class="language-plaintext highlighter-rouge">/etc/nginx/conf.d</code> ディレクトリ配下の設定ファイルを読み込む形式となっている。<br />
取り急ぎ、デフォルトのままとした。<br />
詳細な設定は、「<a href="https://www.mk-mode.com/blog/tags/nginx/" title="Tag: Nginx - mk-mode BLOG">当ブログ Nginx 関連の過去記事</a>」を参照。</p>
<h3 id="9-ファイアウォールufwの設定">9. ファイアウォール(ufw)の設定</h3>
<p>TCP ポート 80 を開放する必要がある。(HTTPS の場合は TCP: 443)</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo ufw allow 80/tcp
Rule added
$ sudo ufw status
:
80/tcp ALLOW Anywhere
:
</code></pre></div></div>
<h3 id="10-サーバの起動">10. サーバの起動</h3>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo systemctl start nginx
</code></pre></div></div>
<h3 id="11-起動確認">11. 起動確認</h3>
<p>ブラウザで <code class="language-plaintext highlighter-rouge">http://<サーバアドレス or ホスト名>/</code> にアクセスしてみる。
<code class="language-plaintext highlighter-rouge">Welcome to nginx!</code> と以下5行くらい表示されば成功。</p>
<h3 id="12-自動起動の設定">12. 自動起動の設定</h3>
<p>マシン起動時に自動で Nginx を起動させるには以下のようにする。(インストール直後は自動起動するようになっているはずなので、そうなっていない場合)</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo systemctl enable nginx
Synchronizing state of nginx.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable nginx
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /lib/systemd/system/nginx.service.
$ sudo systemctl is-enabled nginx
enabled
</code></pre></div></div>
<p>(<code class="language-plaintext highlighter-rouge">nginx</code> はネイティブなサービスでないため、 <code class="language-plaintext highlighter-rouge">systemd-sysv-install</code> にリダイレクトされる)</p>
<p>自動起動しないようにするには、</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># systemctl disable nginx
Synchronizing state of nginx.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable nginx
Removed "/etc/systemd/system/multi-user.target.wants/nginx.service".
# systemctl is-enabled nginx
disabled
</code></pre></div></div>
<h3 id="13-参考サイト">13. 参考サイト</h3>
<ul>
<li><a href="https://nginx.org/en/linux_packages.html" title="nginx: Linux packages">nginx: Linux packages</a></li>
</ul>
<hr />
<p>以上。</p>mk-mode.comDebian GNU/Linux 12 (bookworm) に Web サーバ Nginx を Nginx 公式リポジトリを使用して導入する方法についての記録です。 以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。 (当然ながら、興味がなければスルーしてください)Debian 12 (bookworm) - MariaDB 10.11 サーバ構築(ソースビルド)!2023-12-06T00:00:00+09:002023-12-06T00:00:00+09:00https://komasaru.github.io/2023/12/06/debian-12-mariadb-mroonga-installation-by-apt<p>Debian GNU/Linux 12 (bookworm) 上に DB サーバ MariaDB(10.11系)、全文検索エンジン Mroonga を構築する方法についての記録です。</p>
<p>以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。<br />
(当然ながら、興味がなければスルーしてください)</p>
<!--more-->
<h3 id="0-前提条件">0. 前提条件</h3>
<ul>
<li>Debian GNU/Linux 12 (bookworm; 64bit) での作業を想定。</li>
<li>接続元のマシンも Debian GNU/Linux 12 (bookworm; 64bit) を想定。</li>
<li>インストールする MariaDB は、当記事執筆時点、 10.11 系で最新の 10.11.5 とする。</li>
<li>全文検索エンジン Mroonga プラグインもインストールする。</li>
<li>ここで紹介する MariaDB + Mroonga のインストール方法は、 Mroonga 公式サイトで案内されている Mroonga 込の MariaDB をインストールする方法や、ソールをビルドしているインストールする方法ではない)</li>
<li>MariaDB とは言っても中身は MySQL が元になっているので、各所で <code class="language-plaintext highlighter-rouge">mysql</code> のキーワードが出現する。</li>
<li>データディレクトリは <code class="language-plaintext highlighter-rouge">/var/lib/mysql</code> ディレクトリ配下とする。</li>
<li>(今回は)一般ユーザでの作業を想定。</li>
</ul>
<h3 id="1-リポジトリキーのインポート">1. リポジトリキーのインポート</h3>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt -y install apt-transport-https curl
$ sudo mkdir -p /etc/apt/keyrings
$ sudo curl -o /etc/apt/keyrings/mariadb-keyring.pgp 'https://mariadb.org/mariadb_release_signing_key.pgp'
</code></pre></div></div>
<h3 id="2-リポジトリリストファイルの作成">2. リポジトリリストファイルの作成</h3>
<p>File: <code class="language-plaintext highlighter-rouge">/etc/apt/sources.list.d/mariadb.sources</code></p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># MariaDB 10.11 repository list - created 2023-10-27 02:05 UTC</span>
<span class="c"># https://mariadb.org/download/</span>
X-Repolib-Name: MariaDB
Types: deb
<span class="c"># deb.mariadb.org is a dynamic mirror if your preferred mirror goes offline. See https://mariadb.org/mirrorbits/ for details.</span>
<span class="c"># URIs: https://deb.mariadb.org/10.11/debian</span>
URIs: https://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/repo/10.11/debian
Suites: bookworm
Components: main
Signed-By: /etc/apt/keyrings/mariadb-keyring.pgp
</code></pre></div></div>
<h3 id="3-mariadb-サーバのインストール">3. MariaDB サーバのインストール</h3>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt -y update
$ sudo apt -y install mariadb-server
</code></pre></div></div>
<h3 id="4-全文検索エンジン-mroonga-プラグインのインストール">4. 全文検索エンジン Mroonga プラグインのインストール</h3>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt -y install mariadb-plugin-mroonga
</code></pre></div></div>
<h3 id="5-mariadb-の初期設定">5. MariaDB の初期設定</h3>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.
Enter current password for root (enter for none): # <= root ユーザの既存パスワード: 空エンター
OK, successfully used password, moving on...
Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.
You already have your root account protected, so you can safely answer 'n'.
Switch to unix_socket authentication [Y/n] # <= Unix ソケット認証設定: Y 応答
Enabled successfully!
Reloading privilege tables..
... Success!
You already have your root account protected, so you can safely answer 'n'.
Change the root password? [Y/n] # <= root パスワード変更: Y 応答
New password: # <= root パスワード
Re-enter new password: # <= root パスワード確認入力
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] # <= 匿名ユーザの削除: Y 応答
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] n # <= root のリモートログイン: リモート接続したいので n 応答(Y でもよい)
... skipping.
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] # <= テストデータベースの削除: Y 応答
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] # <= 特権情報のリロード: Y 応答
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
</code></pre></div></div>
<h3 id="6-動作確認">6. 動作確認</h3>
<p>インストール直後は、サーバは起動している。<br />
ログインしてみる。</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ mariadb -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 40
Server version: 10.11.5-MariaDB-1:10.11.5+maria~deb12 mariadb.org binary distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show engines;
+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+
| CSV | YES | Stores tables as CSV files | NO | NO | NO |
| MRG_MyISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| Aria | YES | Crash-safe tables with MyISAM heritage. Used for internal temporary tables and privilege tables | NO | NO | NO |
| MyISAM | YES | Non-transactional engine with good performance and small data footprint | NO | NO | NO |
| SEQUENCE | YES | Generated tables filled with sequential values | YES | NO | YES |
| Mroonga | YES | CJK-ready fulltext search, column store | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| InnoDB | DEFAULT | Supports transactions, row-level locking, foreign keys and encryption for tables | YES | YES | YES |
+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.000 sec)
MariaDB [(none)]> exit
Bye
</code></pre></div></div>
<ul>
<li>全文検索エンジン Mroonga もインストールされている。</li>
<li>上記の <code class="language-plaintext highlighter-rouge">mariadb -u root -p</code> は <code class="language-plaintext highlighter-rouge">mysql -u root -p</code> でもよい。</li>
</ul>
<p>もし、全文検索エンジン Mroonga が前述の apt でのインストール方法でインストールされていなければ、 MariaDB コンソールで以下を実行してみる。<br />
(MariaDB をインストールする過程で、なかなかうまくいかず色々とイジっているうちに、 apt インストールできない状態になるかもしれない(当方の経験談))</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>INSTALL SONAME 'ha_mroonga';
</code></pre></div></div>
<h3 id="7-起動再起動ステータス確認停止のテスト">7. 起動・再起動・ステータス確認・停止のテスト</h3>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo systemctl start mariadb
$ sudo systemctl restart mariadb
$ sudo systemctl stop mariadb
$ systemctl status mariadb
$ systemctl is-enabled mariadb
</code></pre></div></div>
<ul>
<li><code class="language-plaintext highlighter-rouge">mariadb</code> は <code class="language-plaintext highlighter-rouge">mysqld</code> でもよい。</li>
</ul>
<h3 id="8-設定編集">8. 設定編集</h3>
<p>必要に応じて、各種設定ファイルを編集する。(以下は、一例)<br />
<code class="language-plaintext highlighter-rouge">/etc/mysql/my.cnf</code> が <code class="language-plaintext highlighter-rouge">/etc/mysql/conf.d</code> や <code class="language-plaintext highlighter-rouge">/etc/mysql/mariadb.conf.d</code> ディレクトリ配下の cnf ファイルを読み込むようになっている。(以前のように <code class="language-plaintext highlighter-rouge">/etc/my.cnf</code> ファイルにまとめて記述する方法にしてもよいだろう)</p>
<p>(<code class="language-plaintext highlighter-rouge">[mysqld]</code> の <code class="language-plaintext highlighter-rouge">innodb_data_file_path</code> や <code class="language-plaintext highlighter-rouge">innodb_log_file_size</code> を変更する際は、細心の注意を)</p>
<p>File: <code class="language-plaintext highlighter-rouge">/etc/mysql/mariadb.conf.d/50-client.cnf</code></p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#</span>
<span class="c"># This group is read by the client library</span>
<span class="c"># Use it for options that affect all clients, but not the server</span>
<span class="c">#</span>
<span class="o">[</span>client]
<span class="c"># Default is Latin1, if you need UTF-8 set this (also in server section)</span>
port <span class="o">=</span> 3306
socket <span class="o">=</span> /var/run/mysqld/mysqld.sock
default-character-set <span class="o">=</span> utf8mb4
<span class="c"># Example of client certificate usage</span>
<span class="c">#ssl-cert=/etc/mysql/client-cert.pem</span>
<span class="c">#ssl-key=/etc/mysql/client-key.pem</span>
<span class="c">#</span>
<span class="c"># Allow only TLS encrypted connections</span>
<span class="c">#ssl-verify-server-cert=on</span>
<span class="c"># This group is *never* read by mysql client library, though this</span>
<span class="c"># /etc/mysql/mariadb.cnf.d/client.cnf file is not read by Oracle MySQL</span>
<span class="c"># client anyway.</span>
<span class="c"># If you use the same .cnf file for MySQL and MariaDB,</span>
<span class="c"># use it for MariaDB-only client options</span>
<span class="o">[</span>client-mariadb]
</code></pre></div></div>
<p>File: <code class="language-plaintext highlighter-rouge">/etc/mysql/mariadb.conf.d/50-mysql-clients.cnf</code></p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#</span>
<span class="c"># These groups are read by MariaDB command-line tools</span>
<span class="c"># Use it for options that affect only one utility</span>
<span class="c">#</span>
<span class="o">[</span>mysql]
<span class="c"># Default is Latin1, if you need UTF-8 set this (also in server section)</span>
default-character-set <span class="o">=</span> utf8mb4
no-auto-rehash
show-warnings
<span class="nv">prompt</span><span class="o">=</span><span class="se">\u</span>@<span class="se">\h</span>:<span class="se">\d\_\R</span>:<span class="se">\m</span>:<span class="se">\\</span>s><span class="se">\_</span>
<span class="nv">pager</span><span class="o">=</span><span class="s2">"less -n -i -F -X -E"</span>
<span class="o">[</span>mysql_upgrade]
<span class="o">[</span>mysqladmin]
<span class="o">[</span>mysqlbinlog]
<span class="o">[</span>mysqlcheck]
<span class="o">[</span>mysqldump]
<span class="o">[</span>mysqlimport]
<span class="o">[</span>mysqlshow]
<span class="o">[</span>mysqlslap]
</code></pre></div></div>
<p>File: <code class="language-plaintext highlighter-rouge">/etc/mysql/mariadb.conf.d/50-mysqld_safe.cnf</code></p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># NOTE: This file is read only by the traditional SysV init script, not systemd.</span>
<span class="c"># MARIADB SYSTEMD DOES _NOT_ UTILIZE MYSQLD_SAFE NOR READ THIS FILE.</span>
<span class="c">#</span>
<span class="c"># For similar behaviour, systemd users should create the following file:</span>
<span class="c"># /etc/systemd/system/mariadb.service.d/migrated-from-my.cnf-settings.conf</span>
<span class="c">#</span>
<span class="c"># To achieve the same result as the default 50-mysqld_safe.cnf, please create</span>
<span class="c"># /etc/systemd/system/mariadb.service.d/migrated-from-my.cnf-settings.conf</span>
<span class="c"># with the following contents:</span>
<span class="c">#</span>
<span class="c"># [Service]</span>
<span class="c"># User=mysql</span>
<span class="c"># StandardOutput=syslog</span>
<span class="c"># StandardError=syslog</span>
<span class="c"># SyslogFacility=daemon</span>
<span class="c"># SyslogLevel=err</span>
<span class="c"># SyslogIdentifier=mysqld</span>
<span class="c">#</span>
<span class="c"># For more information, please read https://mariadb.com/kb/en/mariadb/systemd/</span>
<span class="c">#</span>
<span class="o">[</span>mysqld_safe]
<span class="c"># This will be passed to all mysql clients</span>
<span class="c"># It has been reported that passwords should be enclosed with ticks/quotes</span>
<span class="c"># especially if they contain "#" chars...</span>
socket <span class="o">=</span> /var/run/mysqld/mysqld.sock
<span class="nb">nice</span> <span class="o">=</span> 0
skip_log_error
syslog
</code></pre></div></div>
<p>File: <code class="language-plaintext highlighter-rouge">/etc/mysql/mariadb.conf.d/50-server.cnf</code></p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#</span>
<span class="c"># These groups are read by MariaDB server.</span>
<span class="c"># Use it for options that only the server (but not clients) should see</span>
<span class="c"># this is read by the standalone daemon and embedded servers</span>
<span class="o">[</span>server]
<span class="c"># this is only for the mysqld standalone daemon</span>
<span class="o">[</span>mysqld]
<span class="c">#</span>
<span class="c"># Recovery</span>
<span class="c">#</span>
<span class="c">#innodb_force_recovery = 11 #クラッシュリカバリ時のみ有効化</span>
<span class="c">#</span>
<span class="c"># * Basic Settings</span>
<span class="c">#</span>
user <span class="o">=</span> mysql
pid-file <span class="o">=</span> /var/run/mysqld/mysqld.pid
socket <span class="o">=</span> /var/run/mysqld/mysqld.sock
port <span class="o">=</span> 3306
basedir <span class="o">=</span> /usr
datadir <span class="o">=</span> /var/lib/mysql
tmpdir <span class="o">=</span> /tmp
lc-messages-dir <span class="o">=</span> /usr/share/mysql
lc_messages <span class="o">=</span> en_US <span class="c"># Default: en_US</span>
skip-external-locking
performance_schema <span class="o">=</span> OFF <span class="c"># Default: ON</span>
sql_mode <span class="o">=</span> <span class="s1">''</span>
default_storage_engine <span class="o">=</span> InnoDB <span class="c"># Default: InnoDB</span>
skip-character-set-client-handshake
<span class="c"># Broken reverse DNS slows down connections considerably and name resolve is</span>
<span class="c"># safe to skip if there are no "host by domain name" access grants</span>
<span class="c">#skip-name-resolve</span>
<span class="c"># Instead of skip-networking the default is now to listen only on</span>
<span class="c"># localhost which is more compatible and is not less secure.</span>
bind-address <span class="o">=</span> 0.0.0.0 <span class="c"># 127.0.0.1</span>
<span class="c">#</span>
<span class="c"># * Fulltext Index</span>
<span class="c">#</span>
ft_min_word_len <span class="o">=</span> 2
innodb_ft_min_token_size <span class="o">=</span> 2
innodb_ft_enable_stopword <span class="o">=</span> OFF
<span class="c">#</span>
<span class="c"># * Fine Tuning</span>
<span class="c">#</span>
key_buffer_size <span class="o">=</span> 8M <span class="c"># Default: 8M (for MyISAM)</span>
myisam_sort_buffer_size <span class="o">=</span> 8M <span class="c"># Default: 8M (for MyISAM)</span>
sort_buffer_size <span class="o">=</span> 8M <span class="c"># Default: 2M (通常時:8M, ALTER TABLE 時:64M)</span>
read_buffer_size <span class="o">=</span> 8M <span class="c"># Default: 128K</span>
read_rnd_buffer_size <span class="o">=</span> 8M <span class="c"># Default: 256K</span>
join_buffer_size <span class="o">=</span> 8M <span class="c"># Default: 128K</span>
max_allowed_packet <span class="o">=</span> 128M <span class="c"># Default: 1M</span>
net_buffer_length <span class="o">=</span> 1M <span class="c"># Default: 16K</span>
thread_stack <span class="o">=</span> 288K <span class="c"># Default: 192K(32bit), 288K(64bit)</span>
thread_cache_size <span class="o">=</span> 40 <span class="c"># Default: 0 (max_connections の 1/3 程度?)</span>
table_open_cache <span class="o">=</span> 400 <span class="c"># Default: 400 (同時接続数 * テーブル数?)</span>
table_definition_cache <span class="o">=</span> 400 <span class="c"># Default: -1:autosized = 400 + (table_open_cache / 2</span>
tmp_table_size <span class="o">=</span> 16M <span class="c"># Default: System 依存 (for Memory, <= max_heap_table_size)</span>
max_heap_table_size <span class="o">=</span> 32M <span class="c"># Default: 16M (for Memory, >= tmp_table_size)</span>
bulk_insert_buffer_size <span class="o">=</span> 64M
<span class="c"># This replaces the startup script and checks MyISAM tables if needed</span>
<span class="c"># the first time they are touched</span>
myisam_recover_options <span class="o">=</span> BACKUP
max_connections <span class="o">=</span> 100 <span class="c"># Default: 151</span>
max_connect_errors <span class="o">=</span> 100 <span class="c"># Default: 100</span>
max_user_connections <span class="o">=</span> 0 <span class="c"># Default: 0</span>
<span class="c">#table_cache = 64</span>
<span class="c">#thread_concurrency = 10</span>
wait_timeout <span class="o">=</span> 300 <span class="c"># Default: 28800 (通常時:300, データインポート時:3600程度)</span>
interactive_timeout <span class="o">=</span> 3600 <span class="c"># Default: 28800</span>
connect_timeout <span class="o">=</span> 30 <span class="c"># Default: 10</span>
net_read_timeout <span class="o">=</span> 3600 <span class="c"># Default: 30</span>
net_write_timeout <span class="o">=</span> 3600 <span class="c"># Default: 60</span>
<span class="c">#</span>
<span class="c"># * Query Cache Configuration</span>
<span class="c">#</span>
query_cache_limit <span class="o">=</span> 8M <span class="c"># Default: 1M</span>
query_cache_size <span class="o">=</span> 32M <span class="c"># Default: 0 (通常時: 32M, データインポート時: 0)</span>
<span class="c">#</span>
<span class="c"># * Logging and Replication</span>
<span class="c">#</span>
log_output <span class="o">=</span> FILE <span class="c"># Default: FILE</span>
log_warnings <span class="o">=</span> 1 <span class="c"># Default: 1</span>
<span class="c"># Both location gets rotated by the cronjob.</span>
<span class="c"># Be aware that this log type is a performance killer.</span>
<span class="c"># Recommend only changing this at runtime for short testing periods if needed</span>
<span class="c">#general_log_file = /var/log/mysql/mysql.log # デバッグ時に有効化</span>
<span class="c">#general_log = 1 # デバッグ時に有効化</span>
<span class="c"># When running under systemd, error logging goes via stdout/stderr to journald</span>
<span class="c"># and when running legacy init error logging goes to syslog due to</span>
<span class="c"># /etc/mysql/conf.d/mariadb.conf.d/50-mysqld_safe.cnf</span>
<span class="c"># Enable this if you want to have error logging into a separate file</span>
log_error <span class="o">=</span> /var/log/mysql/error.log
<span class="c"># Enable the slow query log to see queries with especially long duration</span>
<span class="c">#slow_query_log_file = /var/log/mysql/mariadb-slow.log # デバッグ時に有効>化</span>
<span class="c">#slow_query_log = 1 # デバッグ時に有効>化</span>
<span class="c">#long_query_time = 30 # 10 # デバッグ時に有効>化</span>
<span class="c">#log_slow_verbosity = query_plan,explain</span>
<span class="c">#log-queries-not-using-indexes</span>
<span class="c">#min_examined_row_limit = 1000</span>
<span class="c"># The following can be used as easy to replay backup logs or for replication.</span>
<span class="c"># note: if you are setting up a replication slave, see README.Debian about</span>
<span class="c"># other settings you may need to change.</span>
<span class="c">#server-id = 101 # 1 # レプリケーション時 (1 〜 2^32 - 1)</span>
<span class="c">#log_bin = mysql-bin # /var/log/mysql/mysql-bin.log # レプリケーション、ポイントインタイムリカバリを利用したい場合のみ有効化</span>
expire_logs_days <span class="o">=</span> 10
max_binlog_size <span class="o">=</span> 100M
binlog_format <span class="o">=</span> MIXED
log_bin_trust_function_creators <span class="o">=</span> 1 <span class="c"># Default: 0 (for TRIGGER)</span>
<span class="c">#binlog_do_db = include_database_name</span>
<span class="c">#binlog_ignore_db = exclude_database_name</span>
<span class="c">#</span>
<span class="c"># * SSL/TLS</span>
<span class="c">#</span>
<span class="c"># For documentation, please read</span>
<span class="c"># https://mariadb.com/kb/en/securing-connections-for-client-and-server/</span>
<span class="c">#ssl-ca = /etc/mysql/cacert.pem</span>
<span class="c">#ssl-cert = /etc/mysql/server-cert.pem</span>
<span class="c">#ssl-key = /etc/mysql/server-key.pem</span>
<span class="c">#require-secure-transport = on</span>
<span class="c">#</span>
<span class="c"># * Character sets</span>
<span class="c">#</span>
<span class="c"># MySQL/MariaDB default is Latin1, but in Debian we rather default to the full</span>
<span class="c"># utf8 4-byte character set. See also client.cnf</span>
<span class="c">#</span>
character-set-server <span class="o">=</span> utf8mb4
collation-server <span class="o">=</span> utf8mb4_general_ci
<span class="c">#</span>
<span class="c"># * Event Scheduler</span>
<span class="c">#</span>
event_scheduler <span class="o">=</span> 1 <span class="c"># Default: 0</span>
<span class="c">#</span>
<span class="c"># * InnoDB</span>
<span class="c">#</span>
<span class="c"># InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.</span>
<span class="c"># Read the manual for more InnoDB related options. There are many!</span>
<span class="c"># Most important is to give InnoDB 80 % of the system RAM for buffer use:</span>
<span class="c"># https://mariadb.com/kb/en/innodb-system-variables/#innodb_buffer_pool_size</span>
<span class="c">#innodb_buffer_pool_size = 8G</span>
<span class="c"># this is only for embedded server</span>
<span class="o">[</span>embedded]
<span class="c"># This group is only read by MariaDB servers, not by MySQL.</span>
<span class="c"># If you use the same .cnf file for MySQL and MariaDB,</span>
<span class="c"># you can put MariaDB-only options here</span>
<span class="o">[</span>mariadb]
<span class="c"># This group is only read by MariaDB-10.5 servers.</span>
<span class="c"># If you use the same .cnf file for MariaDB of different versions,</span>
<span class="c"># use this group for options that older servers don't understand</span>
<span class="o">[</span>mariadb-10.11]
innodb_data_file_path <span class="o">=</span> ibdata1:1G <span class="c">#:autoextend</span>
innodb_autoextend_increment <span class="o">=</span> 64 <span class="c"># Default: 64</span>
innodb_file_per_table <span class="o">=</span> 1
innodb_file_format <span class="o">=</span> Barracuda <span class="c"># Default: Antelope</span>
innodb_large_prefix <span class="o">=</span> 1 <span class="c"># Default: 0</span>
innodb_buffer_pool_size <span class="o">=</span> 768M <span class="c"># Default: 128M (innodb_log_files_in_group * innodb_log_file_size < innodb_buffer_pool_size)</span>
innodb_buffer_pool_instances <span class="o">=</span> 16 <span class="c"># Default: autosized(32bit), 8(64bit) (innodb_buffer_pool_size >= 1G の場合にのみ有効)</span>
innodb_sort_buffer_size <span class="o">=</span> 8M <span class="c"># Default: 1M (通常時:8M, ALTER TABLE 時:256M)</span>
innodb_thread_concurrency <span class="o">=</span> 4 <span class="c"># Default: 0 (Defalut 推奨? CPU数 * ディスク数 * 2 が最適?)</span>
innodb_thread_sleep_delay <span class="o">=</span> 10000 <span class="c"># Default: 10000 (単位:マイクロ秒)</span>
innodb_commit_concurrency <span class="o">=</span> 4 <span class="c"># Default: 0 (Default 推奨?)</span>
innodb_write_io_threads <span class="o">=</span> 8 <span class="c"># Default: 4 (1 - 64)</span>
innodb_read_io_threads <span class="o">=</span> 8 <span class="c"># Default: 4 (1 - 64)</span>
innodb_log_buffer_size <span class="o">=</span> 32M <span class="c"># Default: 8M (通常時:32M, データインポート時:256M程度)</span>
innodb_log_group_home_dir <span class="o">=</span> /var/lib/mysql
innodb_log_files_in_group <span class="o">=</span> 2 <span class="c"># Default: 2 (変更注意!)</span>
innodb_log_file_size <span class="o">=</span> 256M <span class="c"># Default: 48M (変更注意!)</span>
<span class="c"># <= innodb_log_files_in_group innodb_log_file_size < innodb_buffer_pool_size</span>
<span class="c"># [変更方法](http://dev.mysq.com/doc/refman/5.6/ja/innodb-data-log-reconfiguration.html)</span>
innodb_max_dirty_pages_pct <span class="o">=</span> 90 <span class="c"># Default: 75(%)</span>
<span class="c"># <= 小さい値:低速&安定、大き 値:高速&不安定(?)</span>
innodb_io_capacity <span class="o">=</span> 256 <span class="c"># Default: 200 (100 - 2^64-1)</span>
innodb_io_capacity_max <span class="o">=</span> 512 <span class="c"># Default: 200 (100 - 2^64-1)</span>
innodb_lru_scan_depth <span class="o">=</span> 2048 <span class="c"># Default: 1024 (100 - 2^32-1(32bit))</span>
innodb_flush_method <span class="o">=</span> O_DIRECT <span class="c"># Default: Not set</span>
innodb_flush_log_at_trx_commit <span class="o">=</span> 1 <span class="c"># Default: 1 (データインポート時: 2 or 0)</span>
innodb_doublewrite <span class="o">=</span> 1 <span class="c"># Default: 1 (データインポート時: 0)</span>
</code></pre></div></div>
<ul>
<li><code class="language-plaintext highlighter-rouge">ibdata1</code>, <code class="language-plaintext highlighter-rouge">ib_lofile0</code>, <code class="language-plaintext highlighter-rouge">ib_logfile1</code> のサイズを変更した場合は、MariaDB サーバ停止後に <code class="language-plaintext highlighter-rouge">ibdata1</code>, <code class="language-plaintext highlighter-rouge">ib_lofile0</code>, <code class="language-plaintext highlighter-rouge">ib_logfile1</code> を削除してから再度起動すること。</li>
</ul>
<h3 id="9-サービスの自動起動設定">9. サービスの自動起動設定</h3>
<p>インストール直後はマシン起動時に自動で MariaDB サーバが起動するようになっている。<br />
自動起動しないようにしたければ以下のようにする。</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo systemctl disable mariadb
Synchronizing state of mariadb.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable mariadb
Removed "/etc/systemd/system/multi-user.target.wants/mariadb.service".
$ systemctl is-enabled mariadb
disabled
</code></pre></div></div>
<ul>
<li><code class="language-plaintext highlighter-rouge">mariadb</code> は <code class="language-plaintext highlighter-rouge">mysqld</code> でもよい(<code class="language-plaintext highlighter-rouge">mysql</code> はダメ)</li>
</ul>
<h3 id="10-ファイアウォールufwの設定">10. ファイアウォール(ufw)の設定</h3>
<p>リモートで MariaDB サーバにアクセスする場合(GUI ツールを使用する場合等)は、TCP ポート 3306 を開放する必要がある。</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo ufw allow 3306/tcp
Rule added
$ sudo ufw status
:
3306/tcp ALLOW Anywhere
:
</code></pre></div></div>
<h3 id="11-参考サイト">11. 参考サイト</h3>
<ul>
<li><a href="https://mariadb.org/download/?t=repo-config&d=Debian+12+%22Bookworm%22&v=10.11&r_m=yamagata-university" title="Download MariaDB Server - MariaDB.org">Download MariaDB Server - MariaDB.org</a></li>
<li><a href="https://mariadb.com/kb/en/about-mroonga/" title="About Mroonga - MariaDB Knowledge Base">About Mroonga - MariaDB Knowledge Base</a></li>
</ul>
<hr />
<p>以上。</p>mk-mode.comDebian GNU/Linux 12 (bookworm) 上に DB サーバ MariaDB(10.11系)、全文検索エンジン Mroonga を構築する方法についての記録です。 以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。 (当然ながら、興味がなければスルーしてください)2023年11月 - OS・ブラウザ別アクセス状況!2023-12-01T00:00:00+09:002023-12-01T00:00:00+09:00https://komasaru.github.io/2023/12/01/blog-access<p>12月になりましたので、先月11月分の当ブログアクセス状況を公開します。(※自分用の記録)</p>
<!--more-->
<h3 id="1-アクセスをos別に集計">1. アクセスをOS別に集計</h3>
<table>
<thead>
<tr>
<th style="text-align: left">OS</th>
<th style="text-align: right">PageViews</th>
<th style="text-align: right">比率(%)</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">Windows</td>
<td style="text-align: right">8,265</td>
<td style="text-align: right">70.7499</td>
</tr>
<tr>
<td style="text-align: left">Mac OS</td>
<td style="text-align: right">2,063</td>
<td style="text-align: right">17.6596</td>
</tr>
<tr>
<td style="text-align: left">Linux</td>
<td style="text-align: right">543</td>
<td style="text-align: right">4.6482</td>
</tr>
<tr>
<td style="text-align: left">Android</td>
<td style="text-align: right">472</td>
<td style="text-align: right">4.0404</td>
</tr>
<tr>
<td style="text-align: left">unknown</td>
<td style="text-align: right">203</td>
<td style="text-align: right">1.7377</td>
</tr>
<tr>
<td style="text-align: left">Ubuntu Linux</td>
<td style="text-align: right">128</td>
<td style="text-align: right">1.0957</td>
</tr>
<tr>
<td style="text-align: left">Fedora Linux</td>
<td style="text-align: right">3</td>
<td style="text-align: right">0.0257</td>
</tr>
<tr>
<td style="text-align: left">FreeBSD</td>
<td style="text-align: right">3</td>
<td style="text-align: right">0.0257</td>
</tr>
<tr>
<td style="text-align: left">Linux Mint</td>
<td style="text-align: right">1</td>
<td style="text-align: right">0.0086</td>
</tr>
<tr>
<td style="text-align: left">NetBSD</td>
<td style="text-align: right">1</td>
<td style="text-align: right">0.0086</td>
</tr>
</tbody>
<tfoot>
<tr>
<td style="text-align: left">合 計</td>
<td style="text-align: right">11,682</td>
<td style="text-align: right">100.0000</td>
</tr>
</tfoot>
</table>
<h3 id="2-アクセスをosバージョン別に集計">2. アクセスをOS・バージョン別に集計</h3>
<table>
<thead>
<tr>
<th style="text-align: left">OS</th>
<th style="text-align: left">Version</th>
<th style="text-align: right">PageViews</th>
<th style="text-align: right">比率(%)</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">Windows</td>
<td style="text-align: left">10</td>
<td style="text-align: right">8,214</td>
<td style="text-align: right">70.3133</td>
</tr>
<tr>
<td style="text-align: left">Mac OS</td>
<td style="text-align: left">X</td>
<td style="text-align: right">2,063</td>
<td style="text-align: right">17.6596</td>
</tr>
<tr>
<td style="text-align: left">Linux</td>
<td style="text-align: left">unknown</td>
<td style="text-align: right">543</td>
<td style="text-align: right">4.6482</td>
</tr>
<tr>
<td style="text-align: left">Android</td>
<td style="text-align: left">unknown</td>
<td style="text-align: right">472</td>
<td style="text-align: right">4.0404</td>
</tr>
<tr>
<td style="text-align: left">unknown</td>
<td style="text-align: left">unknown</td>
<td style="text-align: right">203</td>
<td style="text-align: right">1.7377</td>
</tr>
<tr>
<td style="text-align: left">Ubuntu Linux</td>
<td style="text-align: left">unknown</td>
<td style="text-align: right">128</td>
<td style="text-align: right">1.0957</td>
</tr>
<tr>
<td style="text-align: left">Windows</td>
<td style="text-align: left">7</td>
<td style="text-align: right">42</td>
<td style="text-align: right">0.3595</td>
</tr>
<tr>
<td style="text-align: left">Windows</td>
<td style="text-align: left">8.1</td>
<td style="text-align: right">8</td>
<td style="text-align: right">0.0685</td>
</tr>
<tr>
<td style="text-align: left">Fedora Linux</td>
<td style="text-align: left">unknown</td>
<td style="text-align: right">3</td>
<td style="text-align: right">0.0257</td>
</tr>
<tr>
<td style="text-align: left">FreeBSD</td>
<td style="text-align: left">unknown</td>
<td style="text-align: right">3</td>
<td style="text-align: right">0.0257</td>
</tr>
<tr>
<td style="text-align: left">Linux Mint</td>
<td style="text-align: left">unknown</td>
<td style="text-align: right">1</td>
<td style="text-align: right">0.0086</td>
</tr>
<tr>
<td style="text-align: left">Windows</td>
<td style="text-align: left">XP</td>
<td style="text-align: right">1</td>
<td style="text-align: right">0.0086</td>
</tr>
<tr>
<td style="text-align: left">NetBSD</td>
<td style="text-align: left">unknown</td>
<td style="text-align: right">1</td>
<td style="text-align: right">0.0086</td>
</tr>
</tbody>
<tfoot>
<tr>
<td style="text-align: left">合 計</td>
<td style="text-align: left"> </td>
<td style="text-align: right">11,682</td>
<td style="text-align: right">100.0000</td>
</tr>
</tfoot>
</table>
<h3 id="3-アクセスをブラウザ別に集計">3. アクセスをブラウザ別に集計</h3>
<table>
<thead>
<tr>
<th style="text-align: left">ブラウザ</th>
<th style="text-align: right">PageViews</th>
<th style="text-align: right">比率(%)</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">Chrome</td>
<td style="text-align: right">9,589</td>
<td style="text-align: right">82.0835</td>
</tr>
<tr>
<td style="text-align: left">Safari</td>
<td style="text-align: right">1,056</td>
<td style="text-align: right">9.0395</td>
</tr>
<tr>
<td style="text-align: left">Mozilla Firefox</td>
<td style="text-align: right">878</td>
<td style="text-align: right">7.5158</td>
</tr>
<tr>
<td style="text-align: left">Netscape Navigator</td>
<td style="text-align: right">159</td>
<td style="text-align: right">1.3611</td>
</tr>
</tbody>
<tfoot>
<tr>
<td style="text-align: left">合 計</td>
<td style="text-align: right">11,682</td>
<td style="text-align: right">100.0000</td>
</tr>
</tfoot>
</table>
<h3 id="4-アクセスをブラウザバージョン別に集計上位20件">4. アクセスをブラウザ・バージョン別に集計(上位20件)</h3>
<table>
<thead>
<tr>
<th style="text-align: left">ブラウザ</th>
<th style="text-align: left">Version</th>
<th style="text-align: right">PageViews</th>
<th style="text-align: right">比率(%)</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">Chrome</td>
<td style="text-align: left">119.0.0.0</td>
<td style="text-align: right">5,319</td>
<td style="text-align: right">45.5316</td>
</tr>
<tr>
<td style="text-align: left">Chrome</td>
<td style="text-align: left">118.0.0.0</td>
<td style="text-align: right">2,157</td>
<td style="text-align: right">18.4643</td>
</tr>
<tr>
<td style="text-align: left">Chrome</td>
<td style="text-align: left">116.0.0.0</td>
<td style="text-align: right">1,553</td>
<td style="text-align: right">13.2940</td>
</tr>
<tr>
<td style="text-align: left">Safari</td>
<td style="text-align: left">604.1</td>
<td style="text-align: right">766</td>
<td style="text-align: right">6.5571</td>
</tr>
<tr>
<td style="text-align: left">Mozilla Firefox</td>
<td style="text-align: left">119.0</td>
<td style="text-align: right">466</td>
<td style="text-align: right">3.9890</td>
</tr>
<tr>
<td style="text-align: left">Safari</td>
<td style="text-align: left">605.1.15</td>
<td style="text-align: right">287</td>
<td style="text-align: right">2.4568</td>
</tr>
<tr>
<td style="text-align: left">Chrome</td>
<td style="text-align: left">117.0.0.0</td>
<td style="text-align: right">186</td>
<td style="text-align: right">1.5922</td>
</tr>
<tr>
<td style="text-align: left">Netscape Navigator</td>
<td style="text-align: left">5.0</td>
<td style="text-align: right">159</td>
<td style="text-align: right">1.3611</td>
</tr>
<tr>
<td style="text-align: left">Mozilla Firefox</td>
<td style="text-align: left">115.0</td>
<td style="text-align: right">147</td>
<td style="text-align: right">1.2583</td>
</tr>
<tr>
<td style="text-align: left">Mozilla Firefox</td>
<td style="text-align: left">120.0</td>
<td style="text-align: right">89</td>
<td style="text-align: right">0.7619</td>
</tr>
<tr>
<td style="text-align: left">Mozilla Firefox</td>
<td style="text-align: left">102.0</td>
<td style="text-align: right">51</td>
<td style="text-align: right">0.4366</td>
</tr>
<tr>
<td style="text-align: left">Chrome</td>
<td style="text-align: left">114.0.0.0</td>
<td style="text-align: right">45</td>
<td style="text-align: right">0.3852</td>
</tr>
<tr>
<td style="text-align: left">Chrome</td>
<td style="text-align: left">115.0.0.0</td>
<td style="text-align: right">36</td>
<td style="text-align: right">0.3082</td>
</tr>
<tr>
<td style="text-align: left">Mozilla Firefox</td>
<td style="text-align: left">118.0</td>
<td style="text-align: right">36</td>
<td style="text-align: right">0.3082</td>
</tr>
<tr>
<td style="text-align: left">Chrome</td>
<td style="text-align: left">109.0.0.0</td>
<td style="text-align: right">35</td>
<td style="text-align: right">0.2996</td>
</tr>
<tr>
<td style="text-align: left">Chrome</td>
<td style="text-align: left">50.0.2661.102</td>
<td style="text-align: right">26</td>
<td style="text-align: right">0.2226</td>
</tr>
<tr>
<td style="text-align: left">Mozilla Firefox</td>
<td style="text-align: left">116.0</td>
<td style="text-align: right">24</td>
<td style="text-align: right">0.2054</td>
</tr>
<tr>
<td style="text-align: left">Chrome</td>
<td style="text-align: left">112.0.0.0</td>
<td style="text-align: right">23</td>
<td style="text-align: right">0.1969</td>
</tr>
<tr>
<td style="text-align: left">Chrome</td>
<td style="text-align: left">111.0.0.0</td>
<td style="text-align: right">16</td>
<td style="text-align: right">0.1370</td>
</tr>
<tr>
<td style="text-align: left">Chrome</td>
<td style="text-align: left">113.0.0.0</td>
<td style="text-align: right">13</td>
<td style="text-align: right">0.1113</td>
</tr>
<tr>
<td style="text-align: left">:</td>
<td style="text-align: left">:</td>
<td style="text-align: right">:</td>
<td style="text-align: right">:</td>
</tr>
</tbody>
<tfoot>
<tr>
<td style="text-align: left">合 計</td>
<td style="text-align: left"> </td>
<td style="text-align: right">11,682</td>
<td style="text-align: right">100.0000</td>
</tr>
</tfoot>
</table>
<hr />
<p>以上。</p>mk-mode.com12月になりましたので、先月11月分の当ブログアクセス状況を公開します。(※自分用の記録)Debian 12 (bookworm) - 全文検索エンジン Groonga インストール(by Groonga 公式リポジトリ)!2023-11-29T00:00:00+09:002023-11-29T00:00:00+09:00https://komasaru.github.io/2023/11/29/debian-12-groonga-installation-by-official-apt<p>Debian GNU/Linux 12 (bookworm) にカラムストア機能付き全文検索エンジン Groonga を Groonga の公式リポジトリを使用して導入する方法についての記録です。</p>
<p>以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。<br />
(当然ながら、興味がなければスルーしてください)</p>
<!--more-->
<h3 id="0-前提条件">0. 前提条件</h3>
<ul>
<li>Debian GNU/Linux 12.1.0 (bookworm; 64bit) での作業を想定。</li>
<li>当記事執筆時点で最新の Groonga 13.0.8 をインストールする。</li>
<li>トークナイザとして MeCab を使用することを想定。</li>
<li>トークンフィルタとして TokenFilterStem を使用することを想定。</li>
<li>ノーマライザとして MySQL 互換の groonga-normalizer-mysql を使用することを想定。(将来、 Mroonga を使用することを想定)</li>
<li>ここでは、全文検索がどういうものかという説明はしない。</li>
<li>root ユーザでの作業を想定。</li>
<li>以下の説明内で出力するデータは、可読性を考慮して整形している。</li>
</ul>
<h3 id="1-groonga-apt-source-パッケージのインストール">1. groonga-apt-source パッケージのインストール</h3>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt update
# apt install -y -V ca-certificates lsb-release wget
# wget https://apache.jfrog.io/artifactory/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
# apt install -y -V ./apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
# apt update
# wget https://packages.groonga.org/debian/groonga-apt-source-latest-$(lsb_release --codename --short).deb
# apt install -y -V ./groonga-apt-source-latest-$(lsb_release --codename --short).deb
# apt update
</code></pre></div></div>
<h3 id="2--groonga-のインストール">2. groonga のインストール</h3>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt install -y -V groonga
</code></pre></div></div>
<h3 id="3-日本語形態素解析器-mecab-のインストール">3. 日本語形態素解析器 MeCab のインストール</h3>
<p>(トークナイザとして MeCab を使用しないのなら、この作業は不要)</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt -y install mecab
</code></pre></div></div>
<h3 id="4-トークナイザ-mecab-のインストール">4. トークナイザ MeCab のインストール</h3>
<p>(トークナイザとして MeCab を使用しないのなら、この作業は不要)</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt install -y -V groonga-tokenizer-mecab
</code></pre></div></div>
<h3 id="5-トークンフィルタ-tokenfilterstem-のインストール">5. トークンフィルタ TokenFilterStem のインストール</h3>
<p>(トークンフィルタとして TokenFilterStem を使用しないのなら、この作業は不要)</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt install -y -V groonga-token-filter-stem
</code></pre></div></div>
<h3 id="6-munin-プラグインのインストール">6. Munin プラグインのインストール</h3>
<p>(Munin プラグインを使用しないのなら、この作業は不要)</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt install -y -V groonga-munin-plugins
</code></pre></div></div>
<ul>
<li>当記事執筆時点、エラーが発生してインストールできなかった。<br />
(この時点では munin 未設定。 munin 設定後ならインストール可能かも(未確認))</li>
</ul>
<h3 id="7-mysql-互換ノーマライザのインストール">7. MySQL 互換ノーマライザのインストール</h3>
<p>(ノーマライザとして groonga-normalizer-mysql を使用しないのなら、この作業は不要)</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt install -y -V groonga-normalizer-mysql
</code></pre></div></div>
<h3 id="8-インストール確認">8. インストール確認</h3>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ groonga --version
Groonga 13.0.8 [Linux,x86_64,utf8,match-escalation-threshold=0,nfkc,mecab,message-pack,mruby,onigmo,zlib,lz4,zstandard,epoll,rapidjson,apache-arrow,xxhash,blosc]
</code></pre></div></div>
<h3 id="9-動作確認">9. 動作確認</h3>
<p>(過去記事「<a href="/2015/08/09/linux-mint-groonga-installation-by-src/" title="Linux Mint - Groonga インストール(by ソースビルド)!">Linux Mint - Groonga インストール(by ソースビルド)!</a>」を参照)</p>
<h3 id="10-参考サイト">10. 参考サイト</h3>
<ul>
<li><a href="https://groonga.org/ja/docs/install/debian.html#bookworm" title="2.3. Debian GNU/Linux — Groonga v13.0.8 documentation">2.3. Debian GNU/Linux — Groonga v13.0.8 documentation</a></li>
</ul>
<hr />
<p>以上。</p>mk-mode.comDebian GNU/Linux 12 (bookworm) にカラムストア機能付き全文検索エンジン Groonga を Groonga の公式リポジトリを使用して導入する方法についての記録です。 以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。 (当然ながら、興味がなければスルーしてください)Debian 12 (bookworm) - Postfix ログ解析!2023-11-22T00:00:00+09:002023-11-22T00:00:00+09:00https://komasaru.github.io/2023/11/22/debian-12-postfix-log-analysis<p>Debian GNU/Linux 12 (bookworm) に導入した SMTP サーバ Postfix のログを解析する方法についての記録です。</p>
<p>以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。<br />
(当然ながら、興味がなければスルーしてください)</p>
<!--more-->
<h3 id="0-前提条件">0. 前提条件</h3>
<ul>
<li>Debian GNU/Linux 12 (bookworm; 64bit) での作業を想定。</li>
<li>接続元のマシンも Debian GNU/Linux 12 (bookworm; 64bit) を想定。</li>
<li>SMTP サーバ Postfix を「<a href="/2023/10/11/debian-12-postfix-installation" title="Debian 12 (bookworm) - SMTP サーバ Postfix 構築!">Debian 12 (bookworm) - SMTP サーバ Postfix 構築!</a>」の方法で導入済み。</li>
<li>ログローテート(<code class="language-plaintext highlighter-rouge">logrotate</code>)でメールログがローテーションされていることを想定。(デフォルトでなっているはず)</li>
<li>root ユーザでの作業を想定。</li>
</ul>
<h3 id="1-pflogsumm-のインストール">1. pflogsumm のインストール</h3>
<p>Postfix のログ解析ツールである pflogsumm を、以下のようにしてインストールする。</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt -y install pflogsumm
</code></pre></div></div>
<h3 id="2-pflogsumm-実行用スクリプトの作成">2. pflogsumm 実行用スクリプトの作成</h3>
<p>pflogsumm を実行するスクリプト <code class="language-plaintext highlighter-rouge">pflogsumm_report</code> を以下のように作成する。<br />
単純に <code class="language-plaintext highlighter-rouge">pflogsumm</code> コマンドを実行するだけでもレポートはできるが、それだとログローテートしている場合に正常に取得できない部分も発生する可能性があるので、それを考慮している。<br />
また、以下のスクリプトでは前日のメールログを解析し、結果を postmaster 宛にメール送信している。</p>
<p>File: <code class="language-plaintext highlighter-rouge">pflogsumm_report</code></p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#!/bin/bash</span>
<span class="nv">LANG</span><span class="o">=</span>C
<span class="nv">MAILLOG</span><span class="o">=</span><span class="s1">'mktemp'</span>
<span class="k">for </span>log <span class="k">in</span> <span class="sb">`</span><span class="nb">ls</span> /var/log/mail.log<span class="k">*</span>|sort <span class="nt">-r</span><span class="sb">`</span>
<span class="k">do
</span><span class="nb">cat</span> <span class="nv">$log</span> <span class="o">>></span> <span class="nv">$MAILLOG</span>
<span class="k">done
</span><span class="nv">REPORT</span><span class="o">=</span><span class="sb">`</span><span class="nb">mktemp</span><span class="sb">`</span>
pflogsumm <span class="nt">--problems_first</span> <span class="nt">--verbose_msg_detail</span> <span class="nt">--mailq</span> <span class="nt">-d</span> yesterday <span class="nv">$MAILLOG</span> <span class="o">></span> <span class="nv">$REPORT</span>
<span class="nb">cat</span> <span class="nv">$REPORT</span> | mail <span class="nt">-s</span> <span class="s2">"</span><span class="sb">`</span><span class="nb">head</span> <span class="nt">-1</span> <span class="nv">$REPORT</span><span class="sb">`</span><span class="s2"> in </span><span class="sb">`</span><span class="nb">uname</span> <span class="nt">-n</span><span class="sb">`</span><span class="s2">"</span> postmaster
<span class="nb">rm</span> <span class="nt">-f</span> <span class="nv">$MAILLOG</span> <span class="nv">$REPORT</span>
<span class="nb">exit</span>
</code></pre></div></div>
<p>スクリプト内のメール送信コマンド <code class="language-plaintext highlighter-rouge">mail</code> が使用できない場合は、<code class="language-plaintext highlighter-rouge">mailutils</code> or <code class="language-plaintext highlighter-rouge">heirloom-mailx</code> or <code class="language-plaintext highlighter-rouge">bsd-mailx</code> 等をインストールする。複数ある場合は、<code class="language-plaintext highlighter-rouge">update-alternatives --config mailx</code> でデフォルト設定をする。</p>
<p>なお、ログローテートしていない場合は、もっと簡単なスクリプトにすることも可能であるし、<code class="language-plaintext highlighter-rouge">pflogsumm</code> コマンドを直接実行して運用してもよい。</p>
<h3 id="3-実行権限の付与">3. 実行権限の付与</h3>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># chmod 700 pflogsumm_report
</code></pre></div></div>
<h3 id="4-スクリプトの実行">4. スクリプトの実行</h3>
<p>作成したスクリプトを実行してみる。<br />
(postfix の再起動が必要かも。これまで再起動は必要なかったが)<br />
問題がなければ、 postmaster 宛にメールが送信されるはずである。</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># ./pflogsumm_report
</code></pre></div></div>
<h3 id="5-自動実行の設定">5. 自動実行の設定</h3>
<p>毎日自動で実行するように cron 登録する。</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># mv pflogsumm_report /etc/cron.daily/
</code></pre></div></div>
<hr />
<p>以上。</p>mk-mode.comDebian GNU/Linux 12 (bookworm) に導入した SMTP サーバ Postfix のログを解析する方法についての記録です。 以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。 (当然ながら、興味がなければスルーしてください)Debian 12 (bookworm) - Postfix ウィルス・スパム対策(ClamAV)!2023-11-15T00:00:00+09:002023-11-15T00:00:00+09:00https://komasaru.github.io/2023/11/15/debian-12-postfix-anti-virus-with-clamav<p>Debian GNU/Linux 12 (bookworm) にアンチウイルスソフト ClamAV をインストールする方法についての記録です。</p>
<p>以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。<br />
(当然ながら、興味がなければスルーしてください)</p>
<!--more-->
<h3 id="0-前提条件">0. 前提条件</h3>
<ul>
<li>Debian GNU/Linux 12 (bookworm; 64bit) での作業を想定。</li>
<li>SMTP サーバ Postfix を「<a href="/2023/11/08/debian-12-mail-ssl-setting" title="Debian 12 (bookworm) - SMTP サーバ Postfix 構築!">Debian 12 (bookworm) - SMTP サーバ Postfix 構築!</a>」の方法で導入済み。</li>
<li>アンチウィルスソフト ClamAV 導入済み。</li>
<li>アンチウィルス ClamAV との連携には、 ClamAV daemon を使用する方法の他に、ClamSMTP を使用する方法もある。</li>
<li>root ユーザでの作業を想定。</li>
</ul>
<h3 id="1-インストール">1. インストール</h3>
<p>Postfix を ClamAV と連携させてウィルススキャンを行うのに必要な ClamAV daemon, amavisd-new を、以下のようにしてインストールする。</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt -y install clamav-daemon amavisd-new
</code></pre></div></div>
<h3 id="2-amavisd-new-設定ファイルの編集">2. amavisd-new 設定ファイルの編集</h3>
<p>Postfix と ClamAV を連携するのに必要な amavisd-new の設定ファイルを用意し、編集する。</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># cp /usr/share/doc/amavisd-new/examples/amavisd.conf-default /etc/amavis/amavisd.conf
</code></pre></div></div>
<p>File: <code class="language-plaintext highlighter-rouge">/etc/amavis/amavisd.conf</code></p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$myhostname</span> <span class="o">=</span> <span class="s1">'mail.mk-mode.com'</span><span class="p">;</span> <span class="c"># <= ホスト名</span>
<span class="nv">$mydomain</span> <span class="o">=</span> <span class="s1">'mk-mode.com'</span><span class="p">;</span> <span class="c"># <= ドメイン名</span>
<span class="nv">$daemon_user</span> <span class="o">=</span> <span class="s1">'amavis'</span><span class="p">;</span> <span class="c"># <= amavis デーモンユーザ名</span>
<span class="nv">$daemon_group</span> <span class="o">=</span> <span class="s1">'amavis'</span><span class="p">;</span> <span class="c"># <= amavis デーモングループ名</span>
<span class="nv">$MYHOME</span> <span class="o">=</span> <span class="s1">'/var/lib/amavis'</span><span class="p">;</span> <span class="c"># <= amavisd ホーム</span>
<span class="c"># $virus_admin = undef; # <= コメント化されていることを確認(ウィルス検知を都度通知しない)</span>
</code></pre></div></div>
<h3 id="3-15-content_filter_mode-の編集">3. 15-content_filter_mode の編集</h3>
<p>File: <code class="language-plaintext highlighter-rouge">/etc/amavis/conf.d/15-content_filter_mode</code></p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>@bypass_virus_checks_maps <span class="o">=</span> <span class="o">(</span> <span class="c"># <= コメント解除</span>
<span class="se">\%</span>bypass_virus_checks, <span class="se">\@</span>bypass_virus_checks_acl, <span class="se">\$</span>bypass_virus_checks_re<span class="o">)</span><span class="p">;</span> <span class="c"># <= コメント解除</span>
@bypass_spam_checks_maps <span class="o">=</span> <span class="o">(</span> <span class="c"># <= コメント解除</span>
<span class="se">\%</span>bypass_spam_checks, <span class="se">\@</span>bypass_spam_checks_acl, <span class="se">\$</span>bypass_spam_checks_re<span class="o">)</span><span class="p">;</span> <span class="c"># <= コメント解除</span>
</code></pre></div></div>
<p>ちなみに、<code class="language-plaintext highlighter-rouge">amavisd.conf</code> にも同じ記述がある。どちらを有効にしても良いだろう。</p>
<h3 id="4-15-av_scanners-の編集">4. 15-av_scanners の編集</h3>
<p>メールのウィルスチェックの度に clamscan が作動するとマシンが非力な場合は非常に重くなるため、 clamav-daemon が動作する今回の環境では clamdscan でウィルスチェックを行うこととする。(clamscan と clamdscan の違いについては、ここでは説明しない)</p>
<p>File: <code class="language-plaintext highlighter-rouge">/etc/amavis/conf.d/15-av_scanners</code></p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="c">#['ClamAV-clamscan', 'clamscan', # <= コメント化</span>
<span class="o">[</span><span class="s1">'ClamAV-clamscan'</span>, <span class="s1">'clamdscan'</span>, <span class="c"># <= 追加</span>
</code></pre></div></div>
<h3 id="5-20-debian_defaults-の編集-不要">5. 20-debian_defaults の編集 (不要?)</h3>
<p><code class="language-plaintext highlighter-rouge">Considered UNSOLICITED BULK EMAIL, apparently from you</code> というタイトルのメールが届くことがあるので、それを抑止するための設定を行う。</p>
<p>File: <code class="language-plaintext highlighter-rouge">/etc/amavis/conf.d/20-debian_defaults</code></p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#$final_banned_destiny = D_DISCARD;</span>
<span class="nv">$final_banned_destiny</span> <span class="o">=</span> D_REJECT<span class="p">;</span>
</code></pre></div></div>
<ul>
<li><code class="language-plaintext highlighter-rouge">D_PASS</code> … メールは受信者に配送される</li>
<li><code class="language-plaintext highlighter-rouge">D_REJECT</code> … メールは配送されないが、送信者に配送されなかった事を伝える</li>
<li><code class="language-plaintext highlighter-rouge">D_BOUNCE</code> … メールは配送されないが、送信者に配送されなかった事を伝える。例外で伝えない場合もある</li>
<li><code class="language-plaintext highlighter-rouge">D_DISCARD</code> … メールは配送されず、送信者にも配送されなかった事を伝えない</li>
</ul>
<h3 id="6-postfix---maincf-の編集">6. Postfix - main.cf の編集</h3>
<p>File: <code class="language-plaintext highlighter-rouge">/etc/postfix/main.cf</code></p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># 最終行へ追加</span>
<span class="nv">content_filter</span><span class="o">=</span>smtp-amavis:[127.0.0.1]:10024
</code></pre></div></div>
<h3 id="7-postfix---mastercf-の編集">7. Postfix - master.cf の編集</h3>
<p>File: <code class="language-plaintext highlighter-rouge">/etc/postfix/master.cf</code></p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># 最終行へ追加</span>
smtp-amavis unix - - n - 2 smtp
<span class="nt">-o</span> <span class="nv">smtp_data_done_timeout</span><span class="o">=</span>1200
<span class="nt">-o</span> <span class="nv">smtp_send_xforward_command</span><span class="o">=</span><span class="nb">yes</span>
<span class="nt">-o</span> <span class="nv">disable_dns_lookups</span><span class="o">=</span><span class="nb">yes
</span>127.0.0.1:10025 inet n - n - - smtpd
<span class="nt">-o</span> <span class="nv">content_filter</span><span class="o">=</span>
<span class="nt">-o</span> <span class="nv">local_recipient_maps</span><span class="o">=</span>
<span class="nt">-o</span> <span class="nv">relay_recipient_maps</span><span class="o">=</span>
<span class="nt">-o</span> <span class="nv">smtpd_restriction_classes</span><span class="o">=</span>
<span class="nt">-o</span> <span class="nv">smtpd_client_restrictions</span><span class="o">=</span>
<span class="nt">-o</span> <span class="nv">smtpd_helo_restrictions</span><span class="o">=</span>
<span class="nt">-o</span> <span class="nv">smtpd_sender_restrictions</span><span class="o">=</span>
<span class="nt">-o</span> <span class="nv">smtpd_recipient_restrictions</span><span class="o">=</span>permit_mynetworks,reject
<span class="nt">-o</span> <span class="nv">mynetworks</span><span class="o">=</span>127.0.0.0/8
<span class="nt">-o</span> <span class="nv">strict_rfc821_envelopes</span><span class="o">=</span><span class="nb">yes</span>
<span class="nt">-o</span> <span class="nv">smtpd_error_sleep_time</span><span class="o">=</span>0
<span class="nt">-o</span> <span class="nv">smtpd_soft_error_limit</span><span class="o">=</span>1001
<span class="nt">-o</span> <span class="nv">smtpd_hard_error_limit</span><span class="o">=</span>1000
</code></pre></div></div>
<h3 id="8-その他の設定">8. その他の設定</h3>
<p>処理に必要なファイルを作成したり、権限設定、ユーザ作成を行う。</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># touch /etc/mailname
# chmod -R 775 /var/lib/amavis/tmp
# usermod -G amavis clamav
</code></pre></div></div>
<h3 id="9-サービスの再起動">9. サービスの再起動</h3>
<p>ClamAV daemon, Postfix, Amavisd を再起動する。</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># systemctl restart clamav-daemon
# systemctl restart postfix
# systemctl restart amavis
</code></pre></div></div>
<h3 id="10-サービス自動起動の設定">10. サービス自動起動の設定</h3>
<p>デフォルトで自動起動する設定になっている。</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># systemctl is-enabled clamav-daemon
enabled
</code></pre></div></div>
<p><code class="language-plaintext highlighter-rouge">disabled</code> になっていれば、設定する。</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># systemctl enable clamav-daemon
</code></pre></div></div>
<h3 id="11-動作確認">11. 動作確認</h3>
<p>メールを送信してみる。</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># echo test | mail -s "TEST" root
</code></pre></div></div>
<p>受信メールのヘッダに <code class="language-plaintext highlighter-rouge">X-Virus-Scanned: Debian amavis at</code> の文字列が存在することが確認できれば成功である。(メールソフトでヘッダを表示できる。または、サーバ内に届いたメールファイルを開いてみる)</p>
<p>メール送信コマンド <code class="language-plaintext highlighter-rouge">mail</code> が使用できない場合は、 <code class="language-plaintext highlighter-rouge">mailutils</code> or <code class="language-plaintext highlighter-rouge">heirloom-mailx</code> or <code class="language-plaintext highlighter-rouge">bsd-mailx</code> 等をインストールする。複数ある場合は、<code class="language-plaintext highlighter-rouge">update-alternatives --config mailx</code> でデフォルト設定をする。</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Return-Path: <root@vbox.mk-mode.com>
X-Original-To: root@mk-mode.com
Delivered-To: root@mk-mode.com
Received: from localhost <span class="o">(</span>localhost <span class="o">[</span>127.0.0.1]<span class="o">)</span>
by mail.mk-mode.com <span class="o">(</span>Postfix<span class="o">)</span> with ESMTP <span class="nb">id </span>3E2698B
<span class="k">for</span> <root@mk-mode.com><span class="p">;</span> Mon, 16 Oct 2023 14:25:44 +0900 <span class="o">(</span>JST<span class="o">)</span>
X-Virus-Scanned: Debian amavis at vbox.mk-mode.com
Received: from mail.mk-mode.com <span class="o">([</span>127.0.0.1]<span class="o">)</span>
by localhost <span class="o">(</span>vbox.mk-mode.com <span class="o">[</span>127.0.0.1]<span class="o">)</span> <span class="o">(</span>amavis, port 10024<span class="o">)</span> with ESMTP
<span class="nb">id </span>gHktjXQxFmZn <span class="k">for</span> <root@mk-mode.com><span class="p">;</span> Mon, 16 Oct 2023 14:25:43 +0900 <span class="o">(</span>JST<span class="o">)</span>
Received: by mail.mk-mode.com <span class="o">(</span>Postfix, from userid 0<span class="o">)</span>
<span class="nb">id </span>BD0798A<span class="p">;</span> Mon, 16 Oct 2023 14:25:43 +0900 <span class="o">(</span>JST<span class="o">)</span>
Subject: TEST
To: root@mk-mode.com
User-Agent: mail <span class="o">(</span>GNU Mailutils 3.15<span class="o">)</span>
Date: Mon, 16 Oct 2023 14:25:43 +0900
Message-Id: <20231016052543.BD0798A@mail.mk-mode.com>
From: root <root@vbox.mk-mode.com>
<span class="nb">test</span>
</code></pre></div></div>
<hr />
<p>以上。</p>mk-mode.comDebian GNU/Linux 12 (bookworm) にアンチウイルスソフト ClamAV をインストールする方法についての記録です。 以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。 (当然ながら、興味がなければスルーしてください) [‘ClamAV-clamscan’, ‘clamdscan’, # <= 追加 ### 5. 20-debian_defaults の編集 (不要?) `Considered UNSOLICITED BULK EMAIL, apparently from you` というタイトルのメールが届くことがあるので、それを抑止するための設定を行う。 File: `/etc/amavis/conf.d/20-debian_defaults` ``` bash #$final_banned_destiny = D_DISCARD; $final_banned_destiny = D_REJECT; D_PASS … メールは受信者に配送される D_REJECT … メールは配送されないが、送信者に配送されなかった事を伝える D_BOUNCE … メールは配送されないが、送信者に配送されなかった事を伝える。例外で伝えない場合もある D_DISCARD … メールは配送されず、送信者にも配送されなかった事を伝えない 6. Postfix - main.cf の編集 File: /etc/postfix/main.cf ``` bash 最終行へ追加 content_filter=smtp-amavis:[127.0.0.1]:10024Debian 12 (bookworm) - メールサーバ SSL 設定!2023-11-08T00:00:00+09:002023-11-08T00:00:00+09:00https://komasaru.github.io/2023/11/08/debian-12-mail-ssl-setting<p>Debian GNU/Linux 12 (bookworm) に導入したメールサーバを SSL 設定する方法についての記録です。</p>
<p>以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。<br />
(当然ながら、興味がなければスルーしてください)</p>
<!--more-->
<h3 id="0-前提条件">0. 前提条件</h3>
<ul>
<li>Debian GNU/Linux 12 (bookworm; 64bit) での作業を想定。</li>
<li>接続元のマシンも Debian GNU/Linux 12 (bookworm; 64bit) を想定。</li>
<li>SMTP サーバは Postfix, POP/IMAP サーバは Dovecot を想定。
<ul>
<li>Postfix を「<a href="/2023/10/11/debian-12-postfix-installation" title="Debian 12 (bookworm) - SMTP サーバ Postfix 構築!">Debian 12 (bookworm) - SMTP サーバ Postfix 構築!</a>」の方法で導入済み。</li>
<li>Dovecot を「<a href="/2023/10/25/debian-12-dovecot-installation" title="Debian 12 (bookworm) - POP/IMAP サーバ Dovecot 構築!">Debian 12 (bookworm) - POP/IMAP サーバ Dovecot 構築!</a>」の方法で導入済み。</li>
</ul>
</li>
<li>接続可能なマシンのネットワークは <code class="language-plaintext highlighter-rouge">192.168.11.0/24</code> を想定。</li>
<li>ドメイン名は <code class="language-plaintext highlighter-rouge">mk-mode.com</code>、サーバホスト名は <code class="language-plaintext highlighter-rouge">vbox</code> を想定。</li>
<li>SSL サーバ OpenSSL 導入済み。(インストールは <code class="language-plaintext highlighter-rouge">apt -y install openssl</code> でよい)</li>
<li>root ユーザでの作業を想定。</li>
</ul>
<h3 id="1-ssl-証明書の作成">1. SSL 証明書の作成</h3>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># cd /etc/ssl/private
# openssl genrsa -aes128 -out server.key 2048
Enter PEM pass phrase: # <= サーバ証明書用パスワード設定
Verifying - Enter PEM pass phrase: # <= サーバ証明書用パスワード確認入力
# openssl rsa -in server.key -out server.key
Enter pass phrase for server.key: # <= サーバ証明書用パスワード応答
writing RSA key
# openssl req -new -days 3650 -key server.key -out server.csr
Ignoring -days without -x509; not generating a certificate
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP # <= 国の略名
State or Province Name (full name) [Some-State]:Shimane # <= 都道府県名
Locality Name (eg, city) []:Matsue # <= 市区町村名
Organization Name (eg, company) [Internet Widgits Pty Ltd]:mk-mode.com # <= サイト名(何でもよい)
Organizational Unit Name (eg, section) []: # <= 部署名(空でよい)
Common Name (e.g. server FQDN or YOUR name) []:mail.mk-mode.com # <= ホスト名
Email Address []:postmaster@mk-mode.com # <= 管理者メールアドレス
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: # <= 追加属性・空エンターでよい
An optional company name []: # <= 追加属性・空エンターでよい
# openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650
Certificate request self-signature ok
subject=C = JP, ST = Shimane, L = Matsue, O = mk-mode.com, CN = mail.mk-mode.com, emailAddress = postmaster@mk-mode.com
# chmod 400 server.*
</code></pre></div></div>
<h3 id="2-postfix---maincf-の設定">2. Postfix - main.cf の設定</h3>
<p>File: <code class="language-plaintext highlighter-rouge">/etc/postfix/main.cf</code></p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># SSL 用(最終行に追加)</span>
smtpd_use_tls <span class="o">=</span> <span class="nb">yes
</span>smtp_tls_mandatory_protocols <span class="o">=</span> <span class="o">!</span>SSLv2, <span class="o">!</span>SSLv3
smtpd_tls_mandatory_protocols <span class="o">=</span> <span class="o">!</span>SSLv2, <span class="o">!</span>SSLv3
smtpd_tls_cert_file <span class="o">=</span> /etc/ssl/private/server.crt
smtpd_tls_key_file <span class="o">=</span> /etc/ssl/private/server.key
smtpd_tls_session_cache_database <span class="o">=</span> btree:<span class="k">${</span><span class="nv">data_directory</span><span class="k">}</span>/smtpd_scache
</code></pre></div></div>
<h3 id="3-postfix---mastercf-の編集">3. Postfix - master.cf の編集</h3>
<p>File: <code class="language-plaintext highlighter-rouge">/etc/postfix/master.cf</code></p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># コメント解除</span>
submission inet n - y - - smtpd
<span class="nt">-o</span> <span class="nv">syslog_name</span><span class="o">=</span>postfix/submission
<span class="c"># -o smtpd_tls_security_level=encrypt</span>
<span class="nt">-o</span> <span class="nv">smtpd_sasl_auth_enable</span><span class="o">=</span><span class="nb">yes</span>
<span class="c"># 最終行に追記</span>
smtps inet n - y - - smtpd
<span class="nt">-o</span> <span class="nv">syslog_name</span><span class="o">=</span>postfix/smtps
<span class="nt">-o</span> <span class="nv">smtpd_tls_wrappermode</span><span class="o">=</span><span class="nb">yes</span>
<span class="nt">-o</span> <span class="nv">smtpd_sasl_auth_enable</span><span class="o">=</span><span class="nb">yes</span>
</code></pre></div></div>
<h3 id="4-dovecot---10-sslconf-の編集">4. Dovecot - 10-ssl.conf の編集</h3>
<p>File: <code class="language-plaintext highlighter-rouge">/etc/dovecot/conf.d/10-ssl.conf</code></p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># SSL 有効化</span>
ssl <span class="o">=</span> <span class="nb">yes</span>
<span class="c"># 証明書/鍵ファイル指定</span>
ssl_cert <span class="o">=</span> </etc/ssl/private/server.crt
ssl_key <span class="o">=</span> </etc/ssl/private/server.key
</code></pre></div></div>
<h3 id="5-postfix-dovecot-の再起動">5. Postfix, Dovecot の再起動</h3>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># systemctl restart postfix dovecot
</code></pre></div></div>
<h3 id="6-ファイアウォールufwの設定">6. ファイアウォール(ufw)の設定</h3>
<p>実際に運用する場合は、TCP ポート 465(SMTPS), 993(IMAPS), 995(POP3S) を開放する必要がある。</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># ufw allow 465,993,995/tcp
Rule added
# ufw status
:
465,993,995/tcp ALLOW Anywhere
:
</code></pre></div></div>
<h3 id="7-メールソフトの設定">7. メールソフトの設定</h3>
<p>メールソフトではポート番号を変更すればよい。</p>
<ul>
<li>受信メールサーバポート:<code class="language-plaintext highlighter-rouge">993</code>(IMAP) or <code class="language-plaintext highlighter-rouge">995</code>(POP)</li>
<li>送信メールサーバポート:<code class="language-plaintext highlighter-rouge">465</code></li>
</ul>
<p>認証警告画面が表示され、認証すれば(例外として承認すれば) SSL 通信で送受信できるようになる。</p>
<hr />
<p>以上。</p>mk-mode.comDebian GNU/Linux 12 (bookworm) に導入したメールサーバを SSL 設定する方法についての記録です。 以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。 (当然ながら、興味がなければスルーしてください)2023年10月 - OS・ブラウザ別アクセス状況!2023-11-01T00:00:00+09:002023-11-01T00:00:00+09:00https://komasaru.github.io/2023/11/01/blog-access<p>11月になりましたので、先月10月分の当ブログアクセス状況を公開します。(※自分用の記録)</p>
<!--more-->
<h3 id="1-アクセスをos別に集計">1. アクセスをOS別に集計</h3>
<table>
<thead>
<tr>
<th style="text-align: left">OS</th>
<th style="text-align: right">PageViews</th>
<th style="text-align: right">比率(%)</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">Windows</td>
<td style="text-align: right">11,340</td>
<td style="text-align: right">72.8792</td>
</tr>
<tr>
<td style="text-align: left">Mac OS</td>
<td style="text-align: right">2,516</td>
<td style="text-align: right">16.1697</td>
</tr>
<tr>
<td style="text-align: left">Linux</td>
<td style="text-align: right">837</td>
<td style="text-align: right">5.3792</td>
</tr>
<tr>
<td style="text-align: left">Android</td>
<td style="text-align: right">572</td>
<td style="text-align: right">3.6761</td>
</tr>
<tr>
<td style="text-align: left">unknown</td>
<td style="text-align: right">158</td>
<td style="text-align: right">1.0154</td>
</tr>
<tr>
<td style="text-align: left">Ubuntu Linux</td>
<td style="text-align: right">132</td>
<td style="text-align: right">0.8483</td>
</tr>
<tr>
<td style="text-align: left">FreeBSD</td>
<td style="text-align: right">4</td>
<td style="text-align: right">0.0257</td>
</tr>
<tr>
<td style="text-align: left">Fedora Linux</td>
<td style="text-align: right">1</td>
<td style="text-align: right">0.0064</td>
</tr>
</tbody>
<tfoot>
<tr>
<td style="text-align: left">合 計</td>
<td style="text-align: right">15,560</td>
<td style="text-align: right">100.0000</td>
</tr>
</tfoot>
</table>
<h3 id="2-アクセスをosバージョン別に集計">2. アクセスをOS・バージョン別に集計</h3>
<table>
<thead>
<tr>
<th style="text-align: left">OS</th>
<th style="text-align: left">Version</th>
<th style="text-align: right">PageViews</th>
<th style="text-align: right">比率(%)</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">Windows</td>
<td style="text-align: left">10</td>
<td style="text-align: right">11,260</td>
<td style="text-align: right">72.3650</td>
</tr>
<tr>
<td style="text-align: left">Mac OS</td>
<td style="text-align: left">X</td>
<td style="text-align: right">2,516</td>
<td style="text-align: right">16.1697</td>
</tr>
<tr>
<td style="text-align: left">Linux</td>
<td style="text-align: left">unknown</td>
<td style="text-align: right">837</td>
<td style="text-align: right">5.3792</td>
</tr>
<tr>
<td style="text-align: left">Android</td>
<td style="text-align: left">unknown</td>
<td style="text-align: right">572</td>
<td style="text-align: right">3.6761</td>
</tr>
<tr>
<td style="text-align: left">unknown</td>
<td style="text-align: left">unknown</td>
<td style="text-align: right">158</td>
<td style="text-align: right">1.0154</td>
</tr>
<tr>
<td style="text-align: left">Ubuntu Linux</td>
<td style="text-align: left">unknown</td>
<td style="text-align: right">132</td>
<td style="text-align: right">0.8483</td>
</tr>
<tr>
<td style="text-align: left">Windows</td>
<td style="text-align: left">7</td>
<td style="text-align: right">53</td>
<td style="text-align: right">0.3406</td>
</tr>
<tr>
<td style="text-align: left">Windows</td>
<td style="text-align: left">8.1</td>
<td style="text-align: right">23</td>
<td style="text-align: right">0.1478</td>
</tr>
<tr>
<td style="text-align: left">FreeBSD</td>
<td style="text-align: left">unknown</td>
<td style="text-align: right">4</td>
<td style="text-align: right">0.0257</td>
</tr>
<tr>
<td style="text-align: left">Windows</td>
<td style="text-align: left">XP</td>
<td style="text-align: right">3</td>
<td style="text-align: right">0.0193</td>
</tr>
<tr>
<td style="text-align: left">Fedora Linux</td>
<td style="text-align: left">unknown</td>
<td style="text-align: right">1</td>
<td style="text-align: right">0.0064</td>
</tr>
<tr>
<td style="text-align: left">Windows</td>
<td style="text-align: left">8</td>
<td style="text-align: right">1</td>
<td style="text-align: right">0.0064</td>
</tr>
</tbody>
<tfoot>
<tr>
<td style="text-align: left">合 計</td>
<td style="text-align: left"> </td>
<td style="text-align: right">15,560</td>
<td style="text-align: right">100.0000</td>
</tr>
</tfoot>
</table>
<h3 id="3-アクセスをブラウザ別に集計">3. アクセスをブラウザ別に集計</h3>
<table>
<thead>
<tr>
<th style="text-align: left">ブラウザ</th>
<th style="text-align: right">PageViews</th>
<th style="text-align: right">比率(%)</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">Chrome</td>
<td style="text-align: right">12,896</td>
<td style="text-align: right">82.8792</td>
</tr>
<tr>
<td style="text-align: left">Mozilla Firefox</td>
<td style="text-align: right">1,350</td>
<td style="text-align: right">8.6761</td>
</tr>
<tr>
<td style="text-align: left">Safari</td>
<td style="text-align: right">1,179</td>
<td style="text-align: right">7.5771</td>
</tr>
<tr>
<td style="text-align: left">Netscape Navigator</td>
<td style="text-align: right">131</td>
<td style="text-align: right">0.8419</td>
</tr>
<tr>
<td style="text-align: left">Internet Explorer</td>
<td style="text-align: right">3</td>
<td style="text-align: right">0.0193</td>
</tr>
<tr>
<td style="text-align: left">unknown</td>
<td style="text-align: right">1</td>
<td style="text-align: right">0.0064</td>
</tr>
</tbody>
<tfoot>
<tr>
<td style="text-align: left">合 計</td>
<td style="text-align: right">15,560</td>
<td style="text-align: right">100.0000</td>
</tr>
</tfoot>
</table>
<h3 id="4-アクセスをブラウザバージョン別に集計上位20件">4. アクセスをブラウザ・バージョン別に集計(上位20件)</h3>
<table>
<thead>
<tr>
<th style="text-align: left">ブラウザ</th>
<th style="text-align: left">Version</th>
<th style="text-align: right">PageViews</th>
<th style="text-align: right">比率(%)</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">Chrome</td>
<td style="text-align: left">117.0.0.0</td>
<td style="text-align: right">5,213</td>
<td style="text-align: right">33.5026</td>
</tr>
<tr>
<td style="text-align: left">Chrome</td>
<td style="text-align: left">118.0.0.0</td>
<td style="text-align: right">3,878</td>
<td style="text-align: right">24.9229</td>
</tr>
<tr>
<td style="text-align: left">Chrome</td>
<td style="text-align: left">116.0.0.0</td>
<td style="text-align: right">3,196</td>
<td style="text-align: right">20.5398</td>
</tr>
<tr>
<td style="text-align: left">Safari</td>
<td style="text-align: left">604.1</td>
<td style="text-align: right">838</td>
<td style="text-align: right">5.3856</td>
</tr>
<tr>
<td style="text-align: left">Mozilla Firefox</td>
<td style="text-align: left">118.0</td>
<td style="text-align: right">659</td>
<td style="text-align: right">4.2352</td>
</tr>
<tr>
<td style="text-align: left">Safari</td>
<td style="text-align: left">605.1.15</td>
<td style="text-align: right">337</td>
<td style="text-align: right">2.1658</td>
</tr>
<tr>
<td style="text-align: left">Mozilla Firefox</td>
<td style="text-align: left">115.0</td>
<td style="text-align: right">307</td>
<td style="text-align: right">1.9730</td>
</tr>
<tr>
<td style="text-align: left">Netscape Navigator</td>
<td style="text-align: left">5.0</td>
<td style="text-align: right">131</td>
<td style="text-align: right">0.8419</td>
</tr>
<tr>
<td style="text-align: left">Chrome</td>
<td style="text-align: left">114.0.0.0</td>
<td style="text-align: right">90</td>
<td style="text-align: right">0.5784</td>
</tr>
<tr>
<td style="text-align: left">Mozilla Firefox</td>
<td style="text-align: left">102.0</td>
<td style="text-align: right">89</td>
<td style="text-align: right">0.5720</td>
</tr>
<tr>
<td style="text-align: left">Chrome</td>
<td style="text-align: left">115.0.0.0</td>
<td style="text-align: right">82</td>
<td style="text-align: right">0.5270</td>
</tr>
<tr>
<td style="text-align: left">Mozilla Firefox</td>
<td style="text-align: left">117.0</td>
<td style="text-align: right">82</td>
<td style="text-align: right">0.5270</td>
</tr>
<tr>
<td style="text-align: left">Chrome</td>
<td style="text-align: left">109.0.0.0</td>
<td style="text-align: right">78</td>
<td style="text-align: right">0.5013</td>
</tr>
<tr>
<td style="text-align: left">Mozilla Firefox</td>
<td style="text-align: left">119.0</td>
<td style="text-align: right">78</td>
<td style="text-align: right">0.5013</td>
</tr>
<tr>
<td style="text-align: left">Mozilla Firefox</td>
<td style="text-align: left">78.0</td>
<td style="text-align: right">43</td>
<td style="text-align: right">0.2763</td>
</tr>
<tr>
<td style="text-align: left">Chrome</td>
<td style="text-align: left">112.0.0.0</td>
<td style="text-align: right">34</td>
<td style="text-align: right">0.2185</td>
</tr>
<tr>
<td style="text-align: left">Chrome</td>
<td style="text-align: left">116.0.5845.2271</td>
<td style="text-align: right">29</td>
<td style="text-align: right">0.1864</td>
</tr>
<tr>
<td style="text-align: left">Chrome</td>
<td style="text-align: left">50.0.2661.102</td>
<td style="text-align: right">24</td>
<td style="text-align: right">0.1542</td>
</tr>
<tr>
<td style="text-align: left">Chrome</td>
<td style="text-align: left">108.0.5359.128</td>
<td style="text-align: right">21</td>
<td style="text-align: right">0.1350</td>
</tr>
<tr>
<td style="text-align: left">Chrome</td>
<td style="text-align: left">111.0.0.0</td>
<td style="text-align: right">19</td>
<td style="text-align: right">0.1221</td>
</tr>
<tr>
<td style="text-align: left">:</td>
<td style="text-align: left">:</td>
<td style="text-align: right">:</td>
<td style="text-align: right">:</td>
</tr>
</tbody>
<tfoot>
<tr>
<td style="text-align: left">合 計</td>
<td style="text-align: left"> </td>
<td style="text-align: right">15,560</td>
<td style="text-align: right">100.0000</td>
</tr>
</tfoot>
</table>
<hr />
<p>以上。</p>mk-mode.com11月になりましたので、先月10月分の当ブログアクセス状況を公開します。(※自分用の記録)Debian 12 (bookworm) - POP/IMAP サーバ Dovecot 構築!2023-10-25T00:00:00+09:002023-10-25T00:00:00+09:00https://komasaru.github.io/2023/10/25/debian-12-dovecot-installation<p>Debian GNU/Linux 12 (bookworm) に POP/IMAP サーバ Dovecot を構築する方法についての記録です。</p>
<p>以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。<br />
(当然ながら、興味がなければスルーしてください)</p>
<!--more-->
<h3 id="0-前提条件">0. 前提条件</h3>
<ul>
<li>Debian GNU/Linux 12 (bookworm; 64bit) での作業を想定。</li>
<li>接続元のマシンも Debian GNU/Linux 12 (bookworm; 64bit) を想定。</li>
<li>接続可能なマシンのネットワークは <code class="language-plaintext highlighter-rouge">192.168.11.0/24</code> を想定。</li>
<li>ドメイン名は <code class="language-plaintext highlighter-rouge">mk-mode.com</code>、サーバホスト名は <code class="language-plaintext highlighter-rouge">vbox</code> を想定。</li>
<li>root ユーザでの作業を想定。</li>
</ul>
<h3 id="1-dovecot-のインストール">1. Dovecot のインストール</h3>
<p>POP/IMAP サーバ Dovecot を以下のようにしてインストールする。</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt -y install dovecot-common dovecot-pop3d dovecot-imapd
</code></pre></div></div>
<h3 id="2-設定ファイル-dovecotconf-の編集">2. 設定ファイル dovecot.conf の編集</h3>
<p>File: <code class="language-plaintext highlighter-rouge">/etc/dovecot/dovecot.conf</code></p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>listen <span class="o">=</span> <span class="k">*</span> <span class="c"># <= IPv6を使用しない場合</span>
</code></pre></div></div>
<h3 id="3-設定ファイル-10-authconf-の編集">3. 設定ファイル 10-auth.conf の編集</h3>
<p>File: <code class="language-plaintext highlighter-rouge">/etc/dovecot/conf.d/10-auth.conf</code></p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>disable_plaintext_auth <span class="o">=</span> no <span class="c"># <= プレーンテキスト認証も許可</span>
auth_mechanisms <span class="o">=</span> plain login <span class="c"># <= 認証時のパスフレーズ送信方式</span>
</code></pre></div></div>
<h3 id="4-設定ファイル-10-mailconf-の編集">4. 設定ファイル 10-mail.conf の編集</h3>
<p>File: <code class="language-plaintext highlighter-rouge">/etc/dovecot/conf.d/10-mail.conf</code></p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mail_location <span class="o">=</span> maildir:~/Maildir <span class="c"># <= メールボックス形式をMaildir形式</span>
</code></pre></div></div>
<h3 id="5-設定ファイル-10-masterconf-の編集">5. 設定ファイル 10-master.conf の編集</h3>
<p>File: <code class="language-plaintext highlighter-rouge">/etc/dovecot/conf.d/10-master.conf</code></p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Postfix smtp-auth</span>
unix_listener /var/spool/postfix/private/auth <span class="o">{</span> <span class="c"># <= コメント解除</span>
mode <span class="o">=</span> 0666 <span class="c"># <= コメント解除</span>
user <span class="o">=</span> postfix <span class="c"># <= 追加(ユーザ)</span>
group <span class="o">=</span> postfix <span class="c"># <= 追加(グループ)</span>
<span class="o">}</span> <span class="c"># <= コメント解除</span>
</code></pre></div></div>
<h3 id="6-dovecot-の再起動">6. Dovecot の再起動</h3>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># systemctl restart dovecot
</code></pre></div></div>
<h3 id="7-ファイアウォールufwの設定">7. ファイアウォール(ufw)の設定</h3>
<p>実際に運用する場合は、TCPポート 110(POP3), 143(IMAP) を開放する必要がある。</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># ufw allow 110,143/tcp
Rule added
# ufw status
:
110,143/tcp ALLOW Anywhere
:
</code></pre></div></div>
<h3 id="8-メールソフトの設定">8. メールソフトの設定</h3>
<p>Postfix, Dovecot 構築が完了すれば、メールソフトでメールの送受信が可能になる。<br />
メールソフトでは以下のように設定すればよい。</p>
<ul>
<li>メールアドレス:<code class="language-plaintext highlighter-rouge">アカウント名@メールホスト名</code></li>
<li>パスワード:<code class="language-plaintext highlighter-rouge">アカウントのパスワード</code></li>
<li>受信メールサーバ:<code class="language-plaintext highlighter-rouge">POP</code> or <code class="language-plaintext highlighter-rouge">IMAP</code></li>
<li>受信メールサーバアドレス:<code class="language-plaintext highlighter-rouge">メールホスト名</code>(内部なら <code class="language-plaintext highlighter-rouge">サーバローカルIPアドレス</code> でもよい)</li>
<li>受信メールサーバポート番号:<code class="language-plaintext highlighter-rouge">110</code>(POP) or <code class="language-plaintext highlighter-rouge">143</code>(IMAP)</li>
<li>ログオンユーザ:<code class="language-plaintext highlighter-rouge">アカウント名</code></li>
<li>送信メールサーバアドレス:<code class="language-plaintext highlighter-rouge">メールホスト名</code>(内部なら <code class="language-plaintext highlighter-rouge">サーバローカルIPアドレス</code> でもよい)</li>
<li>送信メールサーバポート番号:<code class="language-plaintext highlighter-rouge">25</code></li>
<li>送信認証:「必要」</li>
</ul>
<hr />
<p>以上。</p>mk-mode.comDebian GNU/Linux 12 (bookworm) に POP/IMAP サーバ Dovecot を構築する方法についての記録です。 以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。 (当然ながら、興味がなければスルーしてください)Debian 12 (bookworm) - SMTP サーバ Postfix 受信拒否設定!2023-10-18T00:00:00+09:002023-10-18T00:00:00+09:00https://komasaru.github.io/2023/10/18/debian-12-postfix-reject-reception<p>Debian GNU/Linux 12 (bookworm) 上の SMTP サーバ Postfix で受信を拒否する設定についての記録です。</p>
<p>(当然ながら、興味がなければスルーしてください)</p>
<!--more-->
<h3 id="0-前提条件">0. 前提条件</h3>
<ul>
<li>Debian GNU/Linux 12 (bookworm; 64bit) での作業を想定。</li>
<li>SMTP サーバ Postfix を「<a href="/2023/10/11/debian-12-postfix-installation" title="Debian 12 (bookworm) - SMTP サーバ Postfix 構築!">Debian 12 (bookworm) - SMTP サーバ Postfix 構築!</a>」の方法で導入済み。</li>
<li>メールの header や body の内容をチェックしてフィルタリングする設定。</li>
<li>root ユーザでの作業を想定。</li>
</ul>
<h3 id="1-設定ファイル-maincf-の編集">1. 設定ファイル main.cf の編集</h3>
<p>コメントアウトされていれば、アンコメントする。<br />
行自体が存在しなければ、追加する。</p>
<p>File: <code class="language-plaintext highlighter-rouge">/etc/postfix/main.cf</code></p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>header_checks <span class="o">=</span> regexp:/etc/postfix/header_checks
body_checks <span class="o">=</span> regexp:/etc/postfix/body_checks
</code></pre></div></div>
<h3 id="2-header-のフィルタリング設定">2. header のフィルタリング設定</h3>
<p>以下は header の <code class="language-plaintext highlighter-rouge">Received</code> に <code class="language-plaintext highlighter-rouge">aznavrchol.cz</code> があれば、そのメールを受信拒否してエラーにする例。<br />
(受信拒否でなく、受信して破棄したければ <code class="language-plaintext highlighter-rouge">DISCARD</code> にする)</p>
<p>File: <code class="language-plaintext highlighter-rouge">/etc/postfix/header_checks</code></p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/^Received:.<span class="k">*</span>aznavrchol<span class="se">\.</span>cz/ REJECT
</code></pre></div></div>
<ul>
<li><code class="language-plaintext highlighter-rouge">Received</code> の他に、 <code class="language-plaintext highlighter-rouge">Subject</code>, <code class="language-plaintext highlighter-rouge">From</code>, <code class="language-plaintext highlighter-rouge">X-Mailer-Agent</code> 等、 <strong>正規表現</strong> を使用して設定可能。</li>
</ul>
<h3 id="3-body-のフィルタリング設定">3. body のフィルタリング設定</h3>
<p>以下は body の内容に <code class="language-plaintext highlighter-rouge">Bitcoin</code> or <code class="language-plaintext highlighter-rouge">bitcoin</code> があれば、そのメールを受信拒否してエラーにする例。<br />
※以下、実際の設定内容。(230926 現在)</p>
<p>File: <code class="language-plaintext highlighter-rouge">/etc/postfix/body_checks</code></p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/.<span class="k">*</span><span class="o">[</span>Bb]itcoin.<span class="k">*</span>/ REJECT
</code></pre></div></div>
<p>(受信拒否でなく、受信して破棄したければ <code class="language-plaintext highlighter-rouge">DISCARD</code> にする)</p>
<p>※上記の設定で、メール本文に <code class="language-plaintext highlighter-rouge">Bitcoin</code> や <code class="language-plaintext highlighter-rouge">bitcoin</code> がある場合に廃棄するようになるが、この場合、メールログ解析(後日紹介予定の pflogsumm )の結果メールも廃棄してしまうので、注意。</p>
<h3 id="4-設定のリロード">4. 設定のリロード</h3>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># postmap /etc/postfix/header_checks
# postmap /etc/postfix/body_checks
# systemctl reload postfix
</code></pre></div></div>
<hr />
<p>これで、 Postfix のみで基本的な header, body のフィルタリングが可能になる。</p>
<hr />
<p>以上。</p>mk-mode.comDebian GNU/Linux 12 (bookworm) 上の SMTP サーバ Postfix で受信を拒否する設定についての記録です。 (当然ながら、興味がなければスルーしてください)