2022年2月のサーバ構築(独自ドメイン移行)
少し前に独自ドメインを取得したので、そこに移行することにしました。 今回は設定変更なので、 OSの設定までは前回2020年末に設定したときに行った 内容のままです。
設定手順
Webサーバ
他のWebサーバが流行ってきている中nginxというのもいい加減どうなんだという感がありますが、 次のハードウェアに移行するときに考えます。
インストール
ubuntu@raspiu:/etc$ sudo apt install nginx (略) 続行しますか? [Y/n] 〈Enter〉
nginxの設定
- Debian系では、バーチャルホストを使うことを前提に次のようなディレクトリ構成で
nginxの初期設定が作ってある。
/etc/nginx nginx.conf # メインの設定ファイル modules-available/ # nginxのモジュールの設定 # パッケージによってここにファイルが置かれる sites-available/ # バーチャルホスト設定をこの下に作る {sites,modules}-enabled/ # 有効になっている設定ファイルの置き場 # -availableの設定を使う場合は、以下のようにしてリンクを張る # ln -s ../sites-available/<ファイル名> \ # /etc/nginx/sites-enabled/ snippets/ # nginxと連携させて使うパッケージを実際に連携させるための設定 conf.d/ # その他の設定はここにファイルとして置く(今回は使用しない) # 以降nginx標準の付属設定ファイル uwsgi_params # uWSGI(動的Webページの方式)の設定 # 他いくつか(今回は使わない)
- sites-availableにサイトの設定を書き、sites-enabledからリンクを張って有効化する
- サーバそのものの設定はconf.dに書く
- 他のファイルは書き換えない
- この構造に従わずに
nginx.conf
を直に書き換えても動くが、 アップデートの際に面倒なことになったりするので普通に乗っかっておく。 - サイトの設定を作成
ubuntu@raspiu:~ $ sudo vi /etc/nginx/sites-available/〈ドメイン名〉
- 内容
server { listen 80; listen [::]:80; location ~ ^/isso/img { return 404; } location ~ ^/isso/(.*)$ { include uwsgi_params; uwsgi_pass 127.0.0.1:8080; uwsgi_param SCRIPT_NAME /isso; uwsgi_param PATH_INFO /$1; } root /var/www/〈ドメイン名〉; index index.html index.htm; server_name 〈ドメイン名〉; }
- Isso(コメント用サーバ)の設定をしておく
- isso/img以下は必要ないので公開しないように設定。 ※isso というソフトウェアの名前がIch schrei sonstというドイツ語と ポケモンの名前の"Isso"(ソーナノ)のダブルミーニングになっているので、 このソフトのロゴはこのキャラクターを描いている。 img/以下にはその画像が置かれているのだが、日本の著作権法上 こういう使い方であっても公衆送信権の侵害になる恐れがある(訴えられたら負けうる)ので 公開しないようにしている。
- 内容
- デフォルトのバーチャルホストを設定
ubuntu@raspiu:~ $ sudo vi /etc/nginx/sites-available/unknown
- 内容
server { listen 80 default_server; listen [::]:80 default_server; server_name _; location / { return 400; } }
- IPアドレス総当たりで攻撃を仕掛けてくるときには、
サーバの名前を指定する
Host
ヘッダをつけないことが多いので、Host
が指定されていないアクセスは禁止する - 古い(HTTP/1.0以下)クライアントは
Host
をつけないが、 そんなクライアントが現存するとは思えないので気にしない
- IPアドレス総当たりで攻撃を仕掛けてくるときには、
サーバの名前を指定する
- 内容
- 設定を有効化
ubuntu@raspiu:~ $ cd /etc/nginx/ ubuntu@ubuntu:/etc/nginx$ sudo ln -s ../sites-available/〈ドメイン名〉 sites-enabled/ ubuntu@ubuntu:/etc/nginx$ sudo ln -s ../sites-available/unknown sites-enabled/ ubuntu@ubuntu:/etc/nginx$ sudo systemctl reload nginx
- Debian系では、バーチャルホストを使うことを前提に次のようなディレクトリ構成で
nginxの初期設定が作ってある。
SSL対応
独自ドメインも取得したのでSSLに挑戦してみようと思います
- Let’s Encrypt の証明書を使います
インストール
- snapdをインストール
ubuntu@raspiu:~$ sudo snap install core; sudo snap refresh core core 16-2.54.3 from Canonical✓ installed snap "core" has no updates available
- Certbotをインストール
ubuntu@raspiu:~$ sudo snap install --classic certbot certbot 1.23.0 from Certbot Project (certbot-eff✓) installed
- snapdをインストール
Certbotで証明書を取得
ubuntu@raspiu:~$ sudo certbot --nginx
- メールアドレスを聞かれるので答える。常に受け取れる必要があるので、自宅サーバではなく
外部のサービスのアドレスを答えておく。
(Enter 'c' to cancel): 〈メールアドレス〉
- 利用規約に同意するか聞かれる。規約を読んで問題なさそうなら同意する(y)
(略) Do you agree? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: y
- Certbotの開発元のEFFにメールアドレスを共有するか聞かれる。
メールが一つ増えるくらい気にしないので同意する(y)
(Y)es/(N)o: y Account registered.
- 新旧ドメインを設定してあるためどちらに使うか聞かれる。
Which names would you like to activate HTTPS for? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: 〈旧ドメイン〉 2: 〈新ドメイン〉 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel): 2 Requesting a certificate for 〈新ドメイン〉
- 成功したらしい
Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/〈新ドメイン〉/fullchain.pem Key is saved at: /etc/letsencrypt/live/〈新ドメイン〉/privkey.pem This certificate expires on 2022-05-28. These files will be updated when the certificate renews. Certbot has set up a scheduled task to automatically renew this certificate in the background. Deploying certificate Successfully deployed certificate for 〈新ドメイン〉 to /etc/nginx/sites-enabled/〈新ドメイン〉 Congratulations! You have successfully enabled HTTPS on https://〈新ドメイン〉
- 設定ファイルが書き換えられていた
server { location ~ ^/isso/img { return 404; } location ~ ^/isso/(.*)$ { include uwsgi_params; uwsgi_pass 127.0.0.1:8080; uwsgi_param SCRIPT_NAME /isso; uwsgi_param PATH_INFO /$1; } root /var/www/〈新ドメイン〉; index index.html index.htm; server_name 〈新ドメイン〉; listen [::]:443 ssl ipv6only=on; # managed by Certbot listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/〈新ドメイン〉/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/〈新ドメイン〉/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot } server { if ($host = 〈新ドメイン〉) { return 301 https://$host$request_uri; } # managed by Certbot listen 80; listen [::]:80; server_name 〈新ドメイン〉; return 404; # managed by Certbot }
- 80番ポートはhttpsに問答無用で転送
- 443番ポートはSSL有効
- メールアドレスを聞かれるので答える。常に受け取れる必要があるので、自宅サーバではなく
外部のサービスのアドレスを答えておく。
DNSサーバの設定
- 前回と同じですが、次に自分がこの手順に沿って進めるときに前回と同じです、で済まされると不便なので 再掲しておきます。
systemd-resolvedのスタブリゾルバを無効化
Ubuntu 18.04 の systemd-resolved で local DNS stub listener の利用をやめる - Qiita を参考にしました
systemd-resolvedはsystemd の拡張で、 参照するDNSサーバを柔軟に設定するためのもの スタブリゾルバ機能は、 設定されたDNSサーバを見に行った結果を返す、プロキシのようなDNSサーバとして動作する機能
スタブリゾルバが動いていると、53番ポートが塞がって使えないので止める。
止めるための設定
ubuntu@raspiu:~$ sudo mkdir /etc/systemd/resolved.conf.d/ ubuntu@raspiu:~$ sudo vi /etc/systemd/resolved.conf.d/51-disable-stub.conf
- 内容は次の通り
[Resolve] DNSStubListener=no
- 内容は次の通り
スタブリゾルバを使わずにDNSを見に行かせる設定
ubuntu@raspiu:~$ sudo ln -sf ../run/systemd/resolve/resolv.conf /etc/resolv.conf
systemd-resolvedに設定を反映
ubuntu@raspiu:~$ sudo systemctl restart systemd-resolved
ホスト名を変更
- DNSの設定のついでにマシン名を補正する
- プロンプトに出てくるこれ
ubuntu@raspiu:~$ ~~~~~~ ここ
- プロンプトに出てくるこれ
- manのhostname(5)によれば、/etc/hostnameに書くことで設定できる。
vi /etc/hostname
- 元書いてあるのと同じように、マシン名だけ書いておけばOK
raspiu
- 再起動すれば反映されるが、再起動しなくてもhostname(1)で設定できる。
ubuntu@ubuntu:~$ hostname raspiu
- SSHログインをやり直せば反映される。
ubuntu@ubuntu:~$ exit sakai@myPC ~ % ssh raspiu # この辺の設定は略。 ubuntu@raspiu:~$
- SSHログインをやり直せば反映される。
dnsmasqの設定
- dnsmasqをインストール
ubuntu@raspiu:~$ sudo apt install dnsmasq
- dnsmasqを設定
ubuntu@raspiu:~$ sudo vi /etc/dnsmasq.d/local.conf
- 設定内容は以下の通り
# Never forward plain names (without a dot or domain part) domain-needed # Never forward addresses in the non-routed address spaces. bogus-priv # Set this (and domain: see below) if you want to have a domain # automatically added to simple names in a hosts-file. expand-hosts # Do not read resolv.conf no-resolv # forward unknown names to the router server=192.168.0.1
- 設定内容は以下の通り
- /etc/hostsに追記
〈IPアドレス〉 raspiu raspiu.airport
- 反映
ubuntu@raspiu:~$ sudo systemctl reload dnsmasq
- このDNSサーバを見に行くように設定
ubuntu@raspiu:~$ sudo vi /etc/netplan/51-wifi.yaml
- nameservers / addresesを更新。
network: wifis: wlan0: addresses: - 〈IPアドレス〉/24 gateway4: 192.168.0.1 nameservers: addresses: - 〈IPアドレス〉 optional: true access-points: "〈SSID〉": password: 〈パスワード〉
- nameservers / addresesを更新。
メールサーバ
- Let’s Encryptの証明書はメールサーバにも使えるので使います
- 注意事項(再掲):パスワード認証なので、全面的にインターネットから接続可能にすることはお勧めできません。 25番ポートのみ開放すれば認証を試行できないので問題ないはずです
Postfixの設定
次のサイトを参考にしております。
- Dovecotとの連携について(main.cfの"rspamd"の行までとmaster.cf):Dovecotの公式サイト
- Rspamdとの連携について(main.cfの"rspamd"の部分):Rspamdの公式サイト
- 暗号化通信がされたかどうかを出力する設定:公式ドキュメントの
smtpd_tls_received_header
前回の記事との差分は次のとおりです
- 証明書をLet’s Encryptのものに差し替え
まずaptを使ってインストール
ubuntu@raspiu:~$ sudo apt install postfix Postfix Configuration: (設定画面が出てくるが特に設定する項目はない)
設定ファイルの作成
- フォルダに移動
ubuntu@raspiu:~$ cd /etc/postfix
- Ubuntuの(Debianの)デフォルト設定をコピー
ubuntu@raspiu:/etc/postfix$ sudo cp /usr/share/postfix/main.cf.debian /etc/postfix/main.cf
- Vimで編集(末尾に追記)
ubuntu@raspiu:/etc/postfix$ sudo vi main.cf
- 内容
### ### Local Configurations ### ### # サーバがPostfixとかUbuntuとか名乗るのを止める smtpd_banner = $myhostname ESMTP # ローカルユーザ向けにメールの新着情報を提供するのを止める(負荷が高いため) biff = no # ホスト名の設定 myhostname = 〈新ドメイン〉 mydomain = 〈新ドメイン〉 mydestination = raspiu.x8x.jp localhost # 旧ドメイン宛のメールを新ドメインに転送するための設定 virtual_mailbox_domains = 〈新ドメイン〉,〈旧ドメイン〉 virtual_alias_maps = hash:/etc/postfix/virtual virtual_transport = lmtp:unix:private/dovecot-lmtp # メールアドレスの構文を厳密にチェックする strict_rfc821_envelopes = yes # メールアドレスが存在するか調べるVRFYコマンドを無効化(迷惑メール対策) disable_vrfy_command = yes # HELO/EHLOを必須とする smtpd_helo_required = yes # HELO/EHLOのホスト名がFQDNでない場合拒絶 smtpd_helo_restrictions = reject_non_fqdn_helo_hostname # 送信元のドメインが不正な場合拒絶 smtpd_sender_restrictions = reject_unknown_sender_domain # 宛先が不正な場合と認証なしで他所に送る場合を拒絶 smtpd_recipient_restrictions = reject_unknown_recipient_domain, reject_non_fqdn_recipient, reject_unverified_recipient, reject_unauth_destination # Let's Encryptの証明書を利用 smtpd_tls_cert_file=/etc/letsencrypt/live/〈新ドメイン〉/fullchain.pem smtpd_tls_key_file=/etc/letsencrypt/live/〈新ドメイン〉/privkey.pem # 容量制限解除 message_size_limit = 20480000 # Rspamd smtpd_milters = inet:localhost:11332 milter_protocol = 6 milter_mail_macros = i {mail_addr} {client_addr} {client_name} {auth_authen} milter_default_action = accept # Print TLS connection information on the header. smtpd_tls_received_header = yes
- Rspamdはネットワークソケット(inet:localhost:11332)を使う
- Debianのpostfixはデフォルトでchrootが有効。 (smtpdが乗っ取られても悪さできないように、smtpdからアクセスできるファイルを 特定ディレクトリ配下に制限してある。)
- smtpd_miltersをunixソケットにする場合、その配下にないと動かない
- そこに置くための設定が面倒なので、ネットワークソケットにしておく
- Rspamdはネットワークソケット(inet:localhost:11332)を使う
- フォルダに移動
master.cfの編集
ubuntu@raspiu:/etc/postfix$ sudo vi master.cf
- 追記内容は以下の通り
submission inet n - y - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth -o smtpd_sasl_local_domain=$mydomain -o smtpd_tls_auth_only=yes -o smtpd_reject_unlisted_recipient=no -o smtpd_recipient_restrictions=reject_unknown_recipient_domain,reject_non_fqdn_recipient,permit_sasl_authenticated,reject -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING
- 追記内容は以下の通り
エイリアスの更新
ubuntu@raspiu:/etc/postfix$ sudo newaliases
postmasterやinfoを管理者に転送する設定
ubuntu@raspiu:/etc/postfix$ sudo vi virtual
- virtualの内容
postmaster 〈転送先メールアドレス〉 info 〈転送先メールアドレス〉 root 〈転送先メールアドレス〉
- virtualのハッシュファイルを作成
ubuntu@raspiu:/etc/postfix$ sudo postmap virtual
- virtualの内容
Dovecotの設定
次のサイトを参考にしております。
- Postfixとの連携について:Dovecotの公式サイト
- Rspamdとの連携について:Dovecot antispam with Rspamd (part 2) — There is no spoon.
前回の記事との差分は次のとおりです
- 証明書をLet’s Encryptのものに差し替え
インストール
ubuntu@raspiu:/etc/postfix$ sudo apt install dovecot-imapd dovecot-lmtpd dovecot-sieve
設定
ubuntu@raspiu:/etc/postfix$ cd /etc/dovecot/ ubuntu@raspiu:/etc/dovecot$ sudo vi local.conf
- local.confの内容
# Authentication passdb { driver = passwd-file args = username_format=%u /var/vmail/auth.d/%d/passwd } userdb { driver = passwd-file args = username_format=%u /var/vmail/auth.d/%d/passwd } # Mail location mail_location = maildir:~/maildir mail_plugins = acl quota # Services service imap-login { inet_listener imap { address = 0.0.0.0 port = 143 } inet_listener imaps { address = 0.0.0.0 port = 993 } } service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { group = postfix mode = 0600 user = postfix } } service imap { } service auth { unix_listener /var/spool/postfix/private/auth { group = postfix mode = 0660 user = postfix } user = $default_internal_user } service auth-worker { user = $default_internal_user } verbose_proctitle = yes # Protocols protocol lmtp { postmaster_address = postmaster@〈新ドメイン〉 # required mail_plugins = $mail_plugins sieve } protocol imap { mail_plugins = $mail_plugins imap_acl imap_quota mail_log notify } # Plugins plugin { quota = dict:user::file:%h/maildir/dovecot-quota quota_rule = *:storage=1GB quota_rule2 = Trash:storage=+10%% acl = vfile:/var/vmail/conf.d/%d/acls:cache_secs=300 } # for mail filtering plugin { sieve = ~/.dovecot.sieve sieve_dir = ~/sieve sieve_global_dir = /var/vmail/conf.d/%d/sieve sieve_before = /etc/dovecot/sieve/rspam_deliver.sieve } # TLS ssl_cert = </etc/letsencrypt/live/〈新ドメイン〉/fullchain.pem ssl_key = </etc/letsencrypt/live/〈新ドメイン〉/privkey.pem
- local.confの内容
上記で使った
rspam_deliver.sieve
を作るubuntu@raspiu:/etc/dovecot$ sudo mkdir sieve ubuntu@raspiu:/etc/dovecot$ sudo vi sieve/rspam_deliver.sieve
rspam_deliver.sieve
の内容は以下の通りrequire "fileinto"; require "imap4flags"; if header :is "X-Spam" "Yes" { fileinto "Junk"; setflag "\\seen"; stop; }
- コンパイルしておく
ubuntu@raspiu:/etc/dovecot$ sudo sievec /etc/dovecot/rspam_deliver.sieve
Rspamdの設定
次のサイトを参考にしております。
前回の記事と同様です。
インストール
ubuntu@raspiu:/etc/dovecot$ sudo apt install rspamd redis clamav-daemon clamav-freshclam ubuntu@raspiu:/etc/dovecot$ cd /etc/rspamd/
DKIMキーを生成(
kyymmdd
:セレクタ名。更新するときに変えやすいように日付をつけておく。)ubuntu@raspiu:/etc/rspamd$ sudo rspamadm dkim_keygen -s 'kyymmdd' \ -d xxxx.xx -k local.d/dkim_priv_yymmdd.key \ | sudo tee local.d/dkim_pub_yymmdd.key
- 秘密鍵のパーミッション設定
# 所有者をユーザ_rspamdに変更 ubuntu@raspiu:/etc/rspamd$ sudo chown _rspamd:_rspamd local.d/dkim_priv_yymmdd.key # 所有者以外(グループ・他)の読み書き実行全てを除去 ubuntu@raspiu:/etc/rspamd$ sudo chmod go-rwx local.d/dkim_priv_yymmdd.key
- 秘密鍵のパーミッション設定
DNSサーバに
dkim_pub.key
の公開鍵を設定する。- まず公開鍵を読み出す。
ubuntu@raspiu:/etc/rspamd$ cat local.d/dkim_pub_yymmdd.key
- 内容は以下のようになっている
kyymmdd._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=MIG(略)" ) ;
- dnsmasqの設定ファイルを開く
ubuntu@raspiu:/etc/rspamd$ sudo vi /etc/dnsmasq.d/local.conf
- 次のように追記する。(改行とダブルクオート
"
を抜く)txt-record=kyymmdd._domainkey.xxxx.xx,"v=DKIM1; k=rsa; p=MIG(略)"
- まず公開鍵を読み出す。
Rspamdの設定。(ファイル数が多いので/etc/rspamd/以下のパスで示す)
- local.d/antivirus.conf
clamav { attachments_only = false; servers = "/run/clamav/clamd.ctl"; }
- local.d/arc.conf
path = "/etc/rspamd/local.d/dkim_priv_yymmdd.key"; selector = "kyymmdd"; use_esld = false;
- local.d/dkim_signing.conf
path = "/etc/rspamd/local.d/dkim_priv.key"; selector = "kyymmdd"; use_esld = false;
- local.d/milter_headers.conf
extended_spam_headers = true; authenticated_headers = ["authentication-results","x-virus"]; extended_headers_rcpt = ["@xxxx.xx"] use = ["authentication-results","x-spam-level","x-virus"];
- local.d/redis.conf
servers = "127.0.0.1";
- local.d/statistic.conf
autolearn = [-5, 10]
- local.d/worker-controller.inc
bind_socket = "*v4:11334"; password = "$2$xxx$xxxxxxxxx"; enable_password = "$2$xxx$xxxxxxxxx";
- passwordの値は次のコマンドで生成する
ubuntu@raspiu:/etc/rspamd$ rspamadm pw Enter passphrase: $2$xxx$xxxxxxxxx
- passwordの値は次のコマンドで生成する
- local.d/worker-normal.inc
enabled = false;
- local.d/worker-proxy.inc
milter = yes; timeout = 120s; bind_socket = localhost:11332; upstream "local" { default = yes; self_scan = yes; }
- local.d/antivirus.conf
メールアカウントの作成
前回とほぼ同様ですが、独自ドメインに移行します。
ディレクトリを作成
ubuntu@raspiu:/etc/rspamd$ sudo mkdir /var/vmail ubuntu@raspiu:/etc/rspamd$ cd /var/vmail ubuntu@raspiu:/var/vmail$ sudo mkdir -p auth.d/xxxx.xx ubuntu@raspiu:/var/vmail$ sudo mkdir -p xxxx.xx/xxx/maildir ubuntu@raspiu:/var/vmail$ sudo mkdir -p xxxx.xx/isso/maildir ubuntu@raspiu:/var/vmail$ sudo chown 5000 xxxx.xx/xxx/maildir ubuntu@raspiu:/var/vmail$ sudo chown 5000 xxxx.xx/isso/maildir
パスワードハッシュを作成
- openssl passwdコマンドで作る。
(参考:Unix & Linux Stack Exchangeの回答)
ubuntu@raspiu:/var/vmail$ openssl passwd -6 Password: Verifying - Password: $6$xxxx$xxxxxxxx
- openssl passwdコマンドで作る。
(参考:Unix & Linux Stack Exchangeの回答)
パスワードファイルを作成
sudo vi auth.d/xxxx.xx/passwd
- 内容は以下のようにする
xxxx@xxxx.xx:$6$xxxx$xxxxxxxx:5000:5000::/var/vmail/xxxx.xx/xxx::userdb_quota_rule=*:storage=1G isso@xxxx.xx:$6$xxxx$xxxxxxxx:5000:5000::/var/vmail/xxxx.xx/xxx::userdb_quota_rule=*:storage=1G mail address:password hash :*1 :*2:*3:home directory :*4:*5 *1: Used ID. *2: Group ID. *3: Comment/Full Name. 書くことがないので空欄 *4: Login Shell. システムにログインできるユーザのリストを書くためのpasswd(5)の 形式を使っているため枠が存在するが、書くことがないので空欄 *5: passwd(5)には無い枠。Dovecotのプラグイン設定。
- 内容は以下のようにする
Webサーバの設定(コメント欄編:Isso)
Issoの公式の説明を参考にしております。
前回とほぼ同様ですが、 以下の点を変更しています。
- pip版がメンテナンスされるようになったので、pip版に戻した
必要ツールをインストールする。
ubuntu@raspiu:/var/isso$ sudo apt install python3-virtualenv python3-dev \ uwsgi uwsgi-plugin-python3
virtualenvを準備する。
ubuntu@raspiu:~$ sudo mkdir /var/isso ubuntu@raspiu:~$ cd /var/isso ubuntu@raspiu:/var/isso$ sudo chown ubuntu:ubuntu ./
- virtualenvを作成して有効化
ubuntu@raspiu:/var/isso$ virtualenv env ubuntu@raspiu:/var/isso$ . env/bin/activate
- virtualenvを作成して有効化
virtualenvにIssoをインストールする
(env) ubuntu@raspiu:/var/isso$ pip install isso
Issoの設定
(env) ubuntu@raspiu:/var/isso$ vi isso.conf
- 設定内容は以下の通り
[general] dbpath = /var/isso/data/comments.db host = http://xxxx.xx/ max-age = 15m notify = smtp [moderation] enabled = true [smtp] username = isso@xxxx.xx password = xxxx host = raspiu.airport port = 587 security = starttls to = xxx@xxxx.xx from = isso@xxxx.xx timeout = 10
- 設定内容は以下の通り
uWSGIの設定(この場所に置くことで自動起動設定も兼ねる)
(env) ubuntu@raspiu:/var/isso$ sudo vi /etc/uwsgi/apps-available/isso.ini
- 設定内容は以下の通り
[uwsgi] socket = 127.0.0.1:8080 master = true ; `nproc` = 4 on raspberry pi 4 processes = 4 cache2 = name=hash,items=1024,blocksize=32 ; spooler = /var/isso/mail plugin = python3 module = isso.run virtualenv = /var/isso/env env = ISSO_SETTINGS=/var/isso/isso.conf
- 有効化
(env) ubuntu@raspiu:/var/isso$ sudo ln -s ../apps-available/isso.ini /etc/uwsgi/apps-enabled/
- 設定内容は以下の通り
環境の準備
- パーミッション設定
(env) ubuntu@raspiu:/var/isso$ mkdir mail data (env) ubuntu@raspiu:/var/isso$ touch data/comments.db (env) ubuntu@raspiu:/var/isso$ sudo chown www-data:www-data data data/comments.db mail
- comments.dbが置かれているディレクトリが書き込み可能でないと、 書き込みの際にエラーになる(一時ファイルを作るため?)。 そこで間にdataディレクトリを挟んでいる。
- パーミッション設定
Issoの起動
(env) ubuntu@raspiu:/var/isso$ sudo systemctl restart uwsgi
有線LANを使用
- 有線LAN用の設定を無効化
ubuntu@raspiu:~$ sudo mv /etc/netplan/51-wifi.yaml /etc/netplan/51-wifi.yaml.disabled
- 新しい設定ファイルを作成
ubuntu@raspiu:~$ sudo vi /etc/netplan/51-ethernet.yaml
- 内容
network: version: 2 ethernets: eth0: addresses: - 〈IPアドレス〉/24 gateway4: 192.168.0.1 nameservers: addresses: - 〈IPアドレス〉 optional: true
hostsファイルの補正
- /etc/hostsを修正
〈IPアドレス〉 〈マシン名〉 〈マシン名〉.〈新ドメイン〉
- なんかhostsに3つの名前を書くとrspamdが起動しないので2つにしておく。
- 反映
ubuntu@raspiu:~$ sudo systemctl reload dnsmasq