ゆう's Blog
BIND設定更新

BIND を再起動する

systemctl restart named-chroot

named.conf 編集時

rndc reconfig

ゾーンファイル編集時

rndc reload example.com

rndc: 'reload' failed: dynamic zone

rndc reload example.com rndc: 'reload' failed: dynamic zone

このエラーは、ゾーンが allow-update または update-policy により動的更新(nsupdate)を許可しているため、手動編集 + reload が禁止されるという意味です。

動的ゾーンを一時的にフリーズ して編集 → thaw

rndc freeze example.com vi /var/named/example.com.zone # または chroot 側のパス rndc thaw example.com

メールに Certbot

mail.example.com の A レコードが Web サーバーの IP を向いていること。

証明書取得だけならバーチャルホスト不要
mail.example.com が Web 表示できなくても問題なし
404 が出ても Certbot は成功する

CentOS Stream 10 で FFmpeg を dnf インストールする

RPM Fusion Free, Nonfree リポジトリを追加する

# dnf install https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-10.noarch.rpm

# dnf install https://mirrors.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-10.noarch.rpm

FFmpeg をインストールする(依存関係として EPEL が必要)

# dnf --enablerepo=epel install ffmpeg ffmpeg-devel

インストール確認

# ffmpeg -version

PDFをJPEGに変換する(Ghostscript)

:~$ sudo dnf install ghostscript

:~$ ghostscript \ -dNOPAUSE -dBATCH -dSAFER \ -sDEVICE=jpeg \ -dJPEGQ=95 \ -r600 \ -dUseCIEColor \ -dColorConversionStrategy=/sRGB \ -dEmbedAllFonts=true \ -dDownScaleFactor=1 \ -sOutputFile=page-%03d.jpg \ input.pdf

各オプションの意味

● -dNOPAUSE / -dBATCH
複数ページ PDF を処理するための基本動作。
削ると ページごとに停止してしまう。

● -dSAFER
セキュリティ強化。
PHP の exec から呼ぶ場合は必須。
ローカル用途なら外部入力がないため不要。

● -sDEVICE=jpeg
JPEG 出力を指定。

● -dJPEGQ=95
JPEG 品質。
95 は「ほぼ可逆に近い最高品質」。
100 は逆にノイズが増えるので非推奨。

● -r600
600dpi でレンダリング。
300dpi → 印刷品質
600dpi → 文字・図形が非常にシャープ

● -dUseCIEColor / -dColorConversionStrategy=/sRGB
PDF の CMYK → RGB 変換を Ghostscript の CIEColor で高精度に行う。
色ズレを最小化するための必須設定。

● -dEmbedAllFonts=true
フォント埋め込みを強制。
PDF 内のフォントが不完全でも Ghostscript が補完して描画。

● -dDownScaleFactor=1
Ghostscript の内部ダウンサンプリングを無効化。
→ 画質劣化を完全に防ぐ。

● -sOutputFile=page-%03d.jpg
複数ページ PDF に対応。
page-001.jpg / page-002.jpg … のように出力。

上記は Web 用(RGB)。印刷用(CMYK)の場合は下記。

:~$ ghostscript \ -dNOPAUSE -dBATCH \ -sDEVICE=tiff32nc \ -r600 \ -dUseCIEColor \ -dColorConversionStrategy=/CMYK \ -dProcessColorModel=/DeviceCMYK \ -dEmbedAllFonts=true \ -dDownScaleFactor=1 \ -sOutputFile=page-%03d.tif \ input.pdf

● - tiff32nc
TIFF の 32bit CMYK(8bit × 4ch)。
印刷用途で最も安定し、可逆圧縮(LZW/ZIP)も適用可能。

● - 600dpi
印刷の標準は 300dpi ですが、
600dpi は文字・図形が極めてシャープ。

● - ColorConversionStrategy=/CMYK
出力色空間を CMYK に固定。
RGB PDF でも CMYK PDF でも、確実に CMYK で出力。

● - ProcessColorModel=/DeviceCMYK
Ghostscript の内部処理も CMYK に統一。
これがないと内部で RGB→CMYK→RGB→CMYK のような劣化が起きる。

● - UseCIEColor
CIE ベースの色変換で、CMYK→CMYK の色ズレを最小化。

● - EmbedAllFonts=true
フォントが壊れた PDF でも Ghostscript が補完して描画。

● - DownScaleFactor=1
内部ダウンサンプリングを完全無効化。
→ 画質劣化ゼロ。

main.cf と master.cf

main.cf は全体のデフォルト設定
master.cf はポートごとの上書き設定

main.cf

smtpd_sasl_auth_enable = yes smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination message_size_limit = 10485760 smtpd_tls_security_level = may smtp_tls_security_level = may smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3,!TLSv1,!TLSv1.1 smtp_tls_mandatory_protocols = !SSLv2,!SSLv3,!TLSv1,!TLSv1.1 smtpd_tls_cert_file=/etc/letsencrypt/live/mail.example.com/fullchain.pem smtpd_tls_key_file=/etc/letsencrypt/live/mail.example.com/privkey.pem smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache

master.cf(submission 587)

submission inet n - n - - smtpd # -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes

master.cf(smtps 465)

smtps inet n - n - - smtpd # -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes

自宅サーバーでの IPv6 設定

DNS だけ手動固定
IPv6 アドレスとゲートウェイは自動

ipv6.method: auto ipv6.addresses: -- ipv6.gateway: --

VPS と違う点
項目自宅サーバーVPS
IPv6 アドレス自動(SLAAC)手動(固定値)
IPv6 ゲートウェイ自動(RA)手動(固定値)
RAルーターが送る多くの VPS は送らない
手動設定の必要性不要必須
DNS サーバーの設定方法(nmcli)

まず現在の接続名を確認:

nmcli connection show

例として接続名が Wired connection 1 だった場合:

nmcli connection modify "Wired connection 1" ipv4.dns "1.1.1.1 8.8.8.8 9.9.9.9" nmcli connection modify "Wired connection 1" ipv4.ignore-auto-dns yes nmcli connection modify "Wired connection 1" ipv6.dns "2606:4700:4700::1111 2001:4860:4860::8888 2620:fe::fe" nmcli connection modify "Wired connection 1" ipv6.ignore-auto-dns yes nmcli connection up "Wired connection 1"

確認

nmcli connection show "Wired connection 1" | grep dns

Public DNS
1. Cloudflare(1.1.1.1 / 2606:4700:4700::1111)
2. Google(8.8.8.8 / 2001:4860:4860::8888)
3. Quad9(9.9.9.9 / 2620:fe::fe)

OpenSSL で SMTP サーバーに直接接続できるか確認する

TLS のハンドシェイクまで確認できるため、 SMTPポートが開いているか+TLSが正しく通るかを同時に判定できます。

587番(STARTTLS)

openssl s_client -starttls smtp -connect smtp.example.com:587

465番(SMTPS)

openssl s_client -connect smtp.example.com:465

▼ 成功する場合
大量の証明書情報が表示される
最後に 250 STARTTLS や 220 などの応答が返る

▼ 失敗する場合
Connection timed out(ポートが塞がれている)
Connection refused(相手が拒否)
何も返らず固まる(アウトバウンド制限)

/usr/local/bin と /usr/local/lib の違い

/usr/local/bin — 実行可能ファイル(コマンド)を置く場所
→ PATH に入るので、ユーザーが直接実行する。

/usr/local/lib — 実行ファイルが使うライブラリや内部ファイルを置く場所
→ 直接実行はしない。bin の裏側で使われる。

どちらも OS に上書きされない「ローカル専用領域」です。

/usr/bin や /usr/lib は OS やパッケージ管理(yum/dnf)が管理
/usr/local/bin と /usr/local/lib は 管理者(root)が手動で管理する領域

セキュリティと所有権の違い
/usr/local/bin の実行ファイルは root:root + 755 が必須
→ cloud-user 所有は危険(任意コード実行リスク)
/usr/local/lib のファイルも root:root が基本
→ ライブラリをユーザーが書き換えられると、bin の実行結果が乗っ取られる