オープンソースソフトウェア
Q: リポジトリで..... Releaseファイルがなくなっています、.... 更新できません...
A: 使用しているMariaDBのリポジトリを確認します。OSのバージョンと
Q: xxxxxxx
A: xxxxxx
データベースMySQLについて
・CentOS / RedHat ・Debian ・Windows ・Macintosh
まず、データベースのバックアップ、現状の確認、MySQLを停止、apt-get remove でMySQL 5.5 を削除、MySQL 5.7 インストール、MySQL再起動の手順です。
dpkg -l | grep 'mysql' で現状の確認
削除するMySQL 5.5 環境の確認(mysql-client mysql-server mysql-common mysql-community-client mysql-community-server mysql-utilites など)
インストール ここを参考に
mysql-server 再起動
MySQL 5.5から5.7へプログラムをアップグレードした後、データベースをアップグレードします。
Linuxのコマンドラインで、 $ sudo mysql_upgrade -uroot -p
アップグレードの手順 ここを参考に
Debian 8 や Debian 9 からDebian 10へMySQLをアップグレードした場合など、MySQLおよびMariaDBの設定環境が混在して、MySQLが起動しない場合がありました。
apt remove --purge コマンドでも設定ファイルなどが削除されない場合があります。
my.cnf の設定などは、次のサイトを参考に確認し、調整します。https://beyondjapan.com/blog/2016/03/2002-mysql-socket-error/
それでも動作が不安定、起動しない場合は、Debian 10を再インストールすることも解決策です。
アップグレードの手順 ここを参考に
アップグレードの手順 ここを参考に
アップグレードの手順 ここを参考に
Ubuntuではデフォルトで /etc/my.cnf ファイルがないので、自分で追加しました。他の設定方法もあるようですが。
/etc/my.cnfに以下の内容を追記
[mysqld]
innodb_buffer_pool_size=4G
max_allowed_packe=20M
innodb_log_buffer_size=256M
innodb_thread_concurrency=24
MariaDB再起動 sudo systemctl restart mysql sudo systemctl restart mysqld
作業中です。
環境: MySQL 5.0
・GRANT文でユーザー登録、パスワード指定
mysql > GRANT SELECT ON データベース名.フィールド名 TO 'ユーザー'@'ホスト' IDENTIFIED BY 'パスワード';
・SET PASSWORD文でパスワード設定
mysql > SET PASSWORD FOR 'ユーザー'@'ホスト'=PASSWORD('パスワード');
・UPDATE文でパスワード設定
mysql > UPDATE user SET Password=PASSWORD('パスワード') WHERE User='ユーザー' AND Host='ホスト';
mysql > FLUSH PRIVILEGES;
※ 権限テーブルを直接変更した場合は、FLUSH PRIVILEGES を実行し、テーブルを再度読み込み、権限の変更を反映させます。 mysqladminコマンドの場合 $ mysqladmin -uユーザー -hホスト password パスワード ・ユーザー登録 あらゆる操作ができるユーザーを登録
mysql > GRANT ALL PRIVILEGES ON *.* TO ユーザー IDENTIFIED BY 'パスワード'
mysql > GRANT ALL PRIVILEGES ON *.* TO 'ユーザー'@'ホスト' IDENTIFIED BY 'パスワード';
・ユーザーの削除
mysql > DROP USER 'ユーザー'@'ホスト';
・mysqladminを使う方法
$ mysqladmin -uroot -p create データベース名
$ mysqladmin -uroot -p drop データベース名
・SQLでの場合
mysql > CREATE DATABASE データベース名;
mysql > DROP DATABASE データベース名;
・mysqldumpコマンドの場合
gzipで圧縮
# mysqldump -u user -p データベース名 | gzip > dbname.dump.gz
リストア(インポート)する場合
zcat dbname.dump.gz | mysql -u user -p データベース名
パスワードはコマンドラインで入力します
sudoの場合は sudo zcat インポートファイル.sql.gz | sudo mysql -uユーザ名 -pパスワード DB名
・mysqldumpコマンドの場合
mysqldump -u root -p --all-databases > ~/backup.sql
cp -r /etc/mysql ~/
・リストア
mysql -u root -p < ~/backup.sql
環境 Debian 8.2
aptitude -y install phpmyadmin
apache2 を選択 設定 dbconfig-common ? いいえ を選択
/etc/phpmyadmin/apache.conf 編集 # Autorize for setup の下のRequire valid-user の上に Require ip 127.0.0.1 10.0.0.0/24 を記入
</IfModule>
Require ip 127.0.0.1 10.0.0.0/24
Require valid-user
</IfModule>
apache2 の再起動 sysemctl restart apache2 など
Debianの場合
PostgreSQL 10 とDebian Stretch
参考にしたサイト https://tecadmin.net/install-postgresql-on-debian/
事前準備: PostgreSQLはデフォルトでTCP/IPポートの5432を使用します。接続できるようにTCPポートの確認をします。
参考にしたサイト: https://blogs.yahoo.co.jp/wyamamo/27832288.html
< 参考 > Debian 9 (Stretch) - ファイアウォール設定
https://www.mk-mode.com/octopress/2017/08/16/debian-9-firewall-setting/
TCP/IPポートの外部から確認方法
nc -v -z -w 3 <サーバのアドレス> <ポート番号>
1)PostgreSQLの公式レポジトリからダウンロードするためのキーを取得します
wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -
詳細は、PostgreSQLの公式サイトでDebian(Ubuntu)のインストール手順を確認します。
https://www.postgresql.org/download/linux/ubuntu/
2)レポジトリをDebianのaptソースに登録
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
3)PostgreSQLサーバーのインストール
PostgreSQL公式サイトのレポジトリからダウンロード、インストール
sudo apt-get update
sudo apt-get install postgresql postgresql-contrib
4)PostgreSQLデータベースに接続
インストール時に、postgresというユーザーとその権限’postgres’、および、Debianのユーザーアカウント 'postgres'というユーザーも作成します。
もし、ユーザー作成などが出来なかった場合は、以下の手順で作成します。
a) adduser postgres
postgresユーザーでデータベースに接続して確認し、Drupalなどのインストールで必要なPostgreSQLデータベースのユーザー(例えばpgadmin)を作成
参考にしたサイト: http://symfoware.blog68.fc2.com/blog-entry-1999.html
sudo su - postgres
psql
$ createuser --pwprompt --interactive pgadmin
ログインできるかテストします。
$ psql -U pgadmin -d postgres -h localhost
テストとしてデータベースを作成してみます
postgres=# create database sample;
データベースの一覧表示
postgres=# \l
5)外部接続ができるか、設定の確認
postgresql.conf の編集
vim /etc/postgresql/9.6/main/postgresql.conf
listen_addresses = '*' の追加
pg_hba.confの編集
接続を許可するIPの範囲を指定(全てから接続許可する場合)
vim /etc/postgresql/9.6/main/pg_hba.conf
host all all 0.0.0.0/0 md5
6)PostgreSQLの再起動
service postgresql restart
Gatsby
Angular
React
Vue.js
Node.js
Gatsby サイト https://www.gatsbyjs.org/
Gatsby + Drupal https://gatsbyguides.com/tutorial/
https://www.qed42.com/blog/integrating-headless-drupal-gatsby-jsonapi-part-1
develop [オプション]
ホームページ https://github.com
DebianにGitインストール後、「__git_ps1 コマンドが見つかりません」というエラーが表示される場合は、自分の.bashrcファイルに設定を追加します。次のサイトを参考に。http://blog.twilighteve.info/2014/11/git.html
2つのファイルをダウンロード
上記の2ファイルをログインユーザーのホームディレクトリ(.bashrcファイルがあるディレクトリ)に保存します。
以下の設定を自分の .bashrcファイルに追加します。
source ~/git-prompt.sh
source ~/git-completion.bash
PS1="\h@\u:\W\$(__git_ps1) \$ "
その設定を反映させます。 source ~/.bashrc
SMTPサーバー、POPサーバーなど、メールサーバーに関する情報
System vorbereiten, sqmail mit Abhängigkeiten installieren
https://www.oliwel.de/basissystem-und-sqmail/
Install Ezmlm-idx
https://qmailrocks.thibs.com/ezmlm-idx.php
E-mail: The SUNY Potsdam Model: Scalable Open-Source Infrastructure
http://www.fritzhardy.com/projects/email/
series of “Nifty and Minimally Invasive qmail Tricks”
https://schmonz.com/2017/01/18/qmail-smtp-auth-tls-redux/
Amitai's qmail stuff
What is notqmail? https://github.com/notqmail/notqmail/wiki#what-are-the-projects-goals
notqmail 1.07 https://github.com/notqmail/notqmail/wiki/notqmail-1.07#how-to-install
binary install script, for exampl Debian, Ubuntu, CentOS others
https://software.opensuse.org//download.html?project=home%3Anotqmail&pac...
Debian でのバイナリーのAPTインストール手順
https://software.opensuse.org//download.html?project=home%3Anotqmail&pac...
qmail + vpopmail + Dovecot http://notes.sagredo.eu/node/8
eQmail
https://blog.dyndn.es/doku.php/blog/2014/10/18_eqmail_1.08
qmail(with smtp auth) + vpopmail + ezmlm-idx + dovecot + qmailadminなサーバ構築
https://jw7.org/2015/06/21/qmail/
http://www.ksknet.net/qmail/qmail_vpopmail.html
http://geroyblog.blogspot.jp/2013/04/installing-ezmlm-on-debian-squeeze-...
http://www.ep.sci.hokudai.ac.jp/~epmail/y2011/dvlop/qmail.html
http://www.ep.sci.hokudai.ac.jp/~epmail/y2012/dvlop/qmail.html
http://www.ep.sci.hokudai.ac.jp/~epmail/y2013/
http://www.ep.sci.hokudai.ac.jp/~epmail/y2014/
http://www.ep.sci.hokudai.ac.jp/~epmail/y2014/dvlop/qmail.html
(Debian GNU/Linux 8.0 Jessie) netqmail + pop tcpserver + imap Devecot + smtp tcpserver + ezmlm
http://www.ep.sci.hokudai.ac.jp/~epmail/
http://www.ep.sci.hokudai.ac.jp/~epmail/y2017/dvlop/qmail.html
上記ページで説明と実際の修正内容(2021年7月に作業、環境:Debian10)
詳細は「netqmailインストールを参照」 https://gennai3.com/techinfo/oss/mail/qmail/netqmail
qmail のソースダウンロード: wget http://www.netqmail.org/netqmail-1.06.tar.gz
qmail SMTP relay rejectのソースダウンロード: wget http://vps-tora.com/src/qmail-smtpd-relay-reject
「OpenSSLの導入」
wget http://www.openssl.org/source/openssl-1.1.1j.tar.gz
swにコマンドオプションのーをつける sudo make install -sw
(Debian GNU/Linux 8.0 Jessie)
http://www.ep.sci.hokudai.ac.jp/~epmail/y2020/
http://www.atmarkit.co.jp/flinux/index/indexfiles/qmailindex.html
Qmqtool is a utility designed for viewing and safely modifying the contents of a qmail queue.
http://qmailrocks.thibs.com/qmqtool.php
http://free.acrconsulting.co.uk/email/index.html
https://itpass.scitec.kobe-u.ac.jp/hiki/hiki.cgi?%5BITPASS2018%5Dqmail+%...
https://acrconsulting.co.uk/email/freesw.html
https://www.jacepark.com/building-mail-servers-with-qmail-over-ssl-in-ce...
http://okkun-lab.fu-u.jp/wiki/?Tips/Linux/qmail/smtpauth
https://server-recipe.com/1194/
https://server-recipe.com/qmail/
Debian 11でのインストール手順は ここから
PostfixAdmin インストール手順 ここから
環境: Debian 11.1.0 Postfix asl2-bin amd64 2.1.27+dfsg-2.1+deb11u1 postfix amd64 3.5.13-0+deb11u1
参照したサイト https://www.server-world.info/query?os=Debian_11&p=mail&f=1
バイナリーパッケージのインストール #apt -y install postfix sasl2-bin
Postfix Configuration はNo Configuration を選択
Build Email Server From Scratch on Debian – Basic Postfix Setup
From: ドメイン名は、myhostname パラメータではなく、Postfix の myorigin パラメータ (別名システム メール名) によって決定されます。
sudo apt install telnet
sudo apt install telnet
telnet gmail-smtp-in.l.google.com 25
(Type in quit and press Enter to close the connection)
sudo ufw allow 25,80,110,143,443,587,465,143,993,995/tcp
https://www.ipvoid.com/port-scan/
$ sudo postconf | grep mail_version
mail_version = 3.5.13
milter_macro_v = $mail_name $mail_version
$ sudo postconf | grep size_limit
body_checks_size_limit = 51200
bounce_size_limit = 50000
header_size_limit = 102400
mailbox_size_limit = 51200000
message_size_limit = 10240000
main.cf で html_directory = no
デフォルトがユーザーID500 以上です。/etc/dovecot/conf.d/10-mail.confにて確認しましょう。
# Valid UID range for users, defaults to 500 and above.
# be done even if first_valid_uid is set to 0.
first_valid_uid = 600
#last_valid_uid = 0
dovecotのステータスの確認 sudo journalctl -eu dovecot
ログの確認 /var/log/mail.log
ログにも記録がない場合はdovecotのジャーナルを確認 sudo journalctl -eu dovecot
sudo doveadm user '*'
新規にディレクトリを作成 sudo mkdir -p /etc/systemd/system/dovecot.service.d/
以下のリスタート設定ファイルを作成(dovecotが停止後5秒後に自動的にdovecotを再起動)
sudo nano /etc/systemd/system/dovecot.service.d/restart.conf
[Service]
Restart=always
RestartSec=5s
デーモンを再起動 sudo systemctl daemon-reload
動作検証 dovecotを強制停止 sudo pkill dovecot その後ステータス確認 systemctl status dovecot
email checker で確認します。 https://network-tools.com/email-tests/
/etc/postfix/main.cf に以下の行を追加
virtual_alias_maps = hash:/etc/postfix/virtual
mydomain mydestination に指定したドメインを virtual_alias_domains に含めない、メール配送先ユーザーアカウントが存在することが条件です。
/etc/postfix/virtual に以下の内容を記載
# Virtual Domains
hogehoge.jp virtual
# Virtual alias
[email protected] user1
[email protected] user2
# postmap /etc/postfix/virtual
ハッシュ化された中身を見る場合は # strings /etc/postfix/virtual.db
他の仮想ホストに干渉する可能性があるため、デフォルトの仮想ホストを無効にします。
sudo a2dissite 000-default.conf
$ sudo certbot certonly -a apache --agree-tos --no-eff-email --staple-ocsp --email 名前@gmail.com -d mail.ドメイン名.biz
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Account registered.
Requesting a certificate for mail.ドメイン名.biz
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/mail.ドメイン名.biz/fullchain.pem
Key is saved at: /etc/letsencrypt/live/mail.ドメイン名.biz/privkey.pem
$ sudo certbot certonly -a nginx --agree-tos --no-eff-email --staple-ocsp --email 名前@gmail.com -d mail.ドメイン名.biz
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Account registered.
Requesting a certificate for mail.ドメイン名.biz
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/mail.ドメイン名.biz/fullchain.pem
Key is saved at: /etc/letsencrypt/live/mail.ドメイン名.biz/privkey.pem
crontabに毎日certbot renew を実行し、postfixとdovecot を再起動、Apacheの場合
sudo crontab -e
@daily certbot renew --quiet && systemctl reload postfix dovecot apache2
Nginxの場合
sudo crontab -e
@daily certbot renew --quiet && systemctl reload postfix dovecot nginx
一つのTLS証明書で複数のドメインの証明書をまとめる場合
TLS証明書を取得 Apacheの場合
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp -d mail.ドメイン1.com,mail.ドメイン2.com --cert-name mail.ドメイン1.com --email [email protected]
TLS証明書を取得 Nginxの場合
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp -d mail.ドメイン1.com,mail.ドメイン2.com --cert-name mail.ドメイン1.com --email [email protected]
Certbotで既存の証明書を更新して新しいドメインを含めるかどうかを尋ねられたら、U (Update)と答えて Enter キーを押します。
※ 上記のコマンドでは、最初のメール ドメイン1を使用して証明書名を指定したことに注意してください。これはファイル パスで使用されるため、Postfix または Dovecot 構成ファイルでファイル パスを変更する必要はありません。
sudo systemctl reload apache2
sudo systemctl reload nginx
sudo systemctl reload postfix dovecot
各ドメインごとでTLS証明書を取得して設定する場合(複数のTLS証明書)
この設定はまだ動作未検証です!
次のコマンドを使用するだけで、2 番目のメール ドメイン用の別の TLS 証明書を取得できます。
Apacheの場合 sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp -d mail.ドメイン2.com
Nginxの場合 sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp -d mail.ドメイン2.com
1. Postfixの設定(Postfixバージョン3.4以上)
sudo nano /etc/postfix/main.cf
最後に以下の行を追加
tls_server_sni_maps = hash:/etc/postfix/sni_maps
sudo nano /etc/postfix/sni_maps
mail.ドメイン1.com /etc/letsencrypt/live/mail.ドメイン1.com/privkey.pem /etc/letsencrypt/live/mail.ドメイン1.com/fullchain.pem
mail.ドメイン2.com /etc/letsencrypt/live/mail.ドメイン2.com/privkey.pem /etc/letsencrypt/live/mail.ドメイン2.com/fullchain.pem
※ 最初のドメインの証明書が /etc/postfix/main.cf ファイルで既に使用されている場合は、それを sni_maps ファイルに再度含める必要はありません。
sudo postmap -F /etc/postfix/sni_maps
sudo systemctl restart postfix
2. Dovecotの設定
sudo nano /etc/dovecot/conf.d/10-ssl.conf
既存の以下の行を変更します。
ssl_cert =</etc/letsencrypt/live/mail.ドメイン1.com/fullchain.pem
ssl_key =</etc/letsencrypt/live/mail.ドメイン1.com/privkey.pem
次のように変更します。
local_name mail.ドメイン1.com {
ssl_cert =</etc/letsencrypt/live/mail.ドメイン1.com/fullchain.pem
ssl_key =</etc/letsencrypt/live/mail.ドメイン1.com/privkey.pem
}
local_name mail.ドメイン2.com {
ssl_cert =</etc/letsencrypt/live/mail.ドメイン2.com/fullchain.pem
ssl_key =</etc/letsencrypt/live/mail.ドメイン2.com/privkey.pem
}
sudo systemctl restart dovecot
一般的な設定とOutlook用を追加します。 sudo vim /etc/postfix/master.cf
一般的な設定
submission inet n - y - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_tls_wrappermode=no -o smtpd_sasl_auth_enable=yes -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth
Outlook用の設定
smtps inet n - y - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth
message_size_limit = 20480000
メッセージサイズを20MBに変更
mailbox_size_limit = 0
メールボックス容量を無制限に。message_size_limit を変更する場合、mailbox_size_limit を超えないようにしないといけない。
message_size_limit が mailbox_size_limit より大きい場合、メールが一切受信できなくなる。
mailbox_size_limit のデフォルトは51200000(50MB)。
環境: Debian11 Postfix MariaDB Postfixadmin Apache Mailman3(3.3.3-1)
install : sudo apt install mailman3-full
インストール写真1
インストール写真2
インストール写真3
インストール写真4
インストール後の設定:
/etc/postfix/main.cf に以下の設定を最後の行に追加します。
# Mailman related settings
owner_request_special = no
transport_maps = hash:/var/lib/mailman3/data/postfix_lmtp
local_recipient_maps = proxy:unix:passwd.byname $alias_maps hash:/var/lib/mailman3/data/postfix_lmtp
relay_domains = ${{$compatibility_level} < {2} ? {$mydestination} : {}} hash:/var/lib/mailman3/data/postfix_domains
サイトオーナーのメールアドレスを設定します。 /etc/mailman3/mailman.cfg
site_owner: [email protected] ー> 自分のメールアドレスに変更
apache2のproxy_uwsgiを有効にします。
sudo a2enmod proxy_uwsgi
sudo systemctl restart apache2
もし、/etc/apache2/conf-enabled/mailman3-web.confというapacheのシンボリックリンクができていなければ、新規作成する。
ln -s /etc/mailman3/apache.conf /etc/apache2/conf-enabled/mailman3-web.conf
/etc/mailman3/apache.confの編集、以下の行の最後の / を削除する
ProxyPass /mailman3 unix:/run/mailman3-web/uwsgi.sock|uwsgi://localhost
super user のadminアカウントでログインして、そのadminアカウントの登録したメールアドレスへ確認のメールを送信して、本人確認のサイトリンクをクリックして、承認状態になります。Mailmanインストール後に、このadminの登録確認が最初に必要です。
登録するメールアドレスは、以下のような形式で登録します。
John Doe <[email protected]>
"John Doe" <[email protected]>
[email protected] (John Doe)
※Mailman3(3.3.3-1)ではこのMass operations で「Pre Verified」で配信した場合は、最初のWelcomeメッセージは届きましたが、メーリングリストへ投稿できませんでした。機能していないように思います。Mass operationsのデフォルト設定で運用してみます。
標準が英語のテンプレートなので、よく使うテンプレートを日本語化します。テンプレートの概要はこのページにて確認できます。https://rohhie.net/ubuntu20-04-building-a-multi-domain-mailing-list-with...
[list:user:notice:goodbye]
[list:user:notice:welcome]
[list:user:action:invite]
[list:user:notice:goodbye]
[list:user:action:subscribe]
A:作成したメーリングリストで、「設定」ー>「List Identity」ー>「Show list on index page」ー>「No」をチェックします。アーカイブは「設定」ー>「Archiving」ー>「Private archives」もしくは「Do not archive this list」を選択します。
A: systemctl restart mailman3 と systemctl restart mailman3-web
概要
オープンソース(GPL-2.0)のWebベースのPostfixメールサーバー向け仮想ユーザー管理インタフェースです。
開発コミュニティ: https://github.com/postfixadmin/postfixadmin
参考:Debian 11、Apacheでのインストール https://www.rosehosting.com/blog/how-to-set-up-a-mail-server-with-postfi...
Debian 11、Nginxでのインストール https://www.linuxbabe.com/mail-server/postfixadmin-create-virtual-mailbo...
ダウンロード 3.3.13 wget https://github.com/postfixadmin/postfixadmin/archive/refs/tags/postfixad...
現在の3.3.11の /var/www/postfixadmin ディレクトリを丸ごと名前を変更して保存
解凍後、/var/www/postfixadmin へ入れ替えます
templates_c を3.3.11のバックアップからコピーして /var/www/postfixadmin/templates_c へ保存
config.local.php を3.3.11のバックアップからコピーして /var/www/postfixadmin/config.local.php へ保存
config.inc.php を編集して、バージョンを修正します $CONF['version'] = '3.3.11'; ---> $CONF['version'] = '3.3.13';
A: digコマンドの場合 dig ドメイン名 tx
A: nslookupコマンドの場合 nelookup ドメイン名 txt
作成したDKIMのドメインキーをDebian11のbind9に設定する場合は、以下のようなドメインキーを表示させ、そのまま、bind9のゾーン設定ファイルに張り付けてBind9再起動で設定されます。コメントは削除しますが、キーのところはそのままのフォーマットでOKです。 その貼り付けを間違えるとBind9の文法エラーになります。
sudo cat /etc/opendkim/keys/ドメイン名/default.txt
default._domainkey IN TXT ( "v=DKIM1; h=sha256; k=rsa; "
"p=MIIBIjANBgkqhkiG9w0BAQEXXXXXAQ8AMIIBCgKCAQEAvaotoiwmXASZTXXXXXFf1y3H0DCWmnA45vz8oAffQmPrU2YSEOzyKVKLF0g4fPMi7fxsDue+CHCBdUZerzxx4esU8x8SLn9KBb9az3TJf5FeirwJMatBe/DQP5NEUA25tnusyNG9dXXXXXtSoE9aexe/5YPLl7yzblj5fFB8B5fY8LakjfnSVBlULjr0qzottr7RbavlupEhK3"
"zZSQT2/2SdV3KgybPWSxwgweZpxcv5XXXXXRIr+S7zUh0mTFmFWwE4W7Sx5vuHcN1Wtn9A3roM/7Y0IzgZFDAExC7KkiQq9ByCgW6lMWkPSKIkrTW2sIlAOzz8myV91DINF4/IbQIDAQAB" ) ; ----- DKIM key default for ドメイン名
A: digコマンドの場合 dig selector._domainkey.ドメイン名 txt
A: nslookupコマンドの場合 nslookup selector._domainkey.ドメイン名 txt
A: digコマンドの場合 dig _dmarc.ドメイン名 txt
A: nslookupコマンドの場合 nelookup _dmarc.ドメイン名 txt
qmail、netqmail, notqmail などのインストール方法
このインストール作業は、以下のサイトを参考にしました。
qmail 1.03+ vpopmail + ezmlm + ezmlm-idx
Debian 10 buster で、2021年7月25日に実施。なるべく2021年7月時点での最新版ソースを使ったインストールになります。
事前に、Psotfixやexim4などのSMTPサーバーがアンインストールされていることを確認して、インストールしました。
設定サンプルとして、サーバー名 host.example.jp ホスト名 host ドメイン名 example.jp で説明します。
事前にSSL証明書(インストールしたサーバー独自の)をインストールした環境で行います。
例えば、OpenSSLを使って、秘密鍵、サーバー証明書、公開鍵など。OpenSSLはqmail関連のソースプログラムと連携するために、コンパイルする関係でソースからコンパイルしてインストールします。
OpenSSLのソースダウンロード: https://www.openssl.org/source/ にて最新版をダウンロード $ wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz
openssl-OpenSSL_1_1_1kのダウンロードとインストール
不明 ーー>
qmailadminをインストールするために、Webサーバー(Apache)とSSL証明書を設定します。サーバーのIPアドレスでSSL証明書を使う場合はサーバー自身の証明書を使い、もし、ドメイン名でSSL証明書を使う場合は、Let’s Encryptの https://certbot.eff.org/ を設定してからインストールします。 今回はサーバーのIPアドレスを使う方法でインストールします。
<ーー ここまで
$ tar zxvf openssl-1.1.1k.tar.gz
$ cd openssl-1.0.1k
$ ./config --prefix=/usr --openssldir=/usr/local/openssl shared
$ make
$ sudo make install
ucspi-tcpソースのダウンロード: $ wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
参考資料: tcpserverやucspi-tcp関連の情報 http://www.emaillab.org/djb/tools/ucspi-tcp/top.html
ダウンロード後、tar.gzを展開し、続けてSSL化パッチとその他のパッチをダウンロード
$ gzip -d ucspi-tcp-ssl-20050405.patch.gz
ucspi-tcpにパッチを適用する
$cd ucspi-tcp-0.88
tcpserver実行ファイルをコピーする
$ sudo cp tcpserver /usr/local/bin/tcpserver-ssl
- - -
※以下の作業はnetqmailのインストール時にも実行させているので重複を確認する
以前qmail のソースを展開したディレクトリに移動し, パッチをあてる。
tar zxvf netqmail-1.06.tar.gz
cp -ar netqmail-1.06 netqmail-1.06_smtps
cd netqmail-1.06_smtps
- - -
※ここからはrootで作業します。
# mkdir /var/qmail
# addgroup --gid 710 nofiles
# useradd -M -u 710 -g nofiles -s /bin/false -d /var/qmail/alias alias
# useradd -M -u 711 -g nofiles -s /bin/false -d /var/qmail qmaild
# useradd -M -u 712 -g nofiles -s /bin/false -d /var/qmail qmaill
# useradd -M -u 713 -g nofiles -s /bin/false -d /var/qmail qmailp
# addgroup --gid 711 qmail
# useradd -M -u 714 -g qmail -s /bin/false -d /var/qmail qmailq
# useradd -M -u 715 -g qmail -s /bin/false -d /var/qmail qmailr
# useradd -M -u 716 -g qmail -s /bin/false -d /var/qmail qmails
Debian 10では、addgroup --gid を使って設定しました。ディレクトリ /var/qmail/alias もmkdirで手動作成。
vpopmail用のユーザーも作成します。
# addgroup --gid 721 vchkpw
# useradd -g vchkpw -u 721 vpopmail -M -s /bin/false
# mkdir /home/vpopmail
# chown vpopmail:vchkpw /home/vpopmail
qmailがソースプログラムからコンパイルしてインストール
qmail 1.03のソースダウンロード: wget https://cr.yp.to/software/qmail-1.03.tar.gz
パッチのインストール
qmail-1.03.tar.gzを解凍し、# cd qmail-1.03 で以下のパッチを適用する
パッチの内容は
qmail-103.patch ダウンロード: wget http://www.ckdhr.com/ckd/qmail-103.patch
qmail-date-localtime.patchダウンロード: wget http://www.asahi-net.or.jp/~aa4t-nngk/codes/qmail-date-localtime.patch
qmail SMTP relay rejectダウンロード: wget http://vps-tora.com/src/qmail-smtpd-relay-reject
qmail-smtpd-auth-0.31.tar.gzダウンロード: wget http://tomclegg.net/qmail/qmail-smtpd-auth-0.31.tar.gz
qmail-smtpd-auth-0.31を解凍: tar zxvf qmail-smtpd-auth-0.31.tar.gz
qmailのソースプログラムerror.h で extern int errno; を #include <errno.h> に変更してからコンパイルします。
# cd qmail-1.03
# make setup check
# ./config-fast host.example.jp (サーバー名のFQDN)
実行結果
# ./config-fast host.example.jp
Your fully qualified host name is host.example.jp.
Putting host.example.jp into control/me...
Putting example.jp into control/defaultdomain...
Putting example.jp into control/plusdomain...
Putting host.example.jp into control/locals...
Putting host.example.jp into control/rcpthosts...
Now qmail will refuse to accept SMTP messages except to host.example.jp.
Make sure to change rcpthosts if you add hosts to locals or virtualdomains!
インストール後の /var/qmail
# ls -la /var/qmail/
合計 40
drwxr-xr-x 10 root qmail 4096 7月 27 12:30 .
drwxr-xr-x 13 root root 4096 7月 27 12:30 ..
drwxr-sr-x 2 alias qmail 4096 7月 27 12:30 alias
drwxr-xr-x 2 root qmail 4096 7月 27 12:30 bin
drwxr-xr-x 2 root qmail 4096 7月 27 12:30 boot
drwxr-xr-x 2 root qmail 4096 7月 27 12:30 control
drwxr-xr-x 2 root qmail 4096 7月 27 12:30 doc
drwxr-xr-x 10 root qmail 4096 7月 27 12:30 man
drwxr-x--- 11 qmailq qmail 4096 7月 27 12:30 queue
drwxr-xr-x 2 root qmail 4096 7月 27 12:30 users
/var/qmail/control にはqmailの動作で必要な設定として、以下のように記載します。
example.jp
to ヘッダなどにドメイン名が省略された場合に保管されるドメイン名
localhost
localhost.example.jp
host.example.jp
example.jp
qmailがメールを受け取るドメインを指定するファイルです。受信するホスト名・ドメイン名の設定 qmail-send が使用します。
localhost
example.jp
.example.jp
SMTPのメールアドレス宛先を伝えるRCPTコマンドを許可するドメインを指定します。ここで指定されないドメインへのメール送信はsmtpサービスが拒否。他のSMTPサーバーより自ドメイン宛に送信されてきたメールや、ローカル内で送受信しているメールは受け取りますが、このSMTPサーバーを使って他のドメインへのメール送信はできません。これによりスパムメールの中継に利用出来なくなります。但し、/home/vpopmail/etc/tcp.smtpのRELAYCLIENT の設定によりここで指定しないドメインへのメール送信を可能にします。 受信するホスト名・ドメイン名の設定 qmail-smtpd が使用します。
host.example.jp
インストールしたサーバーのFQDN
example.jp
ドメイン名が+で終わっている場合に付加されるドメイン名。例えば、「user@host+」なら「[email protected]」と置換。 qmail-inject が使用します。
上記の設定で、不正中継対策も含んだ最小限の動作環境になります。
そのほかの設定項目として、パーミッションは他のファイルと同様な chmod 644
/var/qmail/control/databytes 内容は 100000000 100MB以上のメールは拒否
/var/qmail/control/queuelifetime 内容は 259200
登録したドメイン名を確認できます。 # /var/qmail/bin/qmail-showctl
tcpserverは詳細なアクセス制御が行えるサーバーツールです。qmailはこのtcpserverを使って起動させます。
/usr/local/src にダウンロード: # wget http://www.emaillab.org/djb/tools/ucspi-tcp/ucspi-tcp-0.88.tar.gz
パッチucspi-tcp-0.88.errno.patchをダウンロード
# wget http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/ucspi-tcp-0.88.errno.patch
ucspi-tcp-0.88.tar.gzを解凍し、そのディレクトリに移動 # cd ucspi-tcp-0.88
パッチ ucspi-tcp-0.88.errno.patch を適用
patch < ../ucspi-tcp-0.88.errno.patch
make setup check
tcpserver は /usr/local/bin/ にインストールされます。
ls -la /usr/local/bin
..........
-rwxr-xr-x 1 root root 55912 Aug 13 17:05 tcpserver
-rwxr-xr-x 1 root root 64232 Aug 12 18:22 tcpserver-ssl
vpopmailをインストール。POP認証後の有効時間は10分と指定。今回使用するバージョンではAPOPが有効になっていますが、バージョンが異なるとAPOPが有効でない場合があるようです。
詳細はここのサイトで確認できます: Installing and configuring vpopmail https://notes.sagredo.eu/en/qmail-notes-185/installing-and-configuring-v...
2021年8月13日時点では、vpopmail-5.4.33.tar.gzが最新のようですが、バージョンで差異があるようです。
ダウンロード一覧: https://sourceforge.net/projects/vpopmail/ ここはダウンロードエラーが起きました:https://ja.osdn.net/projects/sfnet_vpopmail/releases/
vpopmail-5.4.33のインストールとそのパッチ適用
# wget https://notes.sagredo.eu/files/qmail/tar/vpopmail-5.4.33.tar.gz
# wget https://notes.sagredo.eu/files/qmail/patches/vpopmail/roberto_vpopmail-5...
# tar xzf vpopmail-5.4.33.tar.gz
# cd vpopmail-5.4.33
# patch -p1 < ../roberto_vpopmail-5.4.33.patch
解凍後、解凍したディレクトリに移動し、インストールします。POP Before SMTPに対応させるには、configure --enable-roaming-users=y の設定になります。 --enable-relay-clear-minutes=指定分数 は、POP Before SMTPで、最後のPOP接続からSMTPのRelayを許可する制限時間より短くする場合となります。
/home/vpopmail/etc/tcp.smtpを使うために、tcp.smtpを追加作成します。
# vim /home/vpopmail/etc/tcp.smtp
127.:allow,RELAYCLIENT=""
# chown -R vpopmail:vchkpw /home/vpopmail/etc/tcp.smtp
cabファイルの作成
# /usr/local/bin/tcprules /home/vpopmail/etc/tcp.smtp.cdb /home/vpopmail/etc/tcp.smtp.tmp < /home/vpopmail/etc/tcp.smtp
# chown -R vpopmail:vchkpw /home/vpopmail/etc/tcp.smtp.cdb
# ls -la /home/vpopmail/etc/
total 24
drwxr-xr-x 2 vpopmail vchkpw 4096 Aug 13 18:27 .
drwxr-xr-x 3 vpopmail vchkpw 4096 Aug 13 17:49 ..
-rw-r--r-- 1 root root 25 Aug 13 18:06 inc_deps
-rw-r--r-- 1 root root 32 Aug 13 18:06 lib_deps
-rw-r--r-- 1 vpopmail vchkpw 26 Aug 13 18:25 tcp.smtp
-rw-r--r-- 1 vpopmail vchkpw 2090 Aug 13 18:27 tcp.smtp.cdb
その後vpopmailの.configure 設定
# ./configure --enable-roaming-users=y --enable-relay-clear-minutes=10 --enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp --enable-logging=y
# make install-strip
デフォルトのドメイン名の設定は、/home/vpopmail/etc/defaultdomain で設定します。
POP before SMTP とは、送信の前にPOPで認証を行い、それからSMTPリレーを許可する仕組みです。POP3デーモン自体はqmailのインストールと同時にインストールされますす。/var/qmail/bin/qmail-pop3dがそれに当たります。しかし、このデーモン自体には認証を行う機能がないため、認証機能を補う必要があります。平文パスワードによる最も簡単な認証確認の手段としては、D. J. Bernstein氏がqmailとともに提供しているcheckpasswordがあります。
APOPはPOP3のログイン認証を行うコマンドです。POP3同様qmail-pop3dを使用しますが、認証機能を付加するにはAPOPに対応しているものを選択する必要があります。OHIRA, Shinya氏が提供しているcheckpwはその一つです。
checkpasswordでは/etc/shadowに登録されているパスワードを基に認証(PAM)を行いましたが、checkpwではパスワードを管理するために外部ファイルを使います。仮にPOPパスワードが漏れてしまってもシステムのパスワードまで盗まれるのを防げるため、ほかのサービスへの被害を最小限に抑えられます。
checkpwの場合、ユーザーのPOPパスワードはユーザーが各自で管理できるように、ユーザーのMaildir/下にファイルを保存します。
SMTPのアクセスコントロールにはtcp.smtp.cdbファイルを利用します。 tcp.smtp.cdbの作成には、/home/vpopmail/etc/tcp.smtpファイルを作成し、続けてtcpserverのtcprulesを実行します。
/home/vpopmail/etc/tcp.smtpを作成します。内容は
127.:allow,RELAYCLIENT=""
tcprulesを実行し、tcp.smtp.cdbファイルを作成し、パーミッションを変更します。
# tcprules /home/vpopmail/etc/tcp.smtp.cdb /home/vpopmail/etc/tcp.smtp.tmp < /home/vpopmail/etc/tcp.smtp
# chown -R vpopmail:vchkpw tcp.smtp.cdb
このファイルの指定内容では、127.x.x.xのネットワークからアクセスに限り、/var/qmail/control/rcpthostsで指定した設定は無視されます。全てのドメインへメール送信が可能になります。
通常、メールユーザーがPOP認証を行うとそのユーザーのIPアドレスがRELAYCLIENT=""の設定と共にこのファイルに追加されます。これにより、そのIPアドレスからは/var/qmail/control/rcpthostsの制限を受けずにメール送信が出来るようになります。追加されたIPアドレスは一定時間経過すると次に説明するclearopensmtpによりこのファイルより削除されます。これにより、POP認証後の一定時間に限りメール送信が可能になります。
POP認証が済んだクライアント情報を定期的に削除する為、クーロンに削除スクリプトを以下の手順で登録します。毎時間0,10,20,30,40,50分に削除スクリプトが起動。
# crontab -e
0,10,20,30,40,50 * * * * /home/vpopmail/bin/clearopensmtp 2>&1 > /dev/null
※clearopensmtpが起動した際に、POP認証後、vpopmailのconfigure時に"--enable-relay-clear-minutes"オプションで指定した時間が過ぎているとPOP認証の情報が削除されます。この状態が、POP認証後の有効時間切れです。しかし、clearopensmtpを呼び出さないと一度認証したクライアントからは永遠にPOP認証済み状態になります!。忘れず起動させます。
qmailインストールした正規ドメイン example.jp を仮想ドメインとして作成します。その仮想ドメイン内に、必要なメールアカウントを作成します。理由は、OSのユーザーとメールのユーザーを切り離して管理する事が可能になります。
# cd /home/vpopmail/bin/
# ./vadddomain example.jp
Please enter password for postmaster:
enter password again:
作成した仮想ドメインは、/home/vpopmail/domains/仮想ドメイン名で作成されます。
# cd /home/vpopmail/domains/
# ls -la
total 16
drwx------ 3 vpopmail vchkpw 4096 Aug 14 18:07 .
drwxr-xr-x 8 vpopmail vchkpw 4096 Aug 13 18:31 ..
-rw------- 1 vpopmail vchkpw 34 Aug 14 18:07 .dir-control
drwx------ 3 vpopmail vchkpw 4096 Aug 14 18:07 it-school.biz
root@mail:/home/vpopmail/domains# ls -la ./example.jp/
total 28
drwx------ 3 vpopmail vchkpw 4096 Aug 14 18:07 .
drwx------ 3 vpopmail vchkpw 4096 Aug 14 18:07 ..
-rw------- 1 vpopmail vchkpw 34 Aug 14 18:07 .dir-control
-rw------- 1 vpopmail vchkpw 44 Aug 14 18:07 .qmail-default
-rw------- 1 vpopmail vchkpw 0 Aug 14 18:07 .vpasswd.lock
drwx------ 3 vpopmail vchkpw 4096 Aug 14 18:07 postmaster
-rw------- 1 vpopmail vchkpw 127 Aug 14 18:07 vpasswd
-rw------- 1 vpopmail vchkpw 2197 Aug 14 18:07 vpasswd.cdb
root@mail:/home/vpopmail/domains# ls -la ./example.jp/postmaster/
total 16
drwx------ 3 vpopmail vchkpw 4096 Aug 14 18:07 .
drwx------ 3 vpopmail vchkpw 4096 Aug 14 18:07 ..
drwx------ 5 vpopmail vchkpw 4096 Aug 14 18:07 Maildir
-rw------- 1 vpopmail vchkpw 7 Aug 14 18:07 lastauth
# /home/vpopmail/bin/vadduser [email protected]
Please enter password for [email protected]:
enter password again:
postmasterやroot宛のメールの転送設定を行います。この作業は必須ではありませんが、エラーなどでroot宛などに送られたメールも自分のメールユーザーで受信でき、便利です。root宛のメールを[email protected]に転送する設定です。
/home/vpopmail/domains/仮想ドメイン名のディレクトリに、.qmail-rootファイルを作成し、以下の内容を記述します。ファイル名先頭の"."は必須です。パーミッションを修正。ファイルの命名は".qmail-"+ユーザー名です。
&[email protected]
# chown vpopmail:vchkpw .qmail-root
ユーザーは仮想ユーザーとして作成していなくてもかまいません。webでよく使う[email protected]などもこの転送指定のファイルで可能です。
また、/var/qmail/alias/以下に.qmail-root、.qmail-postmaster、.qmail-mailer-daemonファイルを同じ内容で作成し、パーミッションを修正しす。
# vim /var/qmail/alias/.qmail-root
# vim /var/qmail/alias/.qmail-postmaster
# vim /var/qmail/alias/.qmail-mailer-daemon
# ls -la /var/qmail/alias/
total 20
drwxr-sr-x 2 alias qmail 4096 Aug 14 18:43 .
drwxr-xr-x 10 root qmail 4096 Aug 12 20:14 ..
-rw-r--r-- 1 root qmail 22 Aug 14 18:43 .qmail-mailer-daemon
-rw-r--r-- 1 root qmail 22 Aug 14 18:42 .qmail-postmaster
-rw-r--r-- 1 root qmail 22 Aug 14 18:41 .qmail-root
qmailに付属していたサンプルのファイルを元にrcファイルを作成します。rcファイルで、MailboxからMaildir形式に変更します。
# cd /var/qmail
# cp /var/qmail/boot/home /var/qmail/rc
# vim rc
qmail-start ./Mailbox splogger qmail <--この行のMailboxをMaildir/に変更
↓ 最後の/を忘れずに
qmail-start ./Maildir/ splogger qmail
/etc/init.d/qmailファイルを作成します。 711と710はqmaildのユーザーIDとグループIDです。
#!/bin/sh [ -f /var/qmail/rc ] || exit 0 PATH=$PATH:/var/qmail/bin:/usr/local/bin case "$1" in start) echo -n "Starting... qmail" csh -cf '/var/qmail/rc &' /usr/local/bin/tcpserver -H -R -l host.example.jp -v \ -x /home/vpopmail/etc/tcp.smtp.cdb -u 711 -g 710 0 smtp \ /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 2 & /usr/local/bin/tcpserver -H -R -l host.example.jp -v 0 pop3 \ /var/qmail/bin/qmail-popup mail.it-school.biz /home/vpopmail/bin/vchkpw \ /var/qmail/bin/qmail-pop3d Maildir 2>&1 | /var/qmail/bin/splogger pop3d 2 & touch /var/lock/qmail ;; stop) echo "Shutting down qmail." PID=`/bin/ps -aefw | grep qmail | awk '{print $2}'` if [ ! -z "$PID" ] ; then /bin/kill ${PID} 1> /dev/null 2>&1 fi rm -f /var/lock/qmail ;; *) echo "Usage: "$0" {start|stop}" exit 1 esac exit 0
実行権のパーミッション設定します。
# chmod +x /etc/init.d/qmail
csh(Cシェル)をDebianで使う場合は、 # apt install csh を実行します。
サブミッションポートで実行する場合
#!/bin/sh [ -f /var/qmail/rc ] || exit 0 PATH=$PATH:/var/qmail/bin:/usr/local/bin case "$1" in start) echo -n "Starting... qmail" csh -cf '/var/qmail/rc &' /usr/local/bin/tcpserver -H -R -l mail.it-school.biz -v \ -x /home/vpopmail/etc/tcp.smtp.cdb -u 711 -g 710 0 25 smtp \ /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 2 & /usr/local/bin/tcpserver -H -R -l mail.it-school.biz -v \ -x /home/vpopmail/etc/tcp.smtp.cdb -u 711 -g 710 0 587 smtp \ /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 2 & /usr/local/bin/tcpserver -H -R -l mail.it-school.biz -v 0 pop3 \ /var/qmail/bin/qmail-popup mail.it-school.biz /home/vpopmail/bin/vchkpw \ /var/qmail/bin/qmail-pop3d Maildir 2>&1 | /var/qmail/bin/splogger pop3d 2 & touch /var/lock/qmail ;; stop) echo "Shutting down qmail." PID=`/bin/ps -aefw | grep qmail | awk '{print $2}'` if [ ! -z "$PID" ] ; then /bin/kill ${PID} 1> /dev/null 2>&1 fi rm -f /var/lock/qmail ;; *) echo "Usage: "$0" {start|stop}" exit 1 esac exit 0
////////////// 未作業です
念のために smtp over ssl を使うときのために、qmailに smtp-auth のパッチを適用させます。
qmailのソースをダウンロードしたディレクトリに、qmail-smtpd-auth-0.31.tar.gz (smtp-auth のためのパッチ)をダウンロードします。
wget http://tomclegg.net/qmail/qmail-smtpd-auth-0.31.tar.gz
qmailを解凍後、そのqmailを同じディレクトリ内に netqmail-1.06_smtps というディレクトリ名でコピーします。
その netqmail-1.06_smtps に移動して、qmail-103.patch (DNS応答に関するパッチ)と、qmail-date-localtime.patch (ローカルタイムに関するパッチ)
と、qmail-smtpd-relay-reject (リレーサーバとして利用させないためのパッチ)の3つのパッチを適用させます。
qmailのディレクトリにある qmail-smtpd-auth-0.31 パッチプログラムを、netqmail-1.06_smtpディレクトリ内にコピーし、make 実行し、できたqmail-smtpd を/var/qmail/bin/qmail-smtpd-authへコピーします。
tar zxvf netqmail-1.06.tar.gz
cp -r netqmail-1.06 netqmail-1.06_smtps
cd netqmail-1.06_smtps
patch -p1 < ../qmail-103.patch
patch -p1 < ../qmail-date-localtime.patch
patch -p1 < ../qmail-smtpd-relay-reject
cp -r ../qmail-smtpd-auth-0.31/* ./
make
cp qmail-smtpd /var/qmail/bin/qmail-smtpd-auth
////////////// ここまで未作業です
////// 未設定です。
以下のファイルを、ファイル名 alias.sh として作成し、実行権を付加。chmod u+x alias.sh
root 宛のメールをフォワードする先に 「例えば、自分のメールアドレス」 を指定する。「転送」行は'&'で始めます。残りの部分はメイルアドレスです。
cd /var/qmail/alias
echo '&自分のメールアドレスを記入' > .qmail-root
echo '&root' > .qmail-postmaster
echo '&root' > .qmail-mailer-daemon
echo '&root' > .qmail-bin
echo '&root' > .qmail-daemon
echo '&root' > .qmail-games
echo '&root' > .qmail-ingres
echo '&root' > .qmail-nobody
echo '&root' > .qmail-system
echo '&root' > .qmail-toor
echo '&root' > .qmail-uucp
echo '&root' > .qmail-usenet
echo '&root' > .qmail-anonymous
echo '&root' > .qmail-mail
echo '&root' > .qmail-www
echo '&root' > .qmail-dns
chmod 644 .qmail-*
Mailboxへ配送するために、/etc/profile の最後の行に以下を書き加える。
MAIL="$HOME/Mailbox"
MAILDROP="$HOME/Mailbox"
export MAIL MAILDROP
cshユーザーのために、/etc/csh.cshrc ファイルを作成し、最後の行に以下を書き加える。
setenv MAIL $HOME/Mailbox
setenv MAILDROP $HOME/Mailbox
※各ユーザーのホームディレクトリのパーミッションは755でないとメール配送時にエラーになるようです。
/var/qmail/bin 以下のコマンドにパスを通す設定として、bash ユーザのために/etc/profile のPATH= の行(2 行ごとに)に/var/qmail/bin を付け加える。
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/var/qmail/bin"
PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/var/qmail/bin"
cshユーザーのために、/etc/csh.cshrc ファイルに、同様のPATH設定を書き加える。
setenv PATH /usr/local/bin:/usr/bin:/bin:/var/qmail/bin
/etc/manpath.config に以下の行を追加する。
MANDATORY_MANPATH /var/qmail/man
MANPATH_MAP /var/qmail/bin /var/qmail/man
MANDB_MAP /var/qmail/man /var/qmail/man
qmailを起動する設定とスタートスクリプトの作成。
cp /var/qmail/boot/home /var/qmail/rc
qmailファイルを /etc/init.d/ へコピー cp qmail /etc/init.d/qmail
そのqmailファイルに実行権を設定 chmod +x /etc/init.d/qmail
スタートスクリプト qmail を作成、内容は以下のとおり。
#!/bin/bash
#
# /etc/init.d/qmail : start or stop the qmail mail subsystem.
#
# source from http://www.atmarkit.co.jp/ait/articles/0211/02/news001.html
#
#
# updated by MIKAMI Takashi (2015/12/15)
# updated by MIKAMI Takashi (2014/06/12)
# created by MIKAMI Takashi (2014/06/11)
### BEGIN INIT INFO
# Provides: qmail
# Required-Start: $remote_fs
# Required-Stop: $remote_fs
# Should-Start: $network $syslog
# Should-Stop: $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start and stop qmail
# Description: qmail is qmail
### END INIT INFO
PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin
#[ -f /var/qmail/rc ] || exit 0
[ -f /var/qmail/bin/qmail-start ] || exit 0
[ -f /var/qmail/bin/qmail-send ] || exit 0
case "$1" in
start)
# Start daemons.
echo "Startig mail-transfer agent: qmail."
sh -c '/var/qmail/rc &'
# For SMTP
# sh -c " /sbin/start-stop-daemon --start --quiet --user qmaild \
# --pidfile /var/run/tcpserver_smtpd.pid --make-pidfile \
# --exec /usr/local/bin/tcpserver -- -HRv -u ` id -u qmaild ` \
# -g ` id -g qmaild ` -x /etc/tcp.smtp.cdb 0 smtp \
# /usr/local/bin/rblsmtpd -r bl.spamcop.net \
# /var/qmail/bin/qmail-smtpd 2>&1 \
# | /var/qmail/bin/splogger smtpd 3 > /dev/null 2>&1 &"
# For SMTP over SSL
# sh -c "/sbin/start-stop-daemon --start --quiet --user qmaild \
# --pidfile /var/run/tcpserver_ssmtp.pid --make-pidfile \
# --exec /usr/local/bin/tcpserver-ssl -- -s -HRv -u \
# ` id -u qmaild ` -g ` id -g qmaild ` -x /etc/tcp.smtp.cdb \
# -n /var/qmail/server.key/qmail.pem 0 ssmtp \
# /usr/local/bin/rblsmtpd -r bl.spamcop.net \
# /var/qmail/bin/qmail-smtpd-auth usuzumi.ep.sci.hokudai.ac.jp \
# /bin/checklocalpwd /bin/true 2>&1 \
# | /var/qmail/bin/splogger smtpd 3 > /dev/null 2>&1 &"
# For POP3
# sh -c "/sbin/start-stop-daemon --start --quiet --user root \
# --pidfile /var/run/tcpserver_pop3d.pid --make-pidfile \
# --exec /usr/local/bin/tcpserver -- -v -u 0 -g 0 0 pop3 \
# /var/qmail/bin/qmail-popup \
# usuzumi.ep.sci.hokudai.ac.jp /bin/checkapoppw \
# /var/qmail/bin/qmail-pop3d Maildir 2>&1 \
# | /var/qmail/bin/splogger pop3d 3 > /dev/null 2>&1 &"
# For POP3 over SSL
# sh -c "/sbin/start-stop-daemon --start --quiet --user root \
# --pidfile /var/run/tcpserver_pop3s.pid --make-pidfile \
# --exec /usr/local/bin/tcpserver-ssl -- -s \
# -n /var/qmail/server.key/qmail.pem \
# -v -u 0 -g 0 0 pop3s \
# /var/qmail/bin/qmail-popup \
# usuzumi.ep.sci.hokudai.ac.jp /bin/checkapoppw \
# /var/qmail/bin/qmail-pop3d Maildir 2>&1 \
# | /var/qmail/bin/splogger pop3d 3 > /dev/null 2>&1 &"
;;
stop)
# Stop daemons.
echo "Stopping mail-transfer agent: qmail"
PID=`/bin/ps -aefw | grep qmail | awk '{print $2}'`
if [ ! -z "$PID" ] ; then
/bin/kill ${PID} 1> /dev/null 2>&1
fi
# /sbin/start-stop-daemon --user qmails --stop --quiet --oknodo --exec /var/qmail/bin/qmail-send # qmail-send
# /sbin/start-stop-daemon --user qmaild --stop --quiet --oknodo --pidfile /var/run/tcpserver_smtpd.pid --exec /usr/local/bin/tcpserver # smtp
# /sbin/start-stop-daemon --user root --stop --quiet --oknodo --pidfile /var/run/tcpserver_pop3d.pid --exec /usr/local/bin/tcpserver # pop3
# /sbin/start-stop-daemon --user qmaild --stop --quiet --oknodo --pidfile /var/run/tcpserver_ssmtp.pid --exec /usr/local/bin/tcpserver-ssl # smtp over SSL
# /sbin/start-stop-daemon --user root --stop --quiet --oknodo --pidfile /var/run/tcpserver_pop3s.pid --exec /usr/local/bin/tcpserver-ssl # pop3s
;;
# ===modified by Mikami Takashi (2014/06/11)===
restart)
$0 stop
$0 start
;;
# ===modified by Mikami Takashi (2014/06/11)===
cdb)
echo "Rebuilding tcp.smtp.cdb"
cd /etc
/usr/local/bin/tcprules /etc/tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp
;;
*)
echo 'Usage: /etc/init.d/qmail {start|stop|restart|cdb}'
exit 1
esac
exit 0
ブート時に自動的に起動するように、 以下のコマンドで各/etc/rc.X ディレクトリからシンボリックリンクを設定する。
update-rc.d qmail defaults
qmailを実行する /etc/init.d/qmail start
qmailの実行を確認
ps aux | grep qmail
$ ps aux | grep qmail
avahi 349 0.0 0.3 8284 3788 ? Ss 15:00 0:00 avahi-daemon: running [netqmail.local]
qmails 454 0.0 0.0 2340 744 ? S 15:00 0:00 qmail-send
qmaill 455 0.0 0.0 2292 736 ? S 15:00 0:00 splogger qmail
root 456 0.0 0.0 2292 680 ? S 15:00 0:00 qmail-lspawn ./Mailbox
qmailr 457 0.0 0.0 2284 740 ? S 15:00 0:00 qmail-rspawn
qmailq 458 0.0 0.0 2284 740 ? S 15:00 0:00 qmail-clean
hodota 891 0.0 0.0 4332 888 pts/0 S+ 15:02 0:00 grep qmail
service qmail status
$ sudo service qmail status
● qmail.service - LSB: Start and stop qmail
Loaded: loaded (/etc/init.d/qmail; generated)
Active: active (running) since Thu 2021-07-29 15:00:52 JST; 1min 54s ago
Docs: man:systemd-sysv-generator(8)
Tasks: 5 (limit: 1138)
Memory: 3.1M
CGroup: /system.slice/qmail.service
tq454 qmail-send
tq455 splogger qmail
tq456 qmail-lspawn ./Mailbox
tq457 qmail-rspawn
mq458 qmail-clean
7月 29 15:00:52 netqmail systemd[1]: Starting LSB: Start and stop qmail...
7月 29 15:00:52 netqmail qmail[451]: Startig mail-transfer agent: qmail.
7月 29 15:00:52 netqmail systemd[1]: Started LSB: Start and stop qmail.
7月 29 15:00:52 netqmail qmail[455]: 1627538452.172180 status: local 0/10 remote 0/20
ローカル配送テストその1
自分に送る準備
echo ./Mailbox > ~/.qmail
touch ~/Mailbox
自分へメールを送ります。下記のhogeは自分のLinuxユーザーアカウント名に変更して実行します。~hoge/Mailbox にメールが送られることを確認
echo to: hoge | qmail-inject
確認する
lv ~/Mailbox
From [email protected] Thu Jul 29 06:08:02 2021
Return-Path: <[email protected]>
Delivered-To: [email protected]
Received: (qmail 911 invoked by uid 1000); 29 Jul 2021 15:08:02 +0900
Date: 29 Jul 2021 15:08:02 +0900
Message-ID: <[email protected]>
From: [email protected]
to: [email protected]
ローカル配送テストその2
存在しない宛先に送る。バウンスメールが~hoge/Mailbox に送られてくれば大丈夫です。
echo to: nonexisten | qmail-inject
lv ~/Mailbox
From [email protected] Thu Jul 29 06:08:02 2021
Return-Path: <[email protected]>
Delivered-To: [email protected]
Received: (qmail 911 invoked by uid 1000); 29 Jul 2021 15:08:02 +0900
Date: 29 Jul 2021 15:08:02 +0900
Message-ID: <[email protected]>
From: [email protected]
to: [email protected]
From MAILER-DAEMON Thu Jul 29 07:00:04 2021
Return-Path: <>
Delivered-To: [email protected]
Received: (qmail 1044 invoked for bounce); 29 Jul 2021 16:00:04 +0900
Date: 29 Jul 2021 16:00:04 +0900
From: [email protected]
To: [email protected]
Subject: failure notice
Hi. This is the qmail-send program at netqmail.ijinden.jp.
I'm afraid I wasn't able to deliver your message to the following addresses.
This is a permanent error; I've given up. Sorry it didn't work out.
<[email protected]>:
Sorry, no mailbox here by that name. (#5.1.1)
--- Below this line is a copy of the message.
Return-Path: <[email protected]>
Received: (qmail 1041 invoked by uid 1000); 29 Jul 2021 16:00:04 +0900
Date: 29 Jul 2021 16:00:04 +0900
Message-ID: <[email protected]>
From: [email protected]
to: [email protected]
ローカル配送テストその3
他のホストのメールアカウントへ送信してみます。メールの主題や本文などは無記入の状態です。届いていればOKです。届かいない場合は、/var/log/syslogを見て原因を見つけます。
echo to: メールアドレス | /var/qmail/bin/qmail-inject
ローカル配送テストその4
他のホストの存在しないメールアカウントへ送信してみます。メールの主題や本文などは無記入の状態です。-f オプションでバウンスの送り先を指定します。詳細は、/var/log/syslogでも確認できます。
echo to: 存在しないメールアドレス | /var/qmail/bin/qmail-inject -f [email protected]
[email protected] にバウンスが来ていることを確認する.
lv ~hoge/Mailbox
次のページへ
POP / tcpserver
SMTP / tcpserver
VMailMgr
ezmlm
imap dovecot
notqmail install
qmail FAQ
qmailadmin
vpopmail
POPはtcpserverから起動されます。tcpserverはucspi-tcpパッケージの一部として提供されており、inetdなどの従来のサービス起動プロセスよりもDoS攻撃などにも対応できるように同時接続制限が設定できる、制御ファイルは独自データベースファイル(cdb)を採用しているため、高速な処理が可能、設定変更にサービス再起動が必要ない、などメリットがあります。
POPでメールを読む際にパスワードの暗号化でapopをインストールします。
checkpw-1.03.tar.gzをダウンロード、コンパイル、インストール
wget http://sourceforge.net/projects/checkpw/files/checkpw/checkpw-1.03/check...
解凍後 cd chekpw-1.03/
make
make setup check
/bin/checkapoppw が出来ているか確認します。
ls -al /bin/checkapoppw
-rwx------ 1 root root 18784 7月 30 17:27 /bin/checkapoppw
tcpserverのインストール
wget http://www.emaillab.org/djb/tools/ucspi-tcp/ucspi-tcp-0.88.tar.gz
パッチucspi-tcp-0.88.errno.patchをダウンロード
wget http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/ucspi-tcp-0.88.errno.patch
ucspi-tcp-0.88.tar.gzを解凍し、そのディレクトリに移動 cd ucspi-tcp-0.88
パッチ ucspi-tcp-0.88.errno.patch を適用
patch < ../ucspi-tcp-0.88.errno.patch
make
make setup check
その後、tcpserver を起動するためにLinux再起動
tcpserver からPOPを呼び出すために、起動スクリプト /etc/init.d/qmail のPOPの以下の行コメントを外します。
# For POP3
# sh -c "/sbin/start-stop-daemon --start --quiet --user root \
# --pidfile /var/run/tcpserver_pop3d.pid --make-pidfile \
# --exec /usr/local/bin/tcpserver -- -v -u 0 -g 0 0 pop3 \
# /var/qmail/bin/qmail-popup \
# usuzumi.ep.sci.hokudai.ac.jp /bin/checkapoppw \
# /var/qmail/bin/qmail-pop3d Maildir 2>&1 \
# | /var/qmail/bin/splogger pop3d 3 > /dev/null 2>&1 &"
以下のstopの部分もコメントを外します。
# /sbin/start-stop-daemon --user root --stop --quiet --oknodo --pidfile /var/run/tcpserver_pop3d.pid --exec /usr/local/bin/tcpserver # pop3
以下のようになります。hoge.jp /bin/checkapoppw \ hoge.jpにはホスト名を記載します。
# For POP3
sh -c "/sbin/start-stop-daemon --start --quiet --user root \
--pidfile /var/run/tcpserver_pop3d.pid --make-pidfile \
--exec /usr/local/bin/tcpserver -- -v -u 0 -g 0 0 pop3 \
/var/qmail/bin/qmail-popup \
hoge.jp /bin/checkapoppw \
/var/qmail/bin/qmail-pop3d Maildir 2>&1 \
| /var/qmail/bin/splogger pop3d 3 > /dev/null 2>&1 &"
/sbin/start-stop-daemon --user root --stop --quiet --oknodo --pidfile /var/run/tcpserver_pop3d.pid --exec /usr/local/bin/tcpserver # pop3
qmailの再起動: /etc/init.d/qmail restart
この時点、qmailの動作ステータスを確認するとワーニングが出ていて、'systemctl daemon-reload' を実行すればワーニングはなくなります。
Warning: The unit file, source configuration file or drop-ins of qmail.service changed on disk. Run 'systemctl daemon-reload' to reload units.
● qmail.service - LSB: Start and stop qmail
Loaded: loaded (/etc/init.d/qmail; generated)
Active: active (exited) since Fri 2021-07-30 17:57:22 JST; 16min ago
Docs: man:systemd-sysv-generator(8)
7月 30 17:57:22 netqmail systemd[1]: Starting LSB: Start and stop qmail...
7月 30 17:57:22 netqmail qmail[449]: Startig mail-transfer agent: qmail.
7月 30 17:57:22 netqmail systemd[1]: Started LSB: Start and stop qmail.
7月 30 17:57:23 netqmail qmail[453]: 1627635443.017296 status: local 0/10 remote 0/20
systemctl daemon-reload
qmailの動作ステータスを確認し、ワーニングがないことを確認します。
systemctl status qmail
● qmail.service - LSB: Start and stop qmail
Loaded: loaded (/etc/init.d/qmail; generated)
Active: active (exited) since Fri 2021-07-30 17:57:22 JST; 17min ago
Docs: man:systemd-sysv-generator(8)
Tasks: 0 (limit: 1138)
Memory: 0B
CGroup: /system.slice/qmail.service
7月 30 17:57:22 netqmail systemd[1]: Starting LSB: Start and stop qmail...
7月 30 17:57:22 netqmail qmail[449]: Startig mail-transfer agent: qmail.
7月 30 17:57:22 netqmail systemd[1]: Started LSB: Start and stop qmail.
7月 30 17:57:23 netqmail qmail[453]: 1627635443.017296 status: local 0/10 remote 0/20
POP3動作の確認
ps aux | grep qmail
qmails 851 0.0 0.0 2340 680 pts/0 S 18:13 0:00 qmail-send
qmaill 853 0.0 0.0 2292 744 pts/0 S 18:13 0:00 splogger qmail
root 854 0.0 0.0 2292 676 pts/0 S 18:13 0:00 qmail-lspawn ./Mailbox
qmailr 855 0.0 0.0 2284 736 pts/0 S 18:13 0:00 qmail-rspawn
qmailq 856 0.0 0.0 2284 740 pts/0 S 18:13 0:00 qmail-clean
root 857 0.0 0.1 2404 1732 pts/0 S 18:13 0:00 /usr/local/bin/tcpserver -v -u 0 -g 0 0 pop3 /var/qmail/bin/qmail-popup netqmail.ijinden.jp /bin/checkapoppw /var/qmail/bin/qmail-pop3d Maildir
root 858 0.0 0.0 2292 736 pts/0 S 18:13 0:00 /var/qmail/bin/splogger pop3d 3
root 898 0.0 0.0 4332 888 pts/0 S+ 18:19 0:00 grep qmail
POPによるメールの呼び出しは、Maildir形式で行います。/etc/profile に次の 2 行を追加します。
MAILDIR="$HOME/Maildir/"
export MAILDIR
cshは /etc/csh.cshrc に次の 1 行を追加します。
setenv MAILDIR $HOME/Maildir/
配送テストのために、一般ユーザーで以下の設定を行う。
~/Maildir の作成
maildirmake のスクリプトでMaildir ディレクトリを作成する。
$ maildirmake ~/Maildir
.qmail の編集
~/Maildir への配送を qmail に指示する (.qmail へ配送先ディレクトリを記述)
$ echo ./Maildir/ >> ~/.qmail
$ chmod 600 ~/.qmail
$ ls -la ~/.qmail
-rw------- 1 hodota hodota 21 7月 31 12:51 /home/hodota/.qmail
.qmail のパーミッションは、600 か 644 でなければならない。実行許可が出ていないことと、オーナー以外に書き込みが許可されていないことが要求される。
以上の作業は各ユーザごとに行わねばならなので、/etc/skel/ 以下 に .qmail や Maildir/ を置いておけば、adduser コマンドを用いてアカウ ントを新規に作ったときにできるホームディレクトリ内にこれらは自動で入ります。 新規にアカウントを取得する一般ユーザは、以上の作業が不要になります。
cp -ar /home/hodota/.qmail /etc/skel/
chown -R root:root /etc/skel/.qmail
cp -ar /home/hodota/Maildir /etc/skel/
chown -R root:root /etc/skel/Maildir/
認証パスワードの設定
~/Maildir/.password ファイルを作成します。 APOPPASSWORDは自分で考えたパスワードに変更します。APOPPASSWORDがPOP でメールを読むときの認証パスワードとなり、パーミッションを600としないとPOPが機能しません。
$ echo 'APOPPASSWORD' > ~/Maildir/.password
$ chmod 600 ~/Maildir/.password
テスト
配送テストを行う. 自分に送ってみる. 以下のコマンドを実行する.
$ echo to: chikuwaXX | /var/qmail/bin/qmail-inject
メールソフトで受信テストします。
受信サーバ: POP3
サーバのホスト名: mail.xxxxxx.jp
受信サーバのポート番号: 110
受信サーバの SSL: 接続の保護なし
認証方式: 暗号化されたパスワード認証
qmailを仮想ドメインで使う場合の認証プログラムとしてVMailMgr、VPopMailなどがあります。
VPopMail は以下のページが参考になります。sqmailとVPopMailのインストールです。
https://www.oliwel.de/vpopmail/
VPopMailのダウンロード: wget https://sourceforge.net/projects/vpopmail/files/vpopmail-stable/5.4.33/v...
以下のサイトに過去のソースがあります。
http://untroubled.org/vmailmgr/current/
ソースのダウンロード: wget http://untroubled.org/vmailmgr/current/vmailmgr-0.97.tar.gz
ezmlmは、qmailの開発者D. J. Bernstein氏により作成された大規模対応のメーリングリストで、qmailのMaildirにも対応し、fmlやMajordomoに比べ管理も容易です。
環境: Debian 10 buster
ダウンロード: # wget http://cr.yp.to/software/ezmlm-0.53.tar.gz
解凍後、cd ezmlm-0.53 error.h のファイルを編集し、extern int errno; を #include <errno.h> に書き換える
ezmlm-manage.c と ezmlm-return.c の 先頭に #include "log.h" を書き込む。
# make
# make man
# make setup
/usr/local/bin/ezmlm/ 以下にインストールされました。
# ls -la /usr/local/bin/ezmlm/
合計 324
drwxr-xr-x 2 root root 4096 8月 21 17:09 .
drwxr-sr-x 3 root root 4096 8月 21 17:09 ..
-rwxr-xr-x 1 root root 22832 8月 21 17:09 ezmlm-list
-rwxr-xr-x 1 root root 31056 8月 21 17:09 ezmlm-make
-rwxr-xr-x 1 root root 43640 8月 21 17:09 ezmlm-manage
-rwxr-xr-x 1 root root 22808 8月 21 17:09 ezmlm-reject
-rwxr-xr-x 1 root root 35184 8月 21 17:09 ezmlm-return
-rwxr-xr-x 1 root root 35248 8月 21 17:09 ezmlm-send
-rwxr-xr-x 1 root root 26896 8月 21 17:09 ezmlm-sub
-rwxr-xr-x 1 root root 26896 8月 21 17:09 ezmlm-unsub
-rwxr-xr-x 1 root root 39480 8月 21 17:09 ezmlm-warn
-rwxr-xr-x 1 root root 23056 8月 21 17:09 ezmlm-weed
/usr/local/bin/ezmlm/ 以下の ezmlm のコマンドバイナリ群にパスが使えるように設定します。 /etc/profile を編集してPATHに :/usr/local/bin/ezmlm を追加します。
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/bin/ezmlm"
Profileを反映させます。 # source /etc/profile
テストは qmaildamin 導入後に行います。
メーリングリストのタイトルに、連番でメーリングリストの番号を表示させるには、qmailadminの画面で、メーリングリストのプレフックスに、メーリングリストの名前の後に :# を追加します。
ezmlm-idxは、ezmlmを拡張するパッチプログラムで、Frederik P.Lindberg氏によって開発・メンテナンスされています。ダイジェストリストを作成したり、Subjectを加工したりできるようになります。
詳しい情報: http://untroubled.org/ezmlm/
ezmlm-idxの情報: http://untroubled.org/ezmlm/
ダウンロード: # wget http://untroubled.org/ezmlm/archive/7.2.2/ezmlm-idx-7.2.2.tar.gz
ezmlm-0.53.tar.gzと同じディレクトリに保存し、インストールします。
# tar xvfz ezmlm-idx-7.2.2.tar.gz
# mv ezmlm-idx-7.2.2/* ezmlm-0.53/
# cd ezmlm-0.53
# ln -s /.../.../ezmlm-0.53/lang/ja /.../.../ezmlm-0.53/lang/default
# make clean
# make
# make man
# ./ezmlm-test
# make install
# cp /.../.../ezmlm-0.53/ezmlm-cgi /usr/lib/cgi-bin/
# chmod 4555 /usr/lib/cgi-bin/ezmlm-cgi
※ezmlm-idx-7.2.2のインストールで参考にしたURL: https://qmailrocks.thibs.com/ezmlm-idx.php ただしこのサイトでは、インストール先がezmlm-idx-7.2.2を解凍したディレクトリになっているので、ezmlm-0.53へ変更しました。
http://untroubled.org/ezmlm からフォークしたezmlm-idx の情報:https://github.com/mbhangui/ezmlm-idx
Easy Mailing List Manager for indimail-mta, qmail
ダウンロード: wget http://untroubled.org/ezmlm-browse/ezmlm-browse-0.20.tar.gz
ソースデータ: https://github.com/bruceg/ezmlm-browse
インストール手順
# cat INSTALL
Building the Sources
====================
- Unpack the ezmlm-browse sources into a non-web-visible directory. If
you are using the setuid wrapper (see below), this is the directory
from which ezmlm-browse will execute.
- Make sure all the conf-* files have values appropriate for your
system (they contain notes about what they are used for). They are
set to appropriate defaults for most systems using GCC.
- If your python program is not in the path, put the full path to it in
the first line of a file called "auto-python".
If in doubt, skip this step.
- Run "make".
Simple Installation
===================
- As a user that has read access to the list archives, run:
./ezmlm-browse-setup --apache DESTPATH TARGET.cgi
where: DESTPATH is the destination directory into which the files will
be installed, TARGET.cgi is the CGI filename to install. For the
simplest usage this target will be "index.cgi", but if you have other
CGI scripts in the same directory you may name it something else.
Generic Installation
====================
- Copy either "ezmlm-browse" (if your web server is using Apache suexec
or equivalent) or "wrapper" (for setuid execution) into a location
where CGI programs may be executed. Usually this is either something
in a "cgi-bin" directory or a file elsewhere named "something.cgi".
The destination name does not need to be either "wrapper" or
"ezmlm-browse" as the script will automatically determine its own name
for the links it creates.
- Make sure the resulting program is executable and owned by the a that
has read access to the list archives.
- If your web server runs as a user that cannot read the mailing list
archives (normally true) and does not use the Apache suexec or
equivalent module, make the copy of the "wrapper" program setuid to a
user that has read access to the mailing list archive files. Do *NOT*
make any Python script setuid.
- Copy in the "ezmlm-browse.ini" file and edit it as appropriate for
your site and lists.
- If using Apache with the program in a directory other then "cgi-bin",
make sure CGI execution is enabled in that directory by adding the
following lines to a ".htaccess" file in the same directory:
Options +ExecCGI
AddHandler cgi-script .cgi
DirectoryIndex index.cgi
Other server software should be similarly configured.
Configuration
=============
- Edit ezmlm-browse.ini in the destination directory to declare which
mailing lists are visible to the web, and set the other defaults as
appropriate.
- Mailing lists should have the ezmlm-make "-i" option enabled to keep
the necessary indices up to date. If this is not enabled, run the
following command for each list:
ezmlm-make -+ -i /path/to/list
ただし、Webでメーリングリストが閲覧できるのは便利ですが、アクセス権限などを厳格に設定しないと、メーリングリストの内容が公開されてしまいます。
なので、過去のメーリングリストのデータを見たい場合は、ezmlmのコマンドで取得したほうが、安全、安心だと思います。
ダイジェストメールの有効化
ダイジェストメールの場合は「[email protected]」になります。同様に、ダイジェストメールをやめるには「[email protected]」に空メッセージを送信します。
※メッセージやタイトルなどで文字化けが起きる場合は、メールソフトでのテキストエンコーディングで、Unicodeに設定します。
123 から145のメッセージを取得 メーリングリスト名[email protected]
123 から145のインデック付のメッセージを取得 メーリングリスト名[email protected]
参照したURL: https://www.atmarkit.co.jp/ait/articles/0203/09/news002_2.html
適当な作業ディレクトリにダウンロードして展開します。
ダウンロード: wget https://sourceforge.net/projects/qmailadmin/files/autorespond/2.0.4/auto...
# tar xvfz autorespond-2.0.4.tar.gz
# cd autorespond-2.0.4/
# make
# make install
※これで/usr/local/bin/autorespondがインストールされました。qmailadminから使用することが目的ですから、直接autorespondを使用する機会は少ないと思いますが概要だけ確認しておきます。
autoresponderの使用方法は、「.qmail」ファイルに次の1行を記述します。
| /usr/local/bin/autorespond time num message dir [ flag arsender ]
引数やオプションの意味
time:numに使う受付時間(単位:秒)
num:timeで指定された時間以内に受け付けるメールの最大数
message:応答メッセージファイル
dir:ログを作成するディレクトリ
flag(送信されてきたメッセージの扱い方)
0:応答メッセージに添付しない
1:応答メッセージに添付(デフォルト指定)
arsender(応答メッセージ中の差出人)
+:Fromを空にする
$:送られてきたメッセージ中の「To:」を使用
notqmaiのインストールは、事前にSSL証明書(インストールしたサーバー独自の)をインストールした環境で行います。
例えば、OpenSSLを使って、秘密鍵、サーバー証明書、公開鍵など。
qmailadminをインストールするために、Webサーバー(Apache)とSSL証明書を設定します。サーバーのIPアドレスでSSL証明書を使う場合はサーバー自身の証明書を使い、もし、ドメイン名でSSL証明書を使う場合は、Let’s Encryptの https://certbot.eff.org/ を設定してからインストールします。 今回はサーバーのIPアドレスを使う方法でインストールします。
参考にしたサイト:
インストール作業はrootアカウントです。OSはDebian 10 busterです。
自ホストを host.example.jp、自ドメインをexample.jp としています。メールサーバを運用する場合、DNSの設定が必須です。DNSに下記のようにドメインに対するMXを設定してください。
IN MX 10 host.example.jp.
とりあえず動かすだけならMXは必須ではありませんが、その場合[email protected]ではサーバへの配送は行われません。[email protected]のようなFQDN(Fully Qualified Domain Name:完全修飾ドメイン名)を用いてテストしてください。また、その場合、host.example.jp自体はDNSに登録されている必要があります。
念のために、サーバーのホスト名 host.example.jp を /etc/hosts に設定します。
コンパイルの前に、インストール先のディレクトリ作成(/var/qmail)とqmailを稼働させるのに必要なユーザーとグループの登録をします。
# groupadd nofiles
# useradd -g nofiles -d /var/qmail/alias -s /bin/false alias
# useradd -g nofiles -d /var/qmail -s /bin/false qmaild
# useradd -g nofiles -d /var/qmail -s /bin/false qmaill
# useradd -g nofiles -d /var/qmail -s /bin/false qmailp
# groupadd qmail
# useradd -g qmail -d /var/qmail -s /bin/false qmailq
# useradd -g qmail -d /var/qmail -s /bin/false qmailr
# useradd -g qmail -d /var/qmail -s /bin/false qmails
自分のホームのワーキングディレクトリにソースをダウンロード
notqmailのダウンロード: wget https://github.com/notqmail/notqmail/archive/refs/tags/notqmail-1.08.tar.gz
解凍後、make してインストールします。 # make setup # make check
最初のメールサーバー名(host.example.jp)とそのドメイン設定(example.jp) # ./config-fast host.example.jp
# ./config-fast host.example.jp
Your fully qualified host name is example.jp.
Putting example.jp into control/me...
Putting example.jp into control/defaultdomain...
Putting example.jp into control/plusdomain...
Putting example.jp into control/locals...
Putting example.jp into control/rcpthosts...
Now qmail will refuse to accept SMTP messages except to example.jp.
Make sure to change rcpthosts if you add hosts to locals or virtualdomains!
/var/qmail/control にはqmailの動作で必要な設定として、以下のように記載します。
example.jp
to ヘッダなどにドメイン名が省略された場合に保管されるドメイン名
localhost
localhost.example.jp
host.example.jp
example.jp
受信するホスト名・ドメイン名の設定 qmail-send が使用します。
localhost
example.jp
.example.jp
受信するホスト名・ドメイン名の設定 qmail-smtpd が使用します。
host.example.jp
インストールしたサーバーのFQDN
example.jp
ドメイン名が+で終わっている場合に付加されるドメイン名。例えば、「user@host+」なら「[email protected]」と置換。 qmail-inject が使用します。
上記の設定で、不正中継対策も含んだ最小限の動作環境になります。
登録したドメイン名を確認できます。
初期の管理アカウント設定
# cd ~alias
# touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
# chmod 644 .qmail*
postmaster、MAILER-DAEMON、rootあてのメールは/var/qmail/aliasに保存ではなく、別のメールアドレスへ送信する設定にします。各ファイルにメールアドレスを設定します。echoで代入すると文字のごみができることがあるので、ファイルをエディタで編集するほうが安全のようです。
# echo -n ‘[email protected]’ > .qmail-root
# echo -n ‘[email protected]’ > .qmail-postmaster
# echo -n ‘[email protected]’ > .qmail-mailer-daemon
ユーザーごとにmboxかMaildirかを選択するよりは、Maildirをデフォルトで対応するように設定します。
rcファイルのコピー
# cp ./home /var/qmail/rc
# chmod 0755 /var/qmail/rc
コピーしたrcファイル /var/qmail/rc を書き替えます。
qmail-start ./Mailbox ---> ./Maildir/
mboxでは各ユーザーのホームディレクトリにMailboxファイルが作成されますが、各自のMaildirディレクトリは各自が手動で生成する必要があります。例えば、以下の手順で
# /var/qmail/bin/maildirmake ~alias/Maildir
# chown -R alias /var/qmail/alias/Maildir
# ls -la
total 24
drwxr-sr-x 3 alias qmail 4096 Aug 8 19:03 .
drwxr-xr-x 10 root qmail 4096 Aug 8 12:40 ..
-rw-r--r-- 1 root qmail 21 Aug 8 13:06 .qmail-mailer-daemon
-rw-r--r-- 1 root qmail 21 Aug 8 13:06 .qmail-postmaster
-rw-r--r-- 1 root qmail 21 Aug 8 13:06 .qmail-root
drwx--S--- 5 alias qmail 4096 Aug 8 19:03 Maildir
# ls -la Maildir/
total 20
drwx--S--- 5 alias qmail 4096 Aug 8 19:03 .
drwxr-sr-x 3 alias qmail 4096 Aug 8 19:03 ..
drwx--S--- 2 alias qmail 4096 Aug 8 19:03 cur
drwx--S--- 2 alias qmail 4096 Aug 8 19:03 new
drwx--S--- 2 alias qmail 4096 Aug 8 19:03 tmp
ただし、各自のMaildirディレクトリは各自が手動で生成する必要があります。各ユーザーのアカウントで、例えば、以下の手順
$ /var/qmail/bin/maildirmake ~/Maildir
各自でMaildirが出来ているか確認
$ cd
$ ls -la
total 40
drwxr-xr-x 6 hodota hodota 4096 Aug 8 19:06 .
drwxr-xr-x 3 root root 4096 Aug 6 16:09 ..
-rw------- 1 hodota hodota 176 Aug 8 13:52 .bash_history
-rw-r--r-- 1 hodota hodota 220 Aug 6 16:09 .bash_logout
-rw-r--r-- 1 hodota hodota 3526 Aug 6 16:09 .bashrc
drwx------ 3 hodota hodota 4096 Aug 7 15:39 .gnupg
-rw-r--r-- 1 hodota hodota 807 Aug 6 16:09 .profile
drwx------ 5 hodota hodota 4096 Aug 8 19:06 Maildir
drwxr-xr-x 3 hodota hodota 4096 Aug 6 17:12 snap
drwxr-xr-x 3 hodota hodota 4096 Aug 7 15:42 work
$ ls -la ./Maildir/
total 20
drwx------ 5 hodota hodota 4096 Aug 8 19:06 .
drwxr-xr-x 6 hodota hodota 4096 Aug 8 19:06 ..
drwx------ 2 hodota hodota 4096 Aug 8 19:06 cur
drwx------ 2 hodota hodota 4096 Aug 8 19:06 new
drwx------ 2 hodota hodota 4096 Aug 8 19:06 tmp
もし、root権限で実行した場合は、chownでMaildirディレクトリのオーナーが各ユーザーにに変更します。
また、新規のユーザーについては、/etc/skelディレクトリにMaildirのひな型を設定し、adduserコマンドなどでユーザーを作成した際に自動でMaildirディレクトリが生成するようにします。
# /var/qmail/bin/maildirmake /etc/skel/Maildir
# ls -la /etc/skel
total 24
drwxr-xr-x 3 root root 4096 Aug 8 19:29 .
drwxr-xr-x 77 root root 4096 Aug 7 16:16 ..
-rw-r--r-- 1 root root 220 Apr 18 2019 .bash_logout
-rw-r--r-- 1 root root 3526 Apr 18 2019 .bashrc
-rw-r--r-- 1 root root 807 Apr 18 2019 .profile
drwx------ 5 root root 4096 Aug 8 19:29 Maildir
暫定的に動作確認するために、qmailサーバーを起動(pop3やsmtpは起動しない)します。実際は、 tcpserverを使って起動します。
仮のqmailの起動とメール配信の確認
# sh /var/qmail/rc &
動作確認
# ps -aef | grep qmail
qmails 1304 1098 0 12:50 pts/0 00:00:00 qmail-send
qmaill 1305 1304 0 12:50 pts/0 00:00:00 splogger qmail
root 1306 1304 0 12:50 pts/0 00:00:00 qmail-lspawn ./Maildir/
qmailr 1307 1304 0 12:50 pts/0 00:00:00 qmail-rspawn
qmailq 1308 1304 0 12:50 pts/0 00:00:00 qmail-clean
メールの送信
# echo to: [email protected] | /var/qmail/bin/qmail-inject
tcpserverは、qmailを起動するサービスプロセスとして、ucspi-tcpパッケージの一部として提供されています。ユーザー名・IPアドレス・ドメイン名を基に接続制限がかけられる、特定のIPアドレスでのみサービス受付できる、ハッシュを用いた独自データベースファイル(cdb)なので高速処理可能、設定編変更でもサービス再起動が必要ない、などのメリットがあります。
新規にディレクトリを作成してダウンロード: wget https://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
vi error.h で extern int errno; を #include <errno.h>に変更します。
make してインストールします。 # make setup check
インストール後に、/usr/local/bin/にtcpserver関連が設置されます。
# ls -la /usr/local/bin/tcpserver
-rwxr-xr-x 1 root root 55912 Aug 9 12:54 /usr/local/bin/tcpserver
/etc/tcp.smtp というファイルを作成し、設定します。
# vim /etc/tcp.smtp
IPアドレス.:allow,RELAYCLIENT=""
127.:allow,RELAYCLIENT=""
1行目の設定は「IPアドレスからの接続は環境変数RELAYCLIENTに設定し、接続を許可する」となります。
次に、cdbファイルを作成します。
# /usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
# ls -la /etc/tcp.*
-rw-r--r-- 1 root root 65 Aug 9 13:02 /etc/tcp.smtp
-rw-r--r-- 1 root root 2144 Aug 9 16:10 /etc/tcp.smtp.cdb
qmailを暫定的に起動させます # sh /var/qmail/rc &
tcpserver経由でqmailを起動します。-u1002 はqmaildのユーザーID(UID)、-g1001はnofilesのユーザーID(GID)です。-x /etc/tcp.smtp.cdbはIPアドレス制御cdbファイルを使う場合です。
# tcpserver -v -u1002 -g1001 -x /etc/tcp.smtp.cdb 0 smtp /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 &
# tcpserver -v -u1002 -g1001 0 smtp /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 &
tcpserver から qmail-smtpd を起動する場合
# tcpserver -u 1002 -g 1001 -x /etc/tcp.smtp.cdb 0 smtp /var/qmail/bin/qmail-smtpd &
tcpserverの代表的なオプション
vpopmailは、バーチャルドメインやバーチャルユーザーを実現し、APOP認証やPOP Before SMTPにも対応しています。
まず、vpopmailのアカウントを作成します。
# groupadd vchkpw
# useradd -g vchkpw -s /bin/false -M vpopmail
# mkdir /home/vpopmail
# chown vpopmail:vchkpw /home/vpopmail
# mkdir /home/vpopmail/etc
# chown vpopmail:vchkpw /home/vpopmail/etc
新規にディレクトリを作成してダウンロード: wget http://jaist.dl.sourceforge.net/project/vpopmail/vpopmail-stable/5.4.33/...
解凍後、解凍したディレクトリに移動し、インストールします。POP Before SMTPに対応させるには、configure --enable-roaming-users=y の設定になります。 --enable-relay-clear-minutes=指定分数 は、POP Before SMTPで、最後のPOP接続からSMTPのRelayを許可する制限時間より短くする場合となります。
# ./configure -enable-roaming-users=y -enable-relay-clear-minutes=10
# make
# make install-strip
/etc/tcp.smtpや/etc/tcp.smtp.cdbファイルは、tcpserverのデフォルト位置のものではなく、vpopmailが用の/home/vpopmail/etc/tcp.smtpを追加作成し、/home/vpopmail/etc/tcp.smtp.cdbを作成し使用します。
# cat tcp.smtp
127.:allow,RELAYCLIENT=""
cabファイルの作成
# /usr/local/bin/tcprules /home/vpopmail/etc/tcp.smtp.cdb /home/vpopmail/etc/tcp.smtp.tmp < /home/vpopmail/etc/tcp.smtp
POP Before SMTPの仕組みがrelay-ctrlと同じように、POP接続してきた端末IPアドレスの記録も同じように行われ、それを定期的に消す作業も同じく必要です。vpopmailでも、cronデーモンを利用し、crontabでpop before smtpのデータを10分ごとにリフレッシュします。
crontab -e で以下の行を追加します。毎時10分にIPアドレスを整理して、接続から3時間以上経過したものを除外します。configure時に「--enable-relay-clear-minutes」を付加した場合は、そこで指定された分数になります。
# crontab -e
10 * * * * /home/vpopmail/bin/clearopensmtp > /dev/null 2>&1
vpopmailにドメインを(xxx.com)追加します。仮想ドメイン(xxx.com)を作成します。
ここでは、正規ドメイン(xxx.com)を仮想ドメインとして作成しています。
そして、その仮想ドメイン内に、必要なメールアカウントを作成していきます。
この様にする事で、OSのユーザーとメールのユーザーを切り離して管理する事が可能になります。
# /home/vpopmail/bin/vadddomain xxx.com
Please enter password for postmaster: パスワード追加
※最初のドメインを登録すると、次のワーニングが出ます。Please enter password for postmaster:
enter password again:
NOTICE: Out of order entries found in /var/qmail/control/rcpthosts
Sorting...
vadddomainコマンドにより、次のファイルに設定が追加されます。設定ファイルが存在しない場合は自動的に作成されます。
/var/qmail/control/locals
/var/qmail/control/rcpthosts
(rcphostsが50行以上の場合は/var/qmail/control/morercpthostsになる)
/var/qmail/control/virtualdomains
/var/qmail/users/assign
/var/qmail/users/cdb
以下のファイルやディレクトリは新規に作成されます。
~vpopmail/domains/xxx.com
~vpopmail/domains/xxx.com/postmaster/Maildir
~vpopmail/domains/xxx.com/vpasswd
~vpopmail/domains/xxx.com/vpasswd.cdb
/var/qmail/control下のファイルを修正したので、変更を有効にするために、qmail-sendプロセスを再起動します。
# ps aux | grep qmail-send
qmails プロセスID 0.0 0.1 1088 368 ? S Jan31 0:00 qmail-send
# kill -HUP プロセスID
最初のバーチャルユーザーとしてpostmasterが用意され、.qmail-defaultには、の1行が追加され、あて先不明メールは「Sorry, no mailbox here by that name. vpopmail」というメッセージとともに返信されます。
# cat .qmail-default
| /home/vpopmail/bin/vdelivermail '' bounce-no-mailbox
ユーザーを追加(ユーザー追加できませんでした)
# /home/vpopmail/bin/vadduser [email protected]
「@」以降のドメインが登録されたものでない場合はエラーになります。ここで設定したパスワードを変更する場合は、vpasswdコマンドを使用します。
バーチャルユーザーを削除する場合は、vdeluserコマンドを使用します。
# cd ~vpopmail/bin
# ./vdeluser [email protected]
バーチャルドメインを削除する場合は、vdeldomainコマンドを使用します。
# cd ~vpopmail/bin
# ./vdeldomain xxx.com
※一般的には「@」以前がユーザー名になりますが、vpopmailを使用した場合は「メールアドレスそのものがユーザー名」になります。
//////////////////// 以下は未検証です、作業中
vpopmailのユーザーでログイン # su – vpopmail
postmasterの設定
$ cd /home/vpopmail/domains/example.com/postmaster/
$ echo -n ‘[email protected]’ > .qmail
パーミッションは vpopmail vchkpw になっているか確認し、なっていなければ
chown -R vpopmail:vchkpw .qmail
chmod -R 600 .qmail
もしこの設定がない場合は、/home/vpopmail/domains/example.com/postmaster/Maildir/ へのローカル配送される
rootアカウントのメールの設定
$ cd /home/vpopmail/domains/example.com/
$ echo -n ‘[email protected]’ > .qmail-root
パーミッションは vpopmail vchkpw になっているか確認し、なっていなければ
chown -R vpopmail:vchkpw .qmail-root
chmod -R 600 .qmail-root
///////////////////////////// <---- ここまで
dpkg -l | grep exim dpkg -l | grep postfix
もし存在すれば # apt-get remove --purge exim4
メール関連のコマンドをシンボリックリンクで設定
# ln -s /var/qmail/bin/qmail-qstat /usr/bin/mailq
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
内部メール送信のテスト
暫定的qmailを起動: # sh /var/qmail/rc & 停止 psコマンドでプロセス確認、kill コマンドで停止
テスト、ローカルのメール配信で内部の配信が動いてるか確認します。
echo to: [email protected] | /var/qmail/bin/qmail-inject
echo "Hallo" | /var/qmail/bin/sendmail -v [email protected]
展開したディレクトリが実行ファイルの環境になり、/command/からシンボリックリンクとなるため、ダウンロードは/usr/local/にする。
cd /usr/local
ダウンロード # wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
/usr/local/admin/daemontools-0.76/src/error.h を編集 extern int errno; を #include <errno.h> に変更
cd /usr/local/admin/daemontools-0.76
daemontools-0.76.tar.gz の場合は、コンパイル(Make)は必要ないようです。 package/install の実行
以上の作業で、以下のディレクトリとファイルが作成されます。
新たに作成されるディレクトリ
/service
/command
作成されるファイルおよびそのシンボリックリンク
/usr/local/admin/daemontools/下に実行ファイル
/command/下にそのシンボリックリンク
/usr/local/bin/下にさらにシンボリックリンク
/etc/systemd/system/daemontools.service 以下の内容でファイルdaemontools.serviceを新規作成
[Unit]
Description=daemontools Start supervise
After=getty.target
[Service]
Type=simple
User=root
Group=root
Restart=always
ExecStart=/command/svscanboot /dev/ttyS0
TimeoutSec=0
[Install]
WantedBy=multi-user.target
サービスとして登録と起動
# systemctl enable daemontools
# systemctl start daemontools
Daemontoolsで smtp:qmail/pop3:vpoopmail の待ち受けのtcpserverを設定します。
/var/superviseに以下のディレクトリを作成します。
# mkdir -p /var/supervise/qmail
# mkdir -p /var/supervise/smtpd
# mkdir -p /var/supervise/pop3
/var/supervise/qmail/run runファイルを作成し、以下の内容を追加します。
#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start ./Maildir/ splogger qmail
/var/supervise/smtpd/run runファイルを作成し、以下の内容を追加します。
変更するところは、hostname、id -u vpopmail、id -g vpopmail です。hostnameは [サーバのFQDN]、vpopmailのユーザーIDとグループIDは、/etc/passwd で確認します。-u xxxx -g xxxx と明記します。
#!/bin/sh
/usr/local/bin/tcprules /home/vpopmail/etc/tcp.smtp.cdb \
/home/vpopmail/etc/tcp.smtp.tmp \
< /home/vpopmail/etc/tcp.smtp
exec env - PATH="/var/qmail/bin:$PATH" \
/usr/local/bin/tcpserver -HRl `hostname` -v -x /home/vpopmail/etc/tcp.smtp.cdb -u `id -u vpopmail` -g `id -g vpopmail` 0 smtp \
qmail-smtpd 2>&1 | splogger smtp 3
/var/supervise/pop3/run runファイルを作成し、以下の内容を追加します。 hostnameは [サーバのFQDN]
#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" \
/usr/local/bin/tcpserver -HRl `hostname` -v 0 pop3 qmail-popup `hostname` /home/
vpopmail/bin/vchkpw \
qmail-pop3d Maildir 2>&1 | splogger pop3 3
実行権のパーミッションを設定します。
# chmod 0755 /var/supervise/qmail/run
# chmod 0755 /var/supervise/smtpd/run
# chmod 0755 /var/supervise/pop3/run
/serviceにリンボリックリンクを設定します。
# cd /service
# ln -s /var/supervise/qmail .
# ln -s /var/supervise/smtpd .
# ln -s /var/supervise/pop3 .
サービスで起動されているか確認するには
# svstat /service/*
/service/pop3: up (pid 359) 3944 seconds
/service/qmail: up (pid 361) 3944 seconds
/service/smtpd: up (pid 360) 3944 seconds
念のために、システム再起動して、動作確認します。
以上のメールは受信できましたが、POP、SMTPは検証中です。まだ未完成
notqmaiのインストールは、事前にSSL証明書(インストールしたサーバー独自の)をインストールした環境で行います。
例えば、OpenSSLを使って、秘密鍵、サーバー証明書、公開鍵など。
qmailadminをインストールするために、Webサーバー(Apache)とSSL証明書を設定します。サーバーのIPアドレスでSSL証明書を使う場合はサーバー自身の証明書を使い、もし、ドメイン名でSSL証明書を使う場合は、Let’s Encryptの https://certbot.eff.org/ を設定してからインストールします。 今回はサーバーのIPアドレスを使う方法でインストールします。
参考にしたサイト:
自ホストを host.example.jp、自ドメインをexample.jp としています。メールサーバを運用する場合、DNSの設定が必須です。DNSに下記のようにドメインに対するMXを設定してください。
IN MX 10 host.example.jp.
とりあえず動かすだけならMXは必須ではありませんが、その場合[email protected]ではサーバへの配送は行われません。[email protected]のようなFQDN(Fully Qualified Domain Name:完全修飾ドメイン名)を用いてテストしてください。また、その場合、host.example.jp自体はDNSに登録されている必要があります。
念のために、サーバーのホスト名 host.example.jp を /etc/hosts に設定します。
Debian11のバイナリーパッケージは notqmail_1.08-1.1+10.5_amd64.deb aptインストール設定は https://software.opensuse.org//download.html?project=home%3Anotqmail&pac...
インストール作業はrootアカウントです。OSはDebian 11です。
Debian11のnotqmailをインストールでは、インストール先のディレクトリ作成(/var/qmail)とqmailを稼働させるのに必要なユーザーとグループの登録を自動で設定します。
# groupadd nofiles # useradd -g nofiles -d /var/qmail/alias -s /bin/false alias # useradd -g nofiles -d /var/qmail -s /bin/false qmaild # useradd -g nofiles -d /var/qmail -s /bin/false qmaill # useradd -g nofiles -d /var/qmail -s /bin/false qmailp # groupadd qmail # useradd -g qmail -d /var/qmail -s /bin/false qmailq # useradd -g qmail -d /var/qmail -s /bin/false qmailr # useradd -g qmail -d /var/qmail -s /bin/false qmails
バイナリーパッケージのインストール後のディレクトリ構成
$ ls -la /var/qmail
total 36
drwxr-xr-x 9 root qmail 4096 Jul 25 19:20 .
drwxr-xr-x 14 root root 4096 Jul 25 21:18 ..
drwxr-sr-x 3 alias qmail 4096 Jul 26 13:42 alias
drwxr-xr-x 2 root qmail 4096 Jul 25 19:20 bin
drwxr-xr-x 2 root qmail 4096 Jul 25 20:59 boot
drwxr-xr-x 2 root qmail 4096 Jul 26 13:40 control
lrwxrwxrwx 1 root root 23 Jul 10 13:24 doc -> /usr/share/doc/notqmail
drwxr-xr-x 10 root qmail 4096 Jul 25 19:20 man
drwxr-x--- 11 qmailq qmail 4096 Jul 25 19:20 queue
drwxr-xr-x 2 root qmail 4096 Jul 10 13:24 users
$ ls -la /var/qmail/alias/
total 24
drwxr-sr-x 3 alias qmail 4096 Jul 26 13:42 .
drwxr-xr-x 9 root qmail 4096 Jul 25 19:20 ..
-rw-r--r-- 1 root qmail 26 Jul 25 19:20 .qmail-mailer-daemon
-rw-r--r-- 1 root qmail 26 Jul 25 19:20 .qmail-postmaster
-rw-r--r-- 1 root qmail 26 Jul 25 19:20 .qmail-root
drwxr-sr-x 5 alias qmail 4096 Jul 25 19:20 Maildir
$ ls -la /var/qmail/bin
total 1072
drwxr-xr-x 2 root qmail 4096 Jul 25 19:20 .
drwxr-xr-x 9 root qmail 4096 Jul 25 19:20 ..
-rwxr-xr-x 1 root qmail 14584 Jul 10 13:24 bouncesaying
-rwxr-xr-x 1 root qmail 22936 Jul 10 13:24 condredirect
-rwxr-xr-x 1 root qmail 126 Jul 10 13:24 datemail
-rwxr-xr-x 1 root qmail 229 Jul 10 13:24 elq
-rwxr-xr-x 1 root qmail 14584 Jul 10 13:24 except
-rwxr-xr-x 1 root qmail 22936 Jul 10 13:24 forward
-rwxr-xr-x 1 root root 31048 Jul 10 13:24 instchown
-rwxr-xr-x 1 root qmail 27032 Jul 10 13:24 maildir2mbox
-rwxr-xr-x 1 root qmail 14568 Jul 10 13:24 maildirmake
-rwxr-xr-x 1 root qmail 27096 Jul 10 13:24 maildirwatch
-rwxr-xr-x 1 root qmail 179 Jul 10 13:24 mailsubj
-rwxr-xr-x 1 root qmail 230 Jul 10 13:24 pinq
-rwxr-xr-x 1 root qmail 23064 Jul 10 13:24 predate
-rwxr-xr-x 1 root qmail 22920 Jul 10 13:24 preline
-rwxr-xr-x 1 root qmail 230 Jul 10 13:24 qail
-rwxr-xr-x 1 root qmail 18872 Jul 10 13:24 qbiff
-rwx--x--x 1 root qmail 18848 Jul 10 13:24 qmail-clean
-rwx--x--x 1 root qmail 14576 Jul 10 13:24 qmail-getpw
-rwxr-xr-x 1 root qmail 51848 Jul 10 13:24 qmail-inject
-rwx--x--x 1 root qmail 47752 Jul 10 13:24 qmail-local
-rwx------ 1 root qmail 27112 Jul 10 13:24 qmail-lspawn
-rwx------ 1 root qmail 22840 Jul 10 13:24 qmail-newmrh
-rwx------ 1 root qmail 18744 Jul 10 13:24 qmail-newu
-rwxr-xr-x 1 root qmail 27376 Jul 10 13:24 qmail-pop3d
-rwx--x--x 1 root qmail 23056 Jul 10 13:24 qmail-popup
-rwx--x--x 1 root qmail 27072 Jul 10 13:24 qmail-pw2u
-rwxr-xr-x 1 root qmail 27032 Jul 10 13:24 qmail-qmqpc
-rwxr-xr-x 1 root qmail 22976 Jul 10 13:24 qmail-qmqpd
-rwxr-xr-x 1 root qmail 31208 Jul 10 13:24 qmail-qmtpd
-rwxr-xr-x 1 root qmail 27016 Jul 10 13:24 qmail-qread
-rwxr-xr-x 1 root qmail 371 Jul 10 13:24 qmail-qstat
-rws--x--x 1 qmailq qmail 23064 Jul 10 13:24 qmail-queue
-rwx--x--x 1 root qmail 39448 Jul 10 13:24 qmail-remote
-rwx--x--x 1 root qmail 22960 Jul 10 13:24 qmail-rspawn
-rwx--x--x 1 root qmail 55952 Jul 10 13:24 qmail-send
-rwxr-xr-x 1 root qmail 27112 Jul 10 13:24 qmail-showctl
-rwxr-xr-x 1 root qmail 39688 Jul 10 13:24 qmail-smtpd
-rwx------ 1 root qmail 14792 Jul 10 13:24 qmail-start
-rwxr-xr-x 1 root qmail 14584 Jul 10 13:24 qmail-tcpok
-rwxr-xr-x 1 root qmail 18712 Jul 10 13:24 qmail-tcpto
-rwxr-xr-x 1 root qmail 35400 Jul 10 13:24 qreceipt
-rwxr-xr-x 1 root qmail 18760 Jul 10 13:24 qsmhook
-rwxr-xr-x 1 root qmail 18776 Jul 10 13:24 sendmail
-rwx--x--x 1 root qmail 14664 Jul 10 13:24 splogger
-rwxr-xr-x 1 root qmail 31048 Jul 10 13:24 tcp-env
$ ls -la /var/qmail/boot/
total 48
drwxr-xr-x 2 root qmail 4096 Jul 25 20:59 .
drwxr-xr-x 9 root qmail 4096 Jul 25 19:20 ..
-rwxr-xr-x 1 root qmail 347 Jul 10 13:24 binm1
-rwxr-xr-x 1 root qmail 431 Jul 10 13:24 binm1+df
-rwxr-xr-x 1 root qmail 316 Jul 10 13:24 binm2
-rwxr-xr-x 1 root qmail 400 Jul 10 13:24 binm2+df
-rwxr-xr-x 1 root qmail 314 Jul 10 13:24 binm3
-rwxr-xr-x 1 root qmail 398 Jul 10 13:24 binm3+df
-rwxr-xr-x 1 root qmail 204 Jul 10 13:24 home
-rwxr-xr-x 1 root qmail 292 Jul 10 13:24 home+df
-rwxr-xr-x 1 root qmail 223 Jul 10 13:24 proc
-rwxr-xr-x 1 root qmail 309 Jul 10 13:24 proc+df
$ ls -la /var/qmail/control/
total 32
drwxr-xr-x 2 root qmail 4096 Jul 26 13:40 .
drwxr-xr-x 9 root qmail 4096 Jul 25 19:20 ..
-rw-r--r-- 1 root root 5 Jul 25 19:20 me
$ sudo ls -la /var/qmail/queue/
[sudo] password for gennai:
total 44
drwxr-x--- 11 qmailq qmail 4096 Jul 25 19:20 .
drwxr-xr-x 9 root qmail 4096 Jul 25 19:20 ..
drwx------ 2 qmails qmail 4096 Jul 10 13:24 bounce
drwx------ 25 qmails qmail 4096 Jul 25 19:20 info
drwx------ 2 qmailq qmail 4096 Jul 10 13:24 intd
drwx------ 25 qmails qmail 4096 Jul 25 19:20 local
drwxr-x--- 2 qmailq qmail 4096 Jul 25 19:20 lock
drwxr-x--- 25 qmailq qmail 4096 Jul 25 19:20 mess
drwx------ 2 qmailq qmail 4096 Jul 10 13:24 pid
drwx------ 25 qmails qmail 4096 Jul 25 19:20 remote
drwxr-x--- 2 qmailq qmail 4096 Jul 10 13:24 todo
$ ls -la /var/qmail/users/
total 8
drwxr-xr-x 2 root qmail 4096 Jul 10 13:24 .
drwxr-xr-x 9 root qmail 4096 Jul 25 19:20 ..
ユーザーごとにmboxかMaildirかを選択するよりは、Maildirをデフォルトで対応するように設定します。
rcファイルのコピー
# cp ./home /var/qmail/rc
# chmod 0755 /var/qmail/rc
コピーしたrcファイル /var/qmail/rc を書き替えます。
qmail-start ./Mailbox ---> ./Maildir/
mboxでは各ユーザーのホームディレクトリにMailboxファイルが作成されますが、各自のMaildirディレクトリは各自が手動で生成する必要があります。例えば、以下の手順で
# /var/qmail/bin/maildirmake ~alias/Maildir
# chown -R alias /var/qmail/alias/Maildir
# ls -la
total 24
drwxr-sr-x 3 alias qmail 4096 Aug 8 19:03 .
drwxr-xr-x 10 root qmail 4096 Aug 8 12:40 ..
-rw-r--r-- 1 root qmail 21 Aug 8 13:06 .qmail-mailer-daemon
-rw-r--r-- 1 root qmail 21 Aug 8 13:06 .qmail-postmaster
-rw-r--r-- 1 root qmail 21 Aug 8 13:06 .qmail-root
drwx--S--- 5 alias qmail 4096 Aug 8 19:03 Maildir
# ls -la Maildir/
total 20
drwx--S--- 5 alias qmail 4096 Aug 8 19:03 .
drwxr-sr-x 3 alias qmail 4096 Aug 8 19:03 ..
drwx--S--- 2 alias qmail 4096 Aug 8 19:03 cur
drwx--S--- 2 alias qmail 4096 Aug 8 19:03 new
drwx--S--- 2 alias qmail 4096 Aug 8 19:03 tmp
ただし、各自のMaildirディレクトリは各自が手動で生成する必要があります。各ユーザーのアカウントで、例えば、以下の手順
$ /var/qmail/bin/maildirmake ~/Maildir
各自でMaildirが出来ているか確認
$ cd
$ ls -la
total 40
drwxr-xr-x 6 hodota hodota 4096 Aug 8 19:06 .
drwxr-xr-x 3 root root 4096 Aug 6 16:09 ..
-rw------- 1 hodota hodota 176 Aug 8 13:52 .bash_history
-rw-r--r-- 1 hodota hodota 220 Aug 6 16:09 .bash_logout
-rw-r--r-- 1 hodota hodota 3526 Aug 6 16:09 .bashrc
drwx------ 3 hodota hodota 4096 Aug 7 15:39 .gnupg
-rw-r--r-- 1 hodota hodota 807 Aug 6 16:09 .profile
drwx------ 5 hodota hodota 4096 Aug 8 19:06 Maildir
drwxr-xr-x 3 hodota hodota 4096 Aug 6 17:12 snap
drwxr-xr-x 3 hodota hodota 4096 Aug 7 15:42 work
$ ls -la ./Maildir/
total 20
drwx------ 5 hodota hodota 4096 Aug 8 19:06 .
drwxr-xr-x 6 hodota hodota 4096 Aug 8 19:06 ..
drwx------ 2 hodota hodota 4096 Aug 8 19:06 cur
drwx------ 2 hodota hodota 4096 Aug 8 19:06 new
drwx------ 2 hodota hodota 4096 Aug 8 19:06 tmp
もし、root権限で実行した場合は、chownでMaildirディレクトリのオーナーが各ユーザーにに変更します。
また、新規のユーザーについては、/etc/skelディレクトリにMaildirのひな型を設定し、adduserコマンドなどでユーザーを作成した際に自動でMaildirディレクトリが生成するようにします。
# /var/qmail/bin/maildirmake /etc/skel/Maildir
# ls -la /etc/skel total 24 drwxr-xr-x 3 root root 4096 Aug 8 19:29 . drwxr-xr-x 77 root root 4096 Aug 7 16:16 .. -rw-r--r-- 1 root root 220 Apr 18 2019 .bash_logout -rw-r--r-- 1 root root 3526 Apr 18 2019 .bashrc -rw-r--r-- 1 root root 807 Apr 18 2019 .profile drwx------ 5 root root 4096 Aug 8 19:29 Maildir
/var/qmail/control にはqmailの動作で必要な設定として、以下のように記載します。
example.jp
to ヘッダなどにドメイン名が省略された場合に保管されるドメイン名
localhost
localhost.example.jp
host.example.jp
example.jp
受信するホスト名・ドメイン名の設定 qmail-send が使用します。
localhost
example.jp
.example.jp
受信するホスト名・ドメイン名の設定 qmail-smtpd が使用します。
host.example.jp
インストールしたサーバーのFQDN
example.jp
ドメイン名が+で終わっている場合に付加されるドメイン名。例えば、「user@host+」なら「[email protected]」と置換。 qmail-inject が使用します。
上記の設定で、不正中継対策も含んだ最小限の動作環境になります。
登録したドメイン名を確認できます。
追加機能で必要な設定もこのコントロールファイルで設定します。
example.com:example.com
1
必要ないかも ここから ー->
初期の管理アカウント設定
# cd ~alias
# touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
# chmod 644 .qmail*
postmaster、MAILER-DAEMON、rootあてのメールは/var/qmail/aliasに保存ではなく、別のメールアドレスへ送信する設定にします。各ファイルにメールアドレスを設定します。echoで代入すると文字のごみができることがあるので、ファイルをエディタで編集するほうが安全のようです。
# echo -n ‘[email protected]’ > .qmail-root
# echo -n ‘[email protected]’ > .qmail-postmaster
# echo -n ‘[email protected]’ > .qmail-mailer-daemon
<--- ここまで
暫定的に動作確認するために、qmailサーバーを起動(pop3やsmtpは起動しない)します。実際は、 tcpserverを使って起動します。
仮のqmailの起動とメール配信の確認
# sh /var/qmail/rc &
動作確認
# ps -aef | grep qmail
qmails 1304 1098 0 12:50 pts/0 00:00:00 qmail-send
qmaill 1305 1304 0 12:50 pts/0 00:00:00 splogger qmail
root 1306 1304 0 12:50 pts/0 00:00:00 qmail-lspawn ./Maildir/
qmailr 1307 1304 0 12:50 pts/0 00:00:00 qmail-rspawn
qmailq 1308 1304 0 12:50 pts/0 00:00:00 qmail-clean
メールの送信
# echo to: [email protected] | /var/qmail/bin/qmail-inject
tcpserverは、qmailを起動するサービスプロセスとして、ucspi-tcpパッケージの一部として提供されています。ユーザー名・IPアドレス・ドメイン名を基に接続制限がかけられる、特定のIPアドレスでのみサービス受付できる、ハッシュを用いた独自データベースファイル(cdb)なので高速処理可能、設定編変更でもサービス再起動が必要ない、などのメリットがあります。
新規にディレクトリを作成してダウンロード: wget https://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
vi error.h で extern int errno; を #include <errno.h>に変更します。
make してインストールします。 # make setup check
インストール後に、/usr/local/bin/にtcpserver関連が設置されます。
# ls -la /usr/local/bin/tcpserver
-rwxr-xr-x 1 root root 55912 Aug 9 12:54 /usr/local/bin/tcpserver
ユーザー qmaild のユーザーID(UID) と グループ nofiles グループID(GID)を調べます。UIDとGIDはインストール環境により異なります。
# id -u qmaild
109
# id -g qmaild
115
/etc/tcp.smtp というファイルを作成し、設定します。
# vim /etc/tcp.smtp
Sever IP address:allow,RELAYCLIENT=""
127.0.0.1:allow,RELAYCLIENT=""
1行目の設定は「IPアドレスからの接続は環境変数RELAYCLIENTに設定し、接続を許可する」となります。Server IP address にサーバーのIPアドレスを記入。
次に、cdbファイルを作成します。
# /usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
# ls -la /etc/tcp.*
-rw-r--r-- 1 root root 65 Aug 9 13:02 /etc/tcp.smtp
-rw-r--r-- 1 root root 2144 Aug 9 16:10 /etc/tcp.smtp.cdb
qmailを暫定的に起動させます # sh /var/qmail/rc &
tcpserver経由でqmailを起動します。-u1002 はqmaildのユーザーID(UID)、-g1001はnofilesのユーザーID(GID)です。-x /etc/tcp.smtp.cdbはIPアドレス制御cdbファイルを使う場合です。
# tcpserver -v -u1002 -g1001 -x /etc/tcp.smtp.cdb 0 smtp /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 &
# tcpserver -v -u1002 -g1001 0 smtp /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 &
tcpserver から qmail-smtpd を起動する場合
# tcpserver -u 1002 -g 1001 -x /etc/tcp.smtp.cdb 0 smtp /var/qmail/bin/qmail-smtpd &
tcpserverの代表的なオプション
vpopmailは、バーチャルドメインやバーチャルユーザーを実現し、APOP認証やPOP Before SMTPにも対応しています。
まず、vpopmailのアカウントを作成します。
# groupadd vchkpw
# useradd -g vchkpw -s /bin/false -M vpopmail
# mkdir /home/vpopmail
# chown vpopmail:vchkpw /home/vpopmail
# mkdir /home/vpopmail/etc
# chown vpopmail:vchkpw /home/vpopmail/etc
新規にディレクトリを作成してダウンロード: wget http://jaist.dl.sourceforge.net/project/vpopmail/vpopmail-stable/5.4.33/...
解凍後、解凍したディレクトリに移動し、インストールします。POP Before SMTPに対応させるには、configure --enable-roaming-users=y の設定になります。 --enable-relay-clear-minutes=指定分数 は、POP Before SMTPで、最後のPOP接続からSMTPのRelayを許可する制限時間より短くする場合となります。
# cd vpopmail-5.4.33
# ./configure -enable-roaming-users=y -enable-relay-clear-minutes=10
# make
# make install-strip
参考メモ
vpopmail の ./configure 実行後に現在の設定が表示されました。
config.status: executing depfiles commands
vpopmail 5.4.33
Current settings
---------------------------------------
vpopmail directory = /home/vpopmail
domains directory = /home/vpopmail/domains
uid = 1001
gid = 1001
roaming users = ON --enable-roaming-users
tcpserver file = /etc/tcp.smtp
open_smtp file = /home/vpopmail/etc/open-smtp
rebuild tcpserver file = ON --enable-rebuild-tcpserver-file (default)
password learning = OFF --disable-learn-passwords (default)
md5 passwords = ON --enable-md5-passwords (default)
file locking = ON --enable-file-locking (default)
vdelivermail fsync = OFF --disable-file-sync (default)
make seekable = ON --enable-make-seekable (default)
clear passwd = ON --enable-clear-passwd (default)
user dir hashing = ON --enable-users-big-dir (default)
address extensions = OFF --disable-qmail-ext (default)
ip alias = OFF --disable-ip-alias-domains (default)
onchange script = OFF --disable-onchange-script (default)
domain quotas = OFF --disable-domainquotas (default)
auth module = cdb --enable-auth-module=cdb (default)
auth inc = -Icdb
auth lib =
system passwords = OFF --disable-passwd (default)
pop syslog = show only failed attempts --enable-logging=e (default)
auth logging = ON --enable-auth-logging (default)
spamassassin = OFF --disable-spamassassin (default)
maildrop = OFF --disable-maildrop (default)
/etc/tcp.smtpや/etc/tcp.smtp.cdbファイルは、tcpserverのデフォルト位置のものではなく、vpopmailが用の/home/vpopmail/etc/tcp.smtpを追加作成し、/home/vpopmail/etc/tcp.smtp.cdbを作成し使用します。
# cat tcp.smtp
127.0.0.1:allow,RELAYCLIENT=""
もしくは、tcpserverのtcp.smtpの設定と同じにします。どちらが良いのかわかりませんが。
Sever IP address:allow,RELAYCLIENT=""
127.0.0.1:allow,RELAYCLIENT=""
cabファイルの作成
# /usr/local/bin/tcprules /home/vpopmail/etc/tcp.smtp.cdb /home/vpopmail/etc/tcp.smtp.tmp < /home/vpopmail/etc/tcp.smtp
# ls -la /home/vpopmail/etc/tcp.*
-rw-r--r-- 1 root root 70 Jul 26 17:30 /home/vpopmail/etc/tcp.smtp
-rw-r--r-- 1 root root 2148 Jul 26 17:37 /home/vpopmail/etc/tcp.smtp.cdb
POP Before SMTPの仕組みがrelay-ctrlと同じように、POP接続してきた端末IPアドレスの記録も同じように行われ、それを定期的に消す作業も同じく必要です。vpopmailでも、cronデーモンを利用し、crontabでpop before smtpのデータを10分ごとにリフレッシュします。
crontab -e で以下の行を追加します。毎時10分にIPアドレスを整理して、接続から3時間以上経過したものを除外します。configure時に「--enable-relay-clear-minutes」を付加した場合は、そこで指定された分数になります。
# crontab -e
10 * * * * /home/vpopmail/bin/clearopensmtp > /dev/null 2>&1
vpopmailにドメインを(xxx.com)追加します。仮想ドメイン(xxx.com)を作成します。
ここでは、正規ドメイン(xxx.com)を仮想ドメインとして作成しています。
そして、その仮想ドメイン内に、必要なメールアカウントを作成していきます。
この様にする事で、OSのユーザーとメールのユーザーを切り離して管理する事が可能になります。
# /home/vpopmail/bin/vadddomain xxx.com
Please enter password for postmaster: パスワード追加
※最初のドメインを登録すると、次のワーニングが出ます。Please enter password for postmaster:
enter password again:
NOTICE: Out of order entries found in /var/qmail/control/rcpthosts
Sorting...
vadddomainコマンドにより、次のファイルに設定が追加されます。設定ファイルが存在しない場合は自動的に作成されます。
/var/qmail/control/locals
/var/qmail/control/rcpthosts
(rcphostsが50行以上の場合は/var/qmail/control/morercpthostsになる)
/var/qmail/control/virtualdomains
/var/qmail/users/assign
/var/qmail/users/cdb
~vpopmail/domains以下のファイルやディレクトリは新規に作成されます。
drwx------ 3 vpopmail vchkpw 4096 Jul 26 17:45 .
drwx------ 3 vpopmail vchkpw 4096 Jul 26 17:45 ..
-rw------- 1 vpopmail vchkpw 34 Jul 26 17:45 .dir-control
-rw------- 1 vpopmail vchkpw 55 Jul 26 17:45 .qmail-default
-rw------- 1 vpopmail vchkpw 0 Jul 26 17:45 .vpasswd.lock
drwx------ 3 vpopmail vchkpw 4096 Jul 26 17:45 postmaster
-rw------- 1 vpopmail vchkpw 126 Jul 26 17:45 vpasswd
-rw------- 1 vpopmail vchkpw 2196 Jul 26 17:45 vpasswd.cdb
# ls -la ドメイン名/postmaster/
total 16
drwx------ 3 vpopmail vchkpw 4096 Jul 26 17:45 .
drwx------ 3 vpopmail vchkpw 4096 Jul 26 17:45 ..
drwx------ 5 vpopmail vchkpw 4096 Jul 26 17:45 Maildir
-rw------- 1 vpopmail vchkpw 7 Jul 26 17:45 lastauth
/var/qmail/control下のファイルを修正したので、変更を有効にするために、qmail-sendプロセスを再起動します。
# ps aux | grep qmail-send
qmails プロセスID 0.0 0.1 1088 368 ? S Jan31 0:00 qmail-send
# kill -HUP プロセスID
最初のバーチャルユーザーとしてpostmasterが用意され、.qmail-defaultには、の1行が追加され、あて先不明メールは「Sorry, no mailbox here by that name. vpopmail」というメッセージとともに返信されます。
# cat .qmail-default
| /home/vpopmail/bin/vdelivermail '' bounce-no-mailbox
ユーザーを追加(ユーザー追加できませんでした)
# /home/vpopmail/bin/vadduser [email protected]
「@」以降のドメインが登録されたものでない場合はエラーになります。ここで設定したパスワードを変更する場合は、vpasswdコマンドを使用します。
バーチャルユーザーを削除する場合は、vdeluserコマンドを使用します。
# cd ~vpopmail/bin
# ./vdeluser [email protected]
バーチャルドメインを削除する場合は、vdeldomainコマンドを使用します。
# cd ~vpopmail/bin
# ./vdeldomain xxx.com
※一般的には「@」以前がユーザー名になりますが、vpopmailを使用した場合は「メールアドレスそのものがユーザー名」になります。
//////////////////// 以下は未検証です、作業中
vpopmailのユーザーでログイン # su – vpopmail
postmasterの設定
$ cd /home/vpopmail/domains/example.com/postmaster/
$ echo -n ‘[email protected]’ > .qmail
パーミッションは vpopmail vchkpw になっているか確認し、なっていなければ
chown -R vpopmail:vchkpw .qmail
chmod -R 600 .qmail
もしこの設定がない場合は、/home/vpopmail/domains/example.com/postmaster/Maildir/ へのローカル配送される
rootアカウントのメールの設定
$ cd /home/vpopmail/domains/example.com/
$ echo -n ‘[email protected]’ > .qmail-root
パーミッションは vpopmail vchkpw になっているか確認し、なっていなければ
chown -R vpopmail:vchkpw .qmail-root
chmod -R 600 .qmail-root
///////////////////////////// <---- ここまで
dpkg -l | grep exim dpkg -l | grep postfix
もし存在すれば # apt-get remove --purge exim4
メール関連のコマンドをシンボリックリンクで設定
# ln -s /var/qmail/bin/qmail-qstat /usr/bin/mailq
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
内部メール送信のテスト
暫定的qmailを起動: # sh /var/qmail/rc & 停止 psコマンドでプロセス確認、kill コマンドで停止
テスト、ローカルのメール配信で内部の配信が動いてるか確認します。
echo to: [email protected] | /var/qmail/bin/qmail-inject
echo "Hallo" | /var/qmail/bin/sendmail -v [email protected]
展開したディレクトリが実行ファイルの環境になり、/command/からシンボリックリンクとなるため、ダウンロードは/usr/local/にする。
cd /usr/local
ダウンロード # wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
/usr/local/admin/daemontools-0.76/src/error.h を編集 extern int errno; を #include <errno.h> に変更
cd /usr/local/admin/daemontools-0.76
daemontools-0.76.tar.gz の場合は、コンパイル(Make)は必要ないようです。 package/install の実行
以上の作業で、以下のディレクトリとファイルが作成されます。
新たに作成されるディレクトリ
/service
/command
作成されるファイルおよびそのシンボリックリンク
/usr/local/admin/daemontools/下に実行ファイル
/command/下にそのシンボリックリンク
/usr/local/bin/下にさらにシンボリックリンク
/etc/systemd/system/daemontools.service 以下の内容でファイルdaemontools.serviceを新規作成
[Unit]
Description=daemontools Start supervise
After=getty.target
[Service]
Type=simple
User=root
Group=root
Restart=always
ExecStart=/command/svscanboot /dev/ttyS0
TimeoutSec=0
[Install]
WantedBy=multi-user.target
サービスとして登録と起動
# systemctl enable daemontools
# systemctl start daemontools
Daemontoolsで smtp:qmail/pop3:vpoopmail の待ち受けのtcpserverを設定します。
/var/superviseに以下のディレクトリを作成します。
# mkdir -p /var/supervise/qmail
# mkdir -p /var/supervise/smtpd
# mkdir -p /var/supervise/pop3
/var/supervise/qmail/run runファイルを作成し、以下の内容を追加します。
#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start ./Maildir/ splogger qmail
/var/supervise/smtpd/run runファイルを作成し、以下の内容を追加します。
変更するところは、hostname、id -u vpopmail、id -g vpopmail です。hostnameは [サーバのFQDN]、vpopmailのユーザーIDとグループIDは、/etc/passwd で確認します。-u xxxx -g xxxx と明記します。
#!/bin/sh
/usr/local/bin/tcprules /home/vpopmail/etc/tcp.smtp.cdb \
/home/vpopmail/etc/tcp.smtp.tmp \
< /home/vpopmail/etc/tcp.smtp
exec env - PATH="/var/qmail/bin:$PATH" \
/usr/local/bin/tcpserver -HRl `hostname` -v -x /home/vpopmail/etc/tcp.smtp.cdb -u `id -u vpopmail` -g `id -g vpopmail` 0 smtp \
qmail-smtpd 2>&1 | splogger smtp 3
/var/supervise/pop3/run runファイルを作成し、以下の内容を追加します。 hostnameは [サーバのFQDN]
#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" \
/usr/local/bin/tcpserver -HRl `hostname` -v 0 pop3 qmail-popup `hostname` /home/
vpopmail/bin/vchkpw \
qmail-pop3d Maildir 2>&1 | splogger pop3 3
実行権のパーミッションを設定します。
# chmod 0755 /var/supervise/qmail/run
# chmod 0755 /var/supervise/smtpd/run
# chmod 0755 /var/supervise/pop3/run
/serviceにリンボリックリンクを設定します。
# cd /service
# ln -s /var/supervise/qmail .
# ln -s /var/supervise/smtpd .
# ln -s /var/supervise/pop3 .
サービスで起動されているか確認するには
# svstat /service/*
/service/pop3: up (pid 359) 3944 seconds
/service/qmail: up (pid 361) 3944 seconds
/service/smtpd: up (pid 360) 3944 seconds
念のために、システム再起動して、動作確認します。
以上のメールは受信できましたが、POP、SMTPは検証中です。まだ未完成
受け取ったメールをキューに保存し、qmail-sendに配送を依頼する
クラッシュした時のキュー内の残っているごみファイルを削除します。
現在キューにたまっているメールの数を表示
キューにたまっているメールの情報を表示
参考にしたURL: https://japanrock-pg.hatenablog.com/entry/20090414/1239695108
ホームディレクトリに .qmail というファイルを 作成・編集することで、配送されてきたメールに対してさまざまなことができます。
./Maildir/
を.qmailファイルに記述することで、Maildir形式をるようできるようになります。パーミッション権限も調整が必要です。
注意事項: .qmail の処理は行単位で実行されてますが, たとえ文字が書かれてなくても その行をみて処理しようとして失敗します. また改行したところから行頭とみ なして正しい処理を行なってくれません. さらに, 行の処理は上から順々に行な われるので行の順序にも気をつけましょう.
詳細は http://www.ep.sci.hokudai.ac.jp/~epnetfan/tebiki/server-mail/usage/dot-q...
qmailのインストールなどに関するFAQ
参考にしたURL: https://www.atmarkit.co.jp/ait/articles/0109/04/news002_2.html
グループとユーザーの設定(インストール先が/var/qmailの場合)
# mkdir /var/qmail
# groupadd nofiles
# useradd -g nofiles -d /var/qmail/alias -s /bin/false alias
# useradd -g nofiles -d /var/qmail -s /bin/false qmaild
# useradd -g nofiles -d /var/qmail -s /bin/false qmaill
# useradd -g nofiles -d /var/qmail -s /bin/false qmailp
# groupadd qmail
# useradd -g qmail -d /var/qmail -s /bin/false qmailq
# useradd -g qmail -d /var/qmail -s /bin/false qmailr
# useradd -g qmail -d /var/qmail -s /bin/false qmails
DNSサーバーにMXレコードが設定済みであること
IN MX 5 host.example.jp.
※テスト目的など、とりあえず動かしてみるだけならMXは必須ではありませんが、その場合[email protected]ではサーバへの配送は行われません。[email protected]のようなFQDN(Fully Qualified Domain Name:完全修飾ドメイン名)を用いてテストしてください。また、最低限host.example.jp自体はDNSに登録されている必要があります
# make setup
# make check
# ./config
コンパイルは必ずgccを使用します。最後の./configは自ホストがDNSに登録されていない場合は、以下のエラーになります。
Your hostname is host.example.jp.
hard error
Sorry, I couldn't find your host's canonical name in DNS.
つまり、./config の設定は以下のようにします。
# ./config-fast host.example.jp
これで、/var/qmailにqmailの動作に必要なファイルやディレクトリが作成されます。
/var/qmail/control の設定
defaultdomain
example.jp
※toヘッダなどにドメイン名が省略された場合、補完されるドメイン名
locals
localhost
localhost.example.jp
host.example.jp
example.jp
※受信するホスト名・ドメイン名:qmail-sendが利用
rcpthosts
localhost
example.jp
.example.jp
※受信するホスト名・ドメイン名:qmail-smtpdが利用
me
host.example.jp
※自サーバのFQDN
plusdomain
example.jp
※ドメイン部が+で終わっている場合に付加されるドメイン。「user@host+」なら「[email protected]」と置換される(qmal-injectが利用)
postmaster、MAILER-DAEMON、rootといった重要なアカウントに対する配信の設定です。
# cd /var/qmail/alias
# touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
# chmod 644 .qmail*
※postmaster、MAILER-DAEMON、rootあてのメールは/var/qmail/aliasに保存されます。
qmailサーバを起動してみましょう。ここで紹介する方法は、動作を確認するためのものです。実際の運用では、後半で紹介するtcpserverを使った起動方法を使ってください。
起動スクリプトを用意し、実行します。/var/qmail/boot/homeを/var/qmailにrcという名前でコピーします。
# cp /var/qmail/boot/home /var/qmail/rc
# /var/qmail/rc &
/etc/inetd.confファイルに次の行を追加してinetdデーモンを再起動
smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env tcp-env /var/qmail/bin/qmail-smtpd
※もしほかに「smtp」で始まる行があれば「#」を行頭に付けてコメントアウト
# /etc/rc.d/init.d/inet restart
動作確認
# ps -aef | grep qmail
qmails 14540 13180 0 00:54 pts/4 00:00:00 qmail-send
qmaill 14541 14540 0 00:54 pts/4 00:00:00 splogger qmail
root 14542 14540 0 00:54 pts/4 00:00:00 qmail-lspawn ./Mailbox
qmailr 14543 14540 0 00:54 pts/4 00:00:00 qmail-rspawn
qmailq 14544 14540 0 00:54 pts/4 00:00:00 qmail-clean
テストメールの送信
# echo to: [email protected] | /var/qmail/bin/qmail-inject
これで、空のメールが/var/qmail/alias/のMailboxファイルに届いているはずです。
/var/qmail/rcファイルの内容を下記のように編集します。
qmail-start ./Mailbox splogger qmail
↓
qmail-start ./Maildir/ splogger qmail
Mailboxでは各ユーザーのホームディレクトリにMailboxファイルが作成されますが、Maildirディレクトリは手動で生成します。
# /var/qmail/bin/maildirmake ~alias/Maildir
# chown -R alias /var/qmail/alias/Maildir
qmailでは、Maildirを使用するように設定するのに、手動で設定が必要です。 各ユーザーのアカウントで
$ /var/qmail/bin/maildirmake ~/Maildir
※root権限で実行した場合は、chownでMaildirディレクトリのオーナーが各ユーザーになるように変更します。
新規のユーザーについては、/etc/skelディレクトリにMaildirのひな型を置いておくと、adduserコマンドなどでユーザーを作成した際に自動でMaildirディレクトリが生成されるようになります。
# /var/qmail/bin/maildirmake /etc/skel/Maildir
Maildir対応版でqmailを起動し直します。現在起動している各qmailプロセスをkillコマンドで終了させ、psコマンドでqmailプロセスが残っていないことを確認してください。その後もう1度、起動させ、再度配送のテストで確認します。
# /var/qmail/rc &
# echo to: [email protected] | /var/qmail/bin/qmail-inject
※Maildir/newディレクトリにファイルが1つできています。
qmailadmin-1.0.2.tar.gzを適当な作業ディレクトリにダウンロードして展開します。その後、ディレクトリを移動してconfigureを行います。vpopmailやautorespondのパスは、紹介したインストール方法であれば自動的に組み込まれます。
参照したURL: https://www.atmarkit.co.jp/ait/articles/0203/09/news002_2.html
適当な作業ディレクトリにダウンロードして展開します。
ダウンロード: wget https://sourceforge.net/projects/qmailadmin/files/autorespond/2.0.4/auto...
# tar xvfz autorespond-2.0.4.tar.gz
# cd autorespond-2.0.4/
# make
# make install
※これで/usr/local/bin/autorespondがインストールされました。qmailadminから使用することが目的ですから、直接autorespondを使用する機会は少ないと思いますが概要だけ確認しておきます。
autoresponderの使用方法は、「.qmail」ファイルに次の1行を記述します。
| /usr/local/bin/autorespond time num message dir [ flag arsender ]
引数やオプションの意味
time:numに使う受付時間(単位:秒)
num:timeで指定された時間以内に受け付けるメールの最大数
message:応答メッセージファイル
dir:ログを作成するディレクトリ
flag(送信されてきたメッセージの扱い方)
0:応答メッセージに添付しない
1:応答メッセージに添付(デフォルト指定)
arsender(応答メッセージ中の差出人)
+:Fromを空にする
$:送られてきたメッセージ中の「To:」を使用
cgiの設定 : /usr/lib/cgi-bin/
ダウンロード: wget https://sourceforge.net/projects/qmailadmin/files/qmailadmin-stable/1.2.... <-- コンパイルエラーが起きました。
ダウンロード: wget https://sourceforge.net/projects/qmailadmin/files/qmailadmin-devel/qmail...
1.2.16.tar.gzを適当な作業ディレクトリにダウンロードして展開します。その後、ディレクトリを移動してconfigureを行います。vpopmailやautorespondのパスは、紹介したインストール方法であれば自動的に組み込まれます。Apacheのデフォルトディレクトリは /var/www/html CGIのデフォルトディレクトリは /usr/bin/cgi-bin で設定します。
# tar xvfz qmailadmin-1.2.16.tar.gz
# cd qmailadmin-1.2.15
# ./configure --enable-htmldir=/var/www/html/ --enable-cgibindir=/usr/lib/cgi-bin/
主なオプション
--prefix={PREFIX}
qmailadminパッケージのインストール先。デフォルトは/usr/local
--enable-vpopmaildir={dir}
vpopmailをインストールしたディレクトリ(vpopmailユーザーのホームディレクトリ)
--enable-qmaildir={dir}
qmailのインストール先
--enable-cgipath={/cgi-bin/qmailadmin}
qmailadmin CGIのURL
--enable-vpopuser={vpopmail}
vpopmailをインストールした際のユーザー名
--enable-vpopgroup={vchkpw}
vpopmailをインストールした際のグループ名
--enable-autoresponder-bin={path}
autorespondのパス。使用しない場合は「n」を指定
--enable-ezmlmdir={dir}
ezmlmのインストール先
--enable-maxpopusers=unlimited
1バーチャルドメイン当たりの最大ユーザー数(「-1」は無制限。機能を利用しない場合は「0」を指定)
--enable-maxaliases=unlimited
1バーチャルドメイン当たりの最大エイリアス数(同上)
--enable-maxforwards=unlimited
1バーチャルドメイン当たりの最大転送設定数(同上)
--enable-maxautoresponders=unlimited
1バーチャルドメイン当たりの最大自動応答設定数(同上)
--enable-maxmailinglists=unlimited
1バーチャルドメイン当たりの最大ML数(同上)
--enable-maxusersperpage=15
Web 1ページ当たりに表示するユーザー数(デフォルトは15)
--enable-maxaliasesperpage=25
Web 1ページ当たりに表示するエイリアス数(デフォルトは25)
qmailadmin 1.2.13
Current settings
---------------------------------------
cgi-bin dir = /var/www/html/cgi-bin/
html dir = /var/www/html/
image dir = /var/www/html//images/qmailadmin
image URL = /images/qmailadmin
template dir = /usr/local/share/qmailadmin
qmail dir = /var/qmail
vpopmail dir = /home/vpopmail
autorespond dir = /usr/bin
ezmlm dir = /usr/local/bin/ezmlm
ezmlm idx = yes
mysql for ezmlm = yes
help = no
modify quota = no
domain autofill = no
catchall accounts = yes
trivial passwords = yes
modify spam check = no
# make
# make install-strip
http://サーバのアドレス/cgi-bin/qmailadmin
Webではできなことは、詳しくはこのURLで確認 https://www.atmarkit.co.jp/ait/articles/0203/09/news002_2.html
メーリングリストのタイトルに連番で番号を表示させたい。
メーリングリストのプレフィックスに、メーリングリストのタイトルの後に :# を追加します。
# /home/vpopmail/bin/vadddomain ドメイン名
# /home/vpopmail/bin/vdeldomain ドメイン名
# /home/vpopmail/bin/vdominfo ドメイン名
# /home/vpopmail/bin/vadduser メールアドレス
# /home/vpopmail/bin/vdeluser メールアドレス
# /home/vpopmail/bin/vpasswd メールアドレス(強制的に変更)
# /home/vpopmail/bin/vchangepw メールアドレス(旧パスワード必須)
# /home/vpopmail/bin/vuserinfo
-v (バージョン情報を表示)
-a (すべての項目を表示する。デフォルト)
-n (名前を表示する)
-p (暗号されたパスワードを表示する)
-u (uidを表示する)
-g (gidを表示する)
-c (コメントを表示する)
-d (ディレクトリを表示する)
-q (quotaを表示する)
-Q (quotaの利用内容を表示する)
-C (パスワードを平文で表示する)
-D ドメイン名 (指定したドメインの利用ユーザーを表示する)
# /home/vpopmail/bin/valias オプション
-i (追加・転送先→転送元)
-d (削除)
-s (一覽)
# /home/vpopmail/bin/vsetuserquota
# /home/vpopmail/bin/vmoddomlimits
# /home/vpopmail/bin/vmoduser
参考にしたURL: https://wiki.inamuu.com/?vpopmail%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E4...
GIMP
GIMPは、写真データや各種イメージデータを編集加工できる、PhotoShopに相当するイメージ編集加工ソフトです。
Windows、Mac、LinuxなどさまざまなOSで動作します。
WindowsやMacなどは、インストールプログラムを実行するだけでOKです。バージョンアップも、インストールプログラムを実行を実行する際に、既存のバージョンを確認します。
・ GIMPでファビコンを作成
GIMPでロゴなどを32x32のサイズでイメージを作成します。ファビコンで使う場合は、背景を透過にした方が、ホームページのブラウザーなどで表示がきれいになります。GIMPで透過を指定するには、
レイヤー > 透明部分 > 色を透明度に > 背景の色を選択クリック > 「色を透明度に」のダイアログで色を確認してOKをクリック > 選択した背景の色が透明に変換 > 保存は PNGもしくはGIFフォーマットにします。
その後、そのファイル名を favicon.ico などに変換して、ホームページサイトへアップロードします。
★概要
Inkscapeはイラストレーターや高機能グラフィックスソフトと同等の機能をもったベクター形式(Scalable Vector Graphics SVG)を採用したオープンソースソフトウェアです。インラストレータのAIファイルを読み込みできるのが、大きなメリットです。
Linux、Mac OS X、Windows
Licenseは GNU General Public License(GPL) 2011年2月4日現在
イラストレータのAIファイルを読み込んで表示
ダウンロードは 次のサイトから sourceforge.net/projects/inkscape/
開発コミュニティサイト inkscape.org/
Node.jsは、ChromeのV8JavaScriptエンジン上に構築されたJavaScriptランタイムです。
概要: https://nodejs.org/en/about/
forever start xxxx.js
概要は https://www.npmjs.com/package/forever
forever list forever stop forever stopall forever restart forever resartall ...
スクリプト言語 PHP について
参照: Upgrade/Installation guide for PHP 7.4 on Ubuntu and Debian
現在のインストール済みのPHP環境を確認します。
上記の説明を参考に新しいPHP7.4とその追加機能をインストールします。レポジトリは、packages.sury.orgを使用る設定です。
最後に古いPHP7.3をアンインストールします。
# Change 7.3 with all versions you want to purge.
参照: How to Update to PHP 7.4 for WordPress Site on Debian 9/10
レポジトリ SURY をインストールして、PHP7.3、7.4、8.0 などの複数のPHPバージョンをインストールして管理する説明が以下のURLです。
https://www.itzgeek.com/how-tos/linux/debian/how-to-install-php-7-3-7-2-...
PHP拡張モジュールのインストール、WordPressやDrupalの場合の説明
sudo apt install -y php7.3-mysql php7.3-dom php7.3-simplexml php7.3-ssh2 php7.3-xml php7.3-xmlreader php7.3-curl php7.3-exif php7.3-ftp php7.3-gd php7.3-iconv php7.3-imagick php7.3-json php7.3-mbstring php7.3-posix php7.3-sockets php7.3-tokenizer
sudo apt install -y php7.3-mysql php7.3-dom php7.3-gd php7.3-json php7.3-pdo php7.3-simplexml php7.3-tokenizer php7.3-xml
参考にしたページ :
Apache2の場合
sudo apt install apache2 php8.2-fpm libapache2-mod-php8.2 libapache2-mod-fcgid
sudo a2enmod php8.2
sudo a2enmod proxy_fcgi setenvif && sudo a2enconf php{version}-fpm
sudo systemctl restart apache2
sudo a2enconf php8.2-fpm
もし、古いPHP8.1などのPHP-FPMがインストールされている場合は、削除します。
sudo a2disconf php8.1-fpm
sudo apt purge php8.1*
sudo systemctl restart php8.2-fpm
Nginxの場合
sudo apt install nginx php8.2-fpm
編集 /etc/nginx/nginx.conf
server { listen 80; server_name mysite.example.com; root /var/www/mysite; index index.php index.html; location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; } }
Nginx文法のテスト sudo nginx -t
Debianでは apt-key コマンドが非推奨になっているので、インストール手順が異なります。SURY PHP PPA レポジトリを使います。
参考にしたサイト: PHP 8.1 https://computingforgeeks.com/how-to-install-php-on-debian-linux-2/
参考にしたサイト: PHP8.3 https://tecadmin.net/how-to-install-php-on-debian-12/
もし、DEB.SURY.ORG Automatic Signing Key が古いので更新できない場合は、新しいKeyをダウンロードします。
もし、以下のapt update エラーが起きた場合
The script will try to autodetect whether any APT repository is not configured with signed-by= directive and will print warning about the installation of this package. You need to manually add: [signed-by=/usr/share/keyrings/debsuryorg-archive-keyring.gpg] to your APT sources lists. See the Debian Wiki for more information: https://wiki.debian.org/DebianRepository/UseThirdParty#Sources.list_entry
gpgを再インストールして、入れ替える作業で対応できました。以下のサイトで suryレポジトリの再設定しました。
参考にしたサイト: PHP 8.1 https://computingforgeeks.com/how-to-install-php-on-debian-linux-2
CentOS上でスクリプト言語PHPの設定について
IUS Community Repository について
CentOSのPHP、Python、MySQLについて、常に最新環境を提供するために活動しているコミュニティ組織です。
コミュニティサイト: iuscommunity.org/
レポジトリ ダウンロード: iuscommunity.org/Repos
参考情報:
CentOSのWikiサイトにて、IUS Commnuity Repositoryについて説明があります。 以下のサイト
wiki.centos.org/AdditionalResources/Repositories
このレポジトリはCentOSのコア派ケージを置き換えるような表現があります。
CentOS標準PHP5.1をCentOSのTesting-repoでPHP5.2へバージョンアップ
1) 開発用のレポジトリを、Centos5.3のPHP5.1環境へ追加します。
# /etc/yum.repos.d/CentOS-Testing.repo 以下の内容をファイルに追加します。 [c5-testing] name=CentOS-5 Testing baseurl=http://dev.centos.org/centos/$releasever/testing/$basearch/ enabled=1 gpgcheck=1 gpgkey=http://dev.centos.org/centos/RPM-GPG-KEY-CentOS-testing includepkgs=php* 2)PHPのアップデイト # rpm -qa |grep php # yum update 3)Apache再起動 # service httpd restart 4)もし php-mcryp を使っている場合は rpm -e php-mcrypt-5.1.6-15.el5.centos.1 もしphp-common-5.2.6-2.el5s2 などが見つからないなどのエラーが起きた場合は、以下の--nodepsでトライしてみましょう。 wget -c http://sourcemirrors.org/scotth/centos/5/php/php-mcrypt-5.2.6-2.i386.rpm rpm -i --nodeps php-mcrypt-5.2.6-2.i386.rpm 5)参考情報 以下のサイトに詳細手順が記載されております。 http://wiki.centos.org/HowTos/PHP_5.1_To_5.2?highlight=%28php%29
PHP5.2とPHP5.3へのバージョンアップ手順
CentOS 5.3 などではPHP5.1が標準サポートなので、PHP5.2以上を使う場合は、さまざまサードパーティが作成したRPMパッケージとそのレポジトリを利活用するようになります。remi というレポジトリもそのひとつです。
# yum --enablerepo=remi list php-*
環境: CentOS 5.5 x86_64 Linux version 2.6.18-194.26.1.el5 ([email protected]) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48))
PHP5.2の内容: 既にremiレポジトリのPHP5.2環境がインストール済み
# yum list installed php*
Loaded plugins: fastestmirror, priorities Loading mirror speeds from cached hostfile * addons: ftp.iij.ad.jp * base: ftp.iij.ad.jp * extras: ftp.iij.ad.jp * updates: ftp.iij.ad.jp Installed Packages php.x86_64 5.2.9-1.el5.remi installed php-cli.x86_64 5.2.9-1.el5.remi installed php-common.x86_64 5.2.9-1.el5.remi installed php-dba.x86_64 5.2.9-1.el5.remi installed php-devel.x86_64 5.2.9-1.el5.remi installed php-gd.x86_64 5.2.9-1.el5.remi installed php-ldap.x86_64 5.2.9-1.el5.remi installed php-mbstring.x86_64 5.2.9-1.el5.remi installed php-mysql.x86_64 5.2.9-1.el5.remi installed php-odbc.x86_64 5.2.9-1.el5.remi installed php-pdo.x86_64 5.2.9-1.el5.remi installed php-pear.noarch 1:1.8.1-1.el5.remi installed php-pear-db.noarch 1.7.13-2.el5.rf installed php-pgsql.x86_64 5.2.9-1.el5.remi installed php-soap.x86_64 5.2.9-1.el5.remi installed php-xml.x86_64 5.2.9-1.el5.remi installed
PHP 5.2 から5.3 へアップデートするには libedit.x86_64 が必要となるので、まず、libeditをインストールする。
# yum install libedit.x86_64 --enablerepo=epel
Loaded plugins: fastestmirror, priorities Loading mirror speeds from cached hostfile * addons: ftp.iij.ad.jp * base: ftp.iij.ad.jp * epel: ftp.yz.yamagata-u.ac.jp * extras: ftp.iij.ad.jp * updates: ftp.iij.ad.jp Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package libedit.x86_64 0:2.11-2.20080712cvs.el5 set to be updated --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: libedit x86_64 2.11-2.20080712cvs.el5 epel 80 k Transaction Summary ================================================================================ Install 1 Package(s) Upgrade 0 Package(s) Total download size: 80 k Is this ok [y/N]: y Downloading Packages: libedit-2.11-2.20080712cvs.el5.x86_64.rpm | 80 kB 00:00 Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing : libedit 1/1 Installed: libedit.x86_64 0:2.11-2.20080712cvs.el5 Complete!
PHP5.3へのアップデート:
# yum --enablerepo=remi update php-\* Loaded plugins: fastestmirror, priorities Loading mirror speeds from cached hostfile * addons: ftp.iij.ad.jp * base: ftp.iij.ad.jp * extras: ftp.iij.ad.jp * remi: rpms.famillecollet.com * updates: ftp.iij.ad.jp Setting up Update Process Resolving Dependencies --> Running transaction check ---> Package php.x86_64 0:5.3.4-1.el5.remi set to be updated ---> Package php-cli.x86_64 0:5.3.4-1.el5.remi set to be updated ---> Package php-common.x86_64 0:5.3.4-1.el5.remi set to be updated ---> Package php-dba.x86_64 0:5.3.4-1.el5.remi set to be updated ---> Package php-devel.x86_64 0:5.3.4-1.el5.remi set to be updated ---> Package php-gd.x86_64 0:5.3.4-1.el5.remi set to be updated ---> Package php-ldap.x86_64 0:5.3.4-1.el5.remi set to be updated ---> Package php-mbstring.x86_64 0:5.3.4-1.el5.remi set to be updated ---> Package php-mysql.x86_64 0:5.3.4-1.el5.remi set to be updated ---> Package php-odbc.x86_64 0:5.3.4-1.el5.remi set to be updated ---> Package php-pdo.x86_64 0:5.3.4-1.el5.remi set to be updated ---> Package php-pgsql.x86_64 0:5.3.4-1.el5.remi set to be updated ---> Package php-soap.x86_64 0:5.3.4-1.el5.remi set to be updated ---> Package php-xml.x86_64 0:5.3.4-1.el5.remi set to be updated --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Updating: php x86_64 5.3.4-1.el5.remi remi 1.4 M php-cli x86_64 5.3.4-1.el5.remi remi 2.6 M php-common x86_64 5.3.4-1.el5.remi remi 968 k php-dba x86_64 5.3.4-1.el5.remi remi 59 k php-devel x86_64 5.3.4-1.el5.remi remi 622 k php-gd x86_64 5.3.4-1.el5.remi remi 204 k php-ldap x86_64 5.3.4-1.el5.remi remi 54 k php-mbstring x86_64 5.3.4-1.el5.remi remi 2.3 M php-mysql x86_64 5.3.4-1.el5.remi remi 157 k php-odbc x86_64 5.3.4-1.el5.remi remi 86 k php-pdo x86_64 5.3.4-1.el5.remi remi 116 k php-pgsql x86_64 5.3.4-1.el5.remi remi 132 k php-soap x86_64 5.3.4-1.el5.remi remi 275 k php-xml x86_64 5.3.4-1.el5.remi remi 220 k Transaction Summary ================================================================================ Install 0 Package(s) Upgrade 14 Package(s) Total download size: 9.1 M
Is this ok [y/N]: y
Downloading Packages: (1/14): php-ldap-5.3.4-1.el5.remi.x86_64.rpm | 54 kB 00:00 (2/14): php-dba-5.3.4-1.el5.remi.x86_64.rpm | 59 kB 00:00 (3/14): php-odbc-5.3.4-1.el5.remi.x86_64.rpm | 86 kB 00:01 (4/14): php-pdo-5.3.4-1.el5.remi.x86_64.rpm | 116 kB 00:01 (5/14): php-pgsql-5.3.4-1.el5.remi.x86_64.rpm | 132 kB 00:01 (6/14): php-mysql-5.3.4-1.el5.remi.x86_64.rpm | 157 kB 00:01 (7/14): php-gd-5.3.4-1.el5.remi.x86_64.rpm | 204 kB 00:01 (8/14): php-xml-5.3.4-1.el5.remi.x86_64.rpm | 220 kB 00:01 (9/14): php-soap-5.3.4-1.el5.remi.x86_64.rpm | 275 kB 00:01 (10/14): php-devel-5.3.4-1.el5.remi.x86_64.rpm | 622 kB 00:02 (11/14): php-common-5.3.4-1.el5.remi.x86_64.rpm | 968 kB 00:02 (12/14): php-5.3.4-1.el5.remi.x86_64.rpm | 1.4 MB 00:03 (13/14): php-mbstring-5.3.4-1.el5.remi.x86_64.rpm | 2.3 MB 00:04 (14/14): php-cli-5.3.4-1.el5.remi.x86_64.rpm | 2.6 MB 00:04 --------------------------------------------------------------------------------
Total 245 kB/s |
9.1 MB 00:37 Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction WARNING : This php-* RPM are not official Fedora/Redhat build and overrides the official ones. Don't file bugs on Fedora Project nor Redhat. Use dedicated forums http://forums.famillecollet.com/ Updating : php-common 1/28 Updating : php-pdo 2/28 Updating : php-cli 3/28 Updating : php 4/28 Updating : php-devel 5/28 Updating : php-dba 6/28 Updating : php-mysql 7/28 Updating : php-xml 8/28 Updating : php-soap 9/28 Updating : php-pgsql 10/28 Updating : php-odbc 11/28 Updating : php-ldap 12/28 Updating : php-gd 13/28 Updating : php-mbstring 14/28 Cleanup : php-cli 15/28 Cleanup : php-devel 16/28 Cleanup : php-dba 17/28 Cleanup : php-common 18/28 Cleanup : php-mysql 19/28 Cleanup : php-xml 20/28 Cleanup : php-soap 21/28 Cleanup : php 22/28 Cleanup : php-pgsql 23/28 Cleanup : php-odbc 24/28 Cleanup : php-ldap 25/28 Cleanup : php-gd 26/28 Cleanup : php-pdo 27/28 Cleanup : php-mbstring 28/28 Updated: php.x86_64 0:5.3.4-1.el5.remi php-cli.x86_64 0:5.3.4-1.el5.remi php-common.x86_64 0:5.3.4-1.el5.remi php-dba.x86_64 0:5.3.4-1.el5.remi php-devel.x86_64 0:5.3.4-1.el5.remi php-gd.x86_64 0:5.3.4-1.el5.remi php-ldap.x86_64 0:5.3.4-1.el5.remi php-mbstring.x86_64 0:5.3.4-1.el5.remi php-mysql.x86_64 0:5.3.4-1.el5.remi php-odbc.x86_64 0:5.3.4-1.el5.remi php-pdo.x86_64 0:5.3.4-1.el5.remi php-pgsql.x86_64 0:5.3.4-1.el5.remi php-soap.x86_64 0:5.3.4-1.el5.remi php-xml.x86_64 0:5.3.4-1.el5.remi Complete!
念のためにMySQLも既に導入済みのremiレポジトリからアップデイト:
アップデイト前の環境
# yum list installed mysql*
Loaded plugins: fastestmirror, priorities Loading mirror speeds from cached hostfile * addons: ftp.iij.ad.jp * base: ftp.iij.ad.jp * extras: ftp.iij.ad.jp * updates: ftp.iij.ad.jp Installed Packages mysql.x86_64 5.1.34-1.el5.remi installed mysql-connector-odbc.x86_64 3.51.26r1127-1.el5 installed mysql-devel.x86_64 5.1.34-1.el5.remi installed mysql-libs.x86_64 5.1.34-1.el5.remi installed mysql-server.x86_64 5.1.34-1.el5.remi installed mysqlclient15.x86_64 5.0.67-1.el5.remi installed
アップデイトの実行
# yum --enablerepo=remi update mysql-\*
Loaded plugins: fastestmirror, priorities Loading mirror speeds from cached hostfile * addons: ftp.iij.ad.jp * base: ftp.iij.ad.jp * extras: ftp.iij.ad.jp * remi: iut-info.univ-reims.fr * updates: ftp.iij.ad.jp Setting up Update Process Resolving Dependencies --> Running transaction check ---> Package mysql.x86_64 0:5.1.54-1.el5.remi set to be updated ---> Package mysql-devel.x86_64 0:5.1.54-1.el5.remi set to be updated ---> Package mysql-libs.x86_64 0:5.1.54-1.el5.remi set to be updated ---> Package mysql-server.x86_64 0:5.1.54-1.el5.remi set to be updated --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Updating: mysql x86_64 5.1.54-1.el5.remi remi 1.1 M mysql-devel x86_64 5.1.54-1.el5.remi remi 121 k mysql-libs x86_64 5.1.54-1.el5.remi remi 1.7 M mysql-server x86_64 5.1.54-1.el5.remi remi 11 M Transaction Summary ================================================================================ Install 0 Package(s) Upgrade 4 Package(s) Total download size: 14 M Is this ok [y/N]: y Downloading Packages: (1/4): mysql-devel-5.1.54-1.el5.remi.x86_64.rpm | 121 kB 00:01 (2/4): mysql-5.1.54-1.el5.remi.x86_64.rpm | 1.1 MB 00:03 (3/4): mysql-libs-5.1.54-1.el5.remi.x86_64.rpm | 1.7 MB 00:05 (4/4): mysql-server-5.1.54-1.el5.remi.x86_64.rpm | 11 MB 00:27 -------------------------------------------------------------------------------- Total 348 kB/s | 14 MB 00:39
Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction WARNING : This MySQL RPM is not an official Fedora/Redhat build and it overrides the official one. Don't file bugs on Fedora Project nor Redhat. Use dedicated forums http://forums.famillecollet.com/ Updating : mysql-libs 1/8 Updating : mysql 2/8 Updating : mysql-devel 3/8 Updating : mysql-server 4/8 Cleanup : mysql-devel 5/8 Cleanup : mysql-libs 6/8 Cleanup : mysql-server 7/8 Cleanup : mysql 8/8 Updated: mysql.x86_64 0:5.1.54-1.el5.remi mysql-devel.x86_64 0:5.1.54-1.el5.remi mysql-libs.x86_64 0:5.1.54-1.el5.remi mysql-server.x86_64 0:5.1.54-1.el5.remi Complete!
以上でPHP5.3とMySQL5.1.54-1が使えるようになりました。
apacheとMySQLの再起動。
# /etc/init.d/httpd restart
# /etc/init.d/mysqld restart
PHPのバージョン確認:
# php -v
PHP 5.3.4 (cli) (built: Dec 11 2010 18:28:50) Copyright (c) 1997-2010 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
MySQLのバージョン確認:
# mysql
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.1.54 MySQL Community Server (GPL) by Remi Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL v2 license Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
オプションとして、PHP言語のCMSによっては、セキュリティ向上のために suhosin パッケージを必要とする場合があるので、 remi レポジトリからインストールします。
# yum install php-suhosin-0.9.32.1-1.el5.remi.x86_64 --enablerepo=remi
Loaded plugins: fastestmirror, priorities Loading mirror speeds from cached hostfile * addons: ftp.iij.ad.jp * base: ftp.iij.ad.jp * extras: ftp.iij.ad.jp * remi: rpms.famillecollet.com * updates: ftp.iij.ad.jp Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package php-suhosin.x86_64 0:0.9.32.1-1.el5.remi set to be updated --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: php-suhosin x86_64 0.9.32.1-1.el5.remi remi 78 k Transaction Summary ================================================================================ Install 1 Package(s) Upgrade 0 Package(s) Total download size: 78 k Is this ok [y/N]: y Downloading Packages: php-suhosin-0.9.32.1-1.el5.remi.x86_64.rpm | 78 kB 00:01 Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing : php-suhosin 1/1 Installed: php-suhosin.x86_64 0:0.9.32.1-1.el5.remi Complete! # php -v PHP 5.3.4 (cli) (built: Dec 11 2010 18:28:50) Copyright (c) 1997-2010 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies with Suhosin v0.9.32.1, Copyright (c) 2007-2010, by SektionEins GmbH
※参考までに、Suhosinの開発元サイトには、Gentoo Linux FreeBSD OpenSuSE Madriva Debian などではRPMが用意されているようです。以下のサイトをご覧下さい。 http://www.hardened-php.net/suhosin/download.html
Webサーバー関連
仮想(Virtual)ドメインを使って運用している場合、必要ない仮想ドメインは、ディレクトや設定ファイルをすべて削除もしくは移動させて、apacheを再起動させます。 中途半端な状態で運用していると、内部でエラーがたまってApacheのパフォーマンスに影響する場合もありえるので、必ず、必要ない設定ファイルは削除しましょう。
DebianにOpenSSLをインストールする手順 参考サイト ここから
Debianにアクセスログ(Piwik)をインストールする手順 参考サイト ここから
piwikはオープンソースのWEBサイトアクセス解析ツールです。
http://www.piwikjapan.org/ 日本のユーザーグループ
Debianのパッケージではなくソースからダウンロードしてインストールしてみました。
以下のワーニングが表示されるので、plugins/Morpheus/icons/submodules を削除します。
インストール環境の確認
データベースの設定、事前にPiWik用のデータベース名、そのユーザーと権限を設定しておきましょう。
データベースのテーブル作成
PiWikの管理画面にログインするユーザー名、パスワード、メールアドレスを登録
アクセス記録をする対象のWebサイトを設定します。 複数のWebサイトを登録管理可能。
PiWilのトラッキングスクリプトについて CMSのモジュール(DrupalのPiwik Web Analyticsなど)は自動的にモジュール側の設定を行なうことでこのスクリプトを追加します。
インストールできました
PiWikをインストールしたURLにアクセスして管理画面にログインします
ログイン後のダッシュボード画面
概要:
A: Nginxの設定ファイル /etc/nginx/sites-avaiable/www.example.com.conf を作成し、設定を追加する。
server { listen 80; listen [::]:80; server_name www.example.com; root /usr/share/nginx/html/; location ~ /.well-known/acme-challenge { allow all; } }
サイトのホームディレクトリを作成 sudo mkdir -p /usr/share/nginx/html/
Nginxを再起動 sudo systemctl reload nginx
A: Nginxの設定ファイル /etc/nginx/sites-avaiable/www.example.com.conf を作成し、設定を追加する。
server { listen 80; listen [::]:80; server_name www.example.com; root /var/www/example/; index index.php index.html; access_log /var/log/nginx/example_access.log; error_log /var/log/nginx/example_error.log; location / { try_files $uri $uri/ /index.php; } location ~ ^/(.+\.php)$ { try_files $uri =404; fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; } }
サイトのホームディレクトリを作成 sudo mkdir -p /var/www/example
Nginxを再起動 sudo systemctl reload nginx
Q: ページにアクセスして、文書ファイルなどのリンクをクリックすると、403エラー「Forbidden」が表示されるので、そのテキストファイルなどを表示させたい場合は。
A: Nginxの設定ファイル /etc/nginx/sites-avaiable/xxxx.conf に以下のlocation設定を追加する。以下の/sites/default/files/ は オープンソースCMS、Drupal 8の標準ファイルディレクトリの場合です。環境に合わせて調整してください。
location ~ ^/sites/default/files/ { allow all; }
Q: ファイルのアップロードサイズを変更しするには?
A: /etc/nginx/nginx.conf を編集します。 環境に合わせて調整してください。 参考にしたサイトは:https://docs.rackspace.com/support/how-to/limit-file-upload-size-in-nginx/
Edit the /etc/nginx/nginx.conf file to increase the limit of the files to upload: http: http { ... client_max_body_size 100M; } server: server { ... client_max_body_size 100M; } location: location /uploads { ... client_max_body_size 100M; }
Niginxの再起動です
A: /etc/nginx/sites-available サイト名.conf を編集します。 ポート80とポート443のどちらにも設定しました。サイト名.confファイルの保存先や内容は環境に合わせて調整してください。 参考にしたサイトは:https://tech-waplus.com/programming/20190410-nginx-node-js-web/
server { client_max_body_size 100M; listen 80; server_name サイトドメイン名; location / { proxy_pass http://localhost:30xx; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; client_max_body_size 100M; } } server { client_max_body_size 100M; listen 443 ssl; server_name サイトドメイン名; location / { proxy_pass http://localhost:30xx; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; client_max_body_size 100M; } }
A: 別のNginxのリバーズプロシキーの設定について
出典: https://docs.graylog.org/docs/web-interface#configuring-webif-nginx
HTTPの場合:
server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; server_name xxx.example.org; location / { proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-xxx-Server-URL http://$server_name/; proxy_pass http://127.0.0.1:9000; } }
NGINXはSSLターミネーションに使用できます。サーバーのlistendirectiveを変更し、証明書に関するすべての情報を追加するだけで済みます。 複数のxxxサーバーを実行している場合は、HTTPSを使用することをお勧めします。
HTTPSの場合:
server { listen 443 ssl http2; server_name graylog.example.org; # <- your SSL Settings here! location / { proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Graylog-Server-URL https://$server_name/; proxy_pass http://127.0.0.1:9000; } }
1つのドメイン名で複数の異なるアプリケーションを提供する場合は、パスプレフィックスを使用してxxxWebインターフェイスを提供することもできます。
HTTPを使用したパスプレフィックスの下でのプロキシWebインターフェイスとAPIトラフィックの場合
server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; server_name applications.example.org; location /graylog/ { proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Graylog-Server-URL http://$server_name/graylog/; rewrite ^/graylog/(.*)$ /$1 break; proxy_pass http://127.0.0.1:9000; } }
これにより、xxxの設定が次のURLで利用できるようになります。
Webインターフェース: http://applications.example.org/xxx/
REST API: http://applications.example.org/xxx/api/
A: /etc/nginx/sites-avaiable/サイト名.conf を編集します。 環境に合わせて調整してください。
### --> for Drupal 8 location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } # Very rarely should these ever be accessed outside of your lan location ~* \.(txt|log)$ { allow 192.168.0.0/16; deny all; } location ~ \..*/.*\.php$ { return 403; } location ~ ^/sites/.*/private/ { return 403; } location ~ (^|/)\. { return 403; } location / { # try_files $uri @rewrite; # For Drupal <= 6 try_files $uri /index.php?$query_string; # For Drupal >= 7 } location @rewrite { rewrite ^/(.*)$ /index.php?q=$1; } # location ~ '\.php$|^/update.php' { # fastcgi_split_path_info ^(.+?\.php)(|/.*)$; # #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini # include fastcgi_params; # include snippets/fastcgi-php.conf; # fastcgi_param SCRIPT_FILENAME $request_filename; # fastcgi_intercept_errors on; # fastcgi_pass unix:/run/php/php7.0-fpm.sock; # } location ~ ^/sites/.*/files/styles/ { # For Drpal >= 7 try_files $uri @rewrite; } location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { expires max; log_not_found off; } ### <--- end Drupal 8
Niginxの再起動です
A: 別の設定方法
出典: https://www.itzgeek.com/how-tos/linux/ubuntu-how-tos/install-drupal-with...
PHP8.1のインストール(Ubuntu 22.04) 出典: https://www.itzgeek.com/how-tos/linux/ubuntu-how-tos/install-lemp-stack-...
PHP FastCGI Process Manager (FPM)でインストール
sudo apt install -y php-fpm php-mysql php-cli
もし、公式のNginxリポジトリからNginxをインストールした場合は、PHPUnixソケットの所有権とグループをnginxに変更する必要があります。
sudo sed -i 's/listen.owner \= www-data/listen.owner \= nginx/g' /etc/php/8.1/fpm/pool.d/www.conf sudo sed -i 's/listen.group \= www-data/listen.group \= nginx/g' /etc/php/8.1/fpm/pool.d/www.conf
仮想ドメインでNginxを設定
server {
server_name itzgeek.local www.xxx.xxx;
root /usr/share/nginx/html/www.xxx.xxx;
location / {
index index.html index.htm index.php;
}
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
ドキュメントルートを作成
sudo mkdir /usr/share/nginx/html/www.xxx.xxx
Nginxの再起動
sudo systemctl restart nginx sudo systemctl restart php8.1-fpm
PHP8の追加モジュール
sudo apt install -y php-mysql php-gd php-dom php-curl php-imagick php-zip php-xml php-mbstring php-json php-pdo php-cli php-apcu sudo apt install --no-install-recommends -y php-uploadprogress
編集 php.ini (設定数値は環境に合わせて調整します。)
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
realpath_cache_size = 256k
realpath_cache_ttl = 3600
server_name , root, fastcgi_pass は環境に合わせて調整します。
server { server_name itzgeek.net www.xxx.net; root /usr/share/nginx/www.xxx.net/html; index index.php index.html; access_log /usr/share/nginx/www.xxx.net/logs/access.log; error_log /usr/share/nginx/www.xxx.net/logs/error.log; location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } location ~* \.(txt|log)$ { deny all; } location ~ \..*/.*\.php$ { return 403; } location ~ ^/sites/.*/private/ { return 403; } # Block access to scripts in site files directory location ~ ^/sites/[^/]+/files/.*\.php$ { deny all; } # Allow "Well-Known URIs" as per RFC 5785 location ~* ^/.well-known/ { allow all; } # Block access to "hidden" files and directories whose names begin with a # period. This includes directories used by version control systems such # as Subversion or Git to store control files. location ~ (^|/)\. { return 403; } location / { try_files $uri /index.php?$query_string; # For Drupal >= 7 } location @rewrite { rewrite ^ /index.php; # For Drupal >= 7 } # Don't allow direct access to PHP files in the vendor directory. location ~ /vendor/.*\.php$ { deny all; return 404; } # Protect files and directories from prying eyes. location ~* \.(engine|inc|install|make|module|profile|po|sh|.*sql|theme|twig|tpl(\.php)?|xtmpl|yml) (~|\.sw[op]|\.bak|\.orig|\.save)?$|^(\.(?!well-known).*|Entries.*|Repository|Root|Tag|Template|composer\.(json|lock) |web\.config)$|^#.*#$|\.php(~|\.sw[op]|\.bak|\.orig|\.save)$ { deny all; return 404; } location ~ '\.php$|^/update.php' { fastcgi_split_path_info ^(.+?\.php)(|/.*)$; try_files $fastcgi_script_name =404; include fastcgi_params; fastcgi_param HTTP_PROXY ""; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param QUERY_STRING $query_string; fastcgi_intercept_errors on; fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; } location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { try_files $uri @rewrite; expires max; log_not_found off; } # Fighting with Styles? This little gem is amazing. location ~ ^/sites/.*/files/styles/ { # For Drupal >= 7 try_files $uri @rewrite; } # Handle private files through Drupal. Private file's path can come # with a language prefix. location ~ ^(/[a-z\-]+)?/system/files/ { # For Drupal >= 7 try_files $uri /index.php?$query_string; } # Enforce clean URLs # Removes index.php from urls like www.example.com/index.php/my-page --> www.example.com/my-page # Could be done with 301 for permanent or other redirect codes. if ($request_uri ~* "^(.*/)index\.php/(.*)") { return 307 $1$2; } }
A: crontabに毎日certbot renew を実行し、postfixとdovecot を再起動、Nginxの場合
sudo crontab -e
@daily certbot renew --quiet && systemctl reload postfix dovecot nginx
A: sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d www.example.com
--nginx: Use the nginx plugin.
--agree-tos: Agree to terms of service.
--redirect: Force HTTPS by 301 redirect.
--hsts: Add the Strict-Transport-Security header to every HTTP response. Forcing browser to always use TLS for the domain. Defends against SSL/TLS Stripping.
--staple-ocsp: Enables OCSP Stapling. A valid OCSP response is stapled to the certificate that the server offers during TLS.
ワープロ、表計算、プレゼンテーション、グラフィック作成、データベースソフトなどの事務用ソフトウェア
LibreOfficeになる前のソフト名
OpenOfficeの開発チームが立ち上げた、オフィスソフトです。OpenOfficeやMS Officeとの互換性があり、OpenOfficeの後継として活用できると、期待しております。
JavaのJREを別途ダウンロードしてからLibreOfficeをインストールします。 ここから
コンテキストメニューで設定を追加します。 ツール -> カスタマイズ -> コンテキストメニュー -> メニュー(操作ごとに内容を設定)、セルを選択してマウス右クリックの場合はメニュー「セル」を選択 -> 希望の項目を選択 -> コマンドを追加 -> ONで保存
Audacity Version 3.2.4
参考にしたURL: https://jp.cyberlink.com/blog/audioeditor/1646/how-to-remove-noise-in-au...
ノーマライズ機能を使う場合(私はこの機能を推奨)
増幅機能を使う場合
参考にしたURL: https://aprico-media.com/posts/5716
オープンソースのビデオ会議やチャット・コミュニケーションシステムなどの情報です。
Jitsi Meet (Jitsi)
Jitsi : https://jitsi.org/
Jitsi Meet : https://jitsi.org/jitsi-meet/
Jisi Meet のインストールなどは ここから
Jisti Meet の暗号化について(2020年10月17日現在)
Slack代替えとして有望なオープンソースのメッセージングシステムです。Matrixのクライアント環境として開発されています。
エンドツーエンドの暗号化ができる。
Element: Matrixクライアント https://element.io/
Element(旧名:Riot)のインストール・技術情報: ここから
Matrix : 分散型コミュニケーション(Decenterlized Communication)サーバーシステム https://matrix.org/
Riot: Matrixクライアント https://about.riot.im/
Matrixのインストール・技術情報: ここから
Riotのインストール・技術情報: ここから
Jitsi Meetはオープンソースのビデオ会議システムJitsiのDebian/Ubuntu用のシステム環境です。
Jitsiは、End to End Scryption (暗号化)されたシステムで、操作が容易です。
Jitsi Meet Blog : https://jitsi.org/blog/category/jitsi-meet/
Document : https://github.com/jitsi/jitsi-meet/blob/master/doc/README.md
Jitsi Meet Wiki : https://github.com/jitsi/jitsi-meet/wiki
Jitsi Jicofo(Conference Focus / managing media sessions) : https://github.com/jitsi/jicofo
Prosody (XMPP Communication Server) : https://prosody.im/
日本語での資料
https://rohhie.net/an-open-source-web-conferencing-system-jitsi-server-installation/
参考にしたサイト
インストール環境 Debian 10 (上記資料はUbuntuですが、Debian10でも同じ手順でOKでした)
ドメイン名とそのドメイン名をインストールするサーバーのホスト名(FQDN:fully qualified domain name)と同じに設定する
例えば ホスト名 meet FQDN は meet.example.com
sudo hostnamectl set-hostname meet.example.com
sudo sed -i 's/^127.0.1.1.*$/127.0.1.1 meet.example.com meet/g' /etc/hosts
確認
hostname
hostname -f
ufwコマンドで設定します。
sudo ufw allow OpenSSH
sudo ufw allow http
sudo ufw allow https
sudo ufw allow in 10000:20000/udp
sudo ufw enable
システムの更新とシャットダウンおよび再起動
sudo apt update
sudo apt upgrade -y && sudo shutdown -r now
Jitsi Meet jitsi-meet_2.0.4548-1 (2020年5月19日)では、jitsi-videobridge2_2.1-197-g38256192-1でJavaはJDK-8を使っているので、openJDK のJRE8 をインストールします。
参考にしたサイト: Debian 10にOpenJDK 8をインストール
https://qiita.com/witchcraze/items/47d44df81f1b152bab8c
https://linuxize.com/post/install-java-on-debian-10/
sudo apt update
sudo apt install apt-transport-https ca-certificates wget dirmngr gnupg software-properties-common
wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | sudo apt-key add -
sudo add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/
sudo apt update
sudo apt install adoptopenjdk-8-hotspot
java -version
openjdk version "11.0.7" 2020-04-14
OpenJDK Runtime Environment (build 11.0.7+10-post-Debian-3deb10u1)
OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Debian-3deb10u1, mixed mode, sharing)
sudo update-alternatives --config java
alternative java (/usr/bin/java を提供) には 2 個の選択肢があります。
選択肢 パス 優先度 状態
------------------------------------------------------------
* 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 自動モード
1 /usr/lib/jvm/adoptopenjdk-8-hotspot-amd64/bin/java 1081 手動モード
2 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 手動モード
現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください: 1
update-alternatives: /usr/bin/java (java) を提供するためにマニュアルモードで /usr/lib/jvm/adoptopenjdk-8-hotspot-amd64/bin/java を使います
java -version
openjdk version "1.8.0_252"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_252-b09)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.252-b09, mixed mode)
JAVA_HOMEの設定
echo "JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")" | sudo tee -a /etc/profile
source /etc/profile
sudo apt install -y nginx
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
レポジトリの設定
cd
wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | sudo apt-key add -
sudo sh -c "echo 'deb https://download.jitsi.org stable/' > /etc/apt/sources.list.d/jitsi-stable.list"
sudo apt update -y
Jitsi Meetのインストール
sudo apt install -y jitsi-meet
インストールの途中でFQDN(meet.example.com)を入力します。
SSL証明書の設定で、デフォルトの「Generate a new self-signed certificate (You will later get a chance to obtain a Let's Encrypt certificate) 」で実行
インストール終了後に、Let's Encrypt SSL証明書を適用させます。
sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
途中でLet's Encrypt からの連絡先メールアドレス(自分のアドレスで)を入力
https://meet.example.com で動作確認
インストール完了した状態は、URLを訪問した人は、だれでも会議が作成できるので、セキュリティ対策として作成者とそのパスワードで制限します。
詳細はここから: https://www.digitalocean.com/community/tutorials/how-to-install-jitsi-me...
※ authentication = "internal_plain" は authentication = "internal_hashed" に変更します。ホストがパスワードを作れるようにするため。
上記の「Step 5 — Locking Conference Creation」を参考にしてください。
sudo nano /etc/prosody/conf.avail/meet.example.com.cfg.lua
編集 /etc/prosody/conf.avail/meet.example.com.cfg.lua
...
authentication = "anonymous"
...
次のように
...
authentication = "internal_hashed"
...
※このauthenticationについてはprosodyのマニュアル(https://prosody.im/doc/authentication)に説明がありますが、Jitsi Meet上での動作についてはまだ不明ですが。
同じファイルの最後に以下を追加
...
VirtualHost "guest.meet.example.com"
authentication = "anonymous"
c2s_require_encryption = false
別のファイルを編集 Open another configuration file at /etc/jitsi/meet/meet.example.com-config.js
sudo nano /etc/jitsi/meet/meet.example.com-config.js
...
// anonymousdomain: 'guest.example.com',
...
変更
...
anonymousdomain: 'guest.meet.example.com',
...
次に編集するファイル /etc/jitsi/jicofo/sip-communicator.properties
sudo nano /etc/jitsi/jicofo/sip-communicator.properties
以下の行を2行目に追加します。
org.jitsi.jicofo.auth.URL=XMPP:meet.example.com
ユーザー名とパスワードを追加
sudo prosodyctl register user meet.example.com password
※もしユーザー名を削除する場合は sudo prosodyctl deluser ユーザー名@meet.example.com
Jitsi Meet 再起動
sudo systemctl restart prosody.service
sudo systemctl restart jicofo.service
sudo systemctl restart jitsi-videobridge2.service
上記の設定は、同様に、次のサイト https://jitsi.github.io/handbook/docs/devops-guide/secure-domain も参考にします。
/etc/jitsi/meet/meet.example.com-config.js の enableWelcomePage: true を false に設定する
// Whether to use a welcome page or not. In case it's false a random room$
// will be joined when no room is specified.$
enableWelcomePage: true,$ <----- false
sudo prosodyctl --help
prosodyctl - Manage a Prosody server
Usage: /usr/bin/prosodyctl COMMAND [OPTIONS]
Where COMMAND may be one of:
例えば、一度登録したユーザーのパスワードを変更する場合は、prosodyctl passwd ユーザー名@JID(URL名) を実行して変更するパスワードを入力します。
Prosodyは認証機能をサポートしています。参考にしたページ: https://prosody.im/doc/authentication
providerの設定で変更可能
例えば、 authentication = "internal_hashed" -- Default
Hashed or Plain ? https://prosody.im/doc/plain_or_hashed
以下のサイトを参考にインストール
https://nerdonthestreet.com/wiki?find=Host+a+Jitsi+Meet+Server
以下のサイトを参考にインストール
https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-quickstart
注意事項:
2023年6月23日現在、Debian12でのJitsiMeetはインストール完了しますが、会議開始後、すぐに再接続するProsodyの設定エラーのような (Can’t connect to meeting - New install of Jitsi Meet)、障害が起きています。
以下のサイトを参考にインストール
https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-quickstart
注意事項:
Docker版のインストールは以下のURLを参考にします。
https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-docker/
ユーザー/パスワードの設定方法 参考にしたページ: https://library.ahadiani.ca/en/Docker/Jitsi
上記Docker版のインストール後に、以下の設定を追加します。
.envファイルの設定
ENABLE_AUTH=1 ENABLE_GUESTS=1 AUTH_TYPE=internal
以下のコマンドでDocker内のProsodyへユーザー名とパスワードを登録します。
docker-compose exec prosody /bin/bash prosodyctl --config /config/prosody.cfg.lua register ユーザー名 meet.jitsi パスワード
Docker版のjitsiMeet を再起動します。
docker-compose down docker-compose up -d
この設定では、最初にJitiMeetに接続した人がホストになるか確認してきます。登録したユーザー名とパスワードを入力して、ホストになり、JitiMeetの会議を作成・オンラインルームを公開することができます。この公開したオンラインルームには、そのURLを知っている人は参加できます。
Q: サイト訪問者がroom作成ページにアクセスするのをブロックするには
出典:2018年11月 https://community.jitsi.org/t/how-to-request-authentication-before-the-meeting-room-is-initialized/15625/5
A: jicofo config で設定して、そのコンポーネント(jicofo)を再スタート sudo systemctl restart jicofo.service
Q: roomから出て、誰かがモデレーターから外れると自動でモデレーター権限を付与できない、という設定は可能でしょうか?
出典:2017年5月 https://community.jitsi.org/t/jitsi-users-users-to-login-before-joining-a-room-prosody/12508/5
A: この設定は現在サポートされていません。モデレーターがroomから出ると、ほかの一人がモデレーターになります。また、prosodyモジュールには、すべての参加者へモデレーター権限を与える、オプション設定があります。たぶん、そのオプションをOFFにすると、できるかもしれません。
Q: モデレーターの権限について知りたい?
出典: https://community.jitsi.org/t/how-to-what-is-a-meeting-moderator/73139
A: モデレーターの権限
A: モデレーターのデフォルトインストール時の設定内容
A: モデレーターのデフォルトインストール(Secure Domain セットアップで)時の設定内容
A: もし、mod_muc_allowners.lua を有効した場合
Q: JitsiMeetの録画をインストールしたい
A: この設定は、Debian10のJitsiMeetサーバーに、録画機能(Jibri)をインストールする手順です。一般的には、JitsiMeetのサーバーとJibriサーバーは別のサーバーにインストールするようですが。
この設定で、Youtubeのライブ配信もできました。
また、XMPPで使うTCPポート 5222, 5223, 5347 をオープンにします。Ubuntu 16.04へのJibriインストールを参考に
上記の設定ではDebia10のJavaがデフォルトは11なのでJitsiMeetのサーバーのインストールではそのままでOKです。Debian10のサーバーにJitsiMeetサーバーをインストールした際のJitsiMeetのソースにJava8関連が入っております。ただし、jibriをインストールする場合は、Javaの8をインストールして、そのJava8を実行させるときに、Java8への絶対パスで実行させる設定を行います。つまり、デフォルトではJava11ですが、Jibriの時だけJava8を使う環境設定になります。
Debian10にJava8をインストール:
Q: RMTPサーバーでストリーミング配信させたい
A: Jibriは録画とストリーミングができ、デフォルトではYoutubeライブ配信でストリーミングする設定になっています。Jibriで、Youtubeではなく、RMTPサーバーでストリーミング配信させる場合は、以下の記事を参考に設定します。
参考資料: Easy way to create a Jitsi cluster based on Debian Buster
Q: 接続ユーザー数とサーバースペックについて
A: JitsiMeetに接続するユーザー数とサーバースペックは、クラウド環境により異なりますが、さくらのクラウド(石狩第1ゾーン、2021年1月21日)の場合
推測ですが、ユーザー数が増えた場合は、CPUコアを増やしたほうが良いと思います。ユーザー接続があると、スレッドを作るようなので、コア数を多くすることで安定した接続が維持できるようです。
さくらのクラウドでは、スレッドを多く使うので、コア数が多いほうがユーザー増加に対応できます。「コア占有プラン」では、2021年2月2日の時点でテスト、それほど、差がありませんでした。
Q: カメラやマイクのないPC(デスクトップや古いノートPC)の場合
Google Chromeでアクセスすると、参加者の映像が表示しない、参加者名だけの黒い画面しか表示しない。どうしたらカメラ映像が表示されるか。
A: PCにマイクやカメラが接続されていない場合は、自動的にカメラ映像もOFFとなり、黒くなります。もし、マイクやカメラがないPCで会議参加者のカメラ表示などを見たい場合は、GoogleChrome設定でカメラや音声を有効にすることで他の参加者の画像が表示されます。
Q: Google Analyticsの設定について
A: Google Analyticsの設定は、以下のページを参考にしました。 ただし、Create a analytics-ga.min.js file in / etc / jitsi / meet / lib folder はミスがあり、/ etc / jitsi / meet / libs が正しいディレクトリ名です。
ファイル名 analytics-ga.min.js ファイルを次のディレクトリに作成 /etc/jitsi/meet/libs
次のページから参照 : https://developers.google.com/analytics/devguides/collection/analyticsjs/
以下のスクリプトを analytics-ga.min.js ファイルに記載します。AnalyticsのIDも記載し保存します。
<!-- Google Analytics -->
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-XXXXX-Y', 'auto');
ga('send', 'pageview');
</script>
<!-- End Google Analytics -->
/etc/jitsi/meet にある meet.ドメイン名-config.js ファイルに記載されている以下の箇所を設定します。
scriptURLs: [
“libs/analytics-ga.min.js”, // google-analytics
// “https://example.com/my-custom-analytics.js 5”
],
ApacheおよびNginxを再起動
Matrix通信プロトコルは、ユーザーがアプリに関係なく互いに通信できるようにすることを目的としています。分散型システムマトリックスは、HTTP標準に基づいており、個々のクライアントとサーバー間のインターフェイスの詳細です。
2020年
Matrix: Das steckt hinter dem neuen Messenger von Bundeswehr und Behörden
2019年
Whatsapp-Alternative – Frankreich wandert in die Matrix (フランス政府でWhatsappの代替えとして採用)
Matrix通信プロトコルで稼働するメッセージングシステムで、Slackの代替えになります。
Riotの概要: https://about.riot.im/
2020年
2019年
2016年
Open Source und verschlüsselt: Das steckt hinter dem Slack-Rivalen Riot(オープンソースで暗号化....)
システムのアドミニストレーションで必要となるさまざまなソフトに関する情報です。
Webminはシステムのほとんどの機能をルート権限で設定することが多いので、アクセスには気をつけましょう。
必要になる時だけ、アクセスできるように、設定ファイル /etc/webmin/miniserve.conf の allow = 127,0,0,1 192.168.0.0/24 を実行したり、コメントにして実行できなくすることが、一つのセキュリティ対策になります。
CentOSの場合 Webminサイトを参照
Perlモジュールをインストール
# yum -y install perl-Net-SSLeay
最新版をダウンロード
# wget http://download.webmin.com/download/yum/webmin-1.630-1.noarch.rpm
インストール実行
# rpm -Uvh webmin-1.630-1.noarch.rpm
設定ファイルを編集
# vim /etc/webmin/miniserv.conf allow=127.0.01 192.168.0.1/24 を追加します
Webminを再起動
# /etc/rc.d/init.d/webmin restart Webブラウザでアクセス https://localhost:10000 し日本語環境へ変換
Debianの場合 Webminサイトを参照
Webminの技術情報(英語) ここから
ファイル共有はオープンソースソフトウェアとして実績のあるSambaを説明します。Sambaの語源は、マイクロソフトのネットワークファイルシステムSMB(Server Message Block)に、2 つの母音を入れて作られたと言われています。
題名: Sambaを使ったサーバの構築(Sambaの基礎からPDC機能まで)
基本の設定や使い方について、参考になります。 ここから
testparm /etc/samba/smb.conf smb.confファイルを指定して設定を確認
pdbedit -Lw 現在 Sambaに登録されているユーザーをsmbpaswwd形式で表示
pdbedit -a ユーザー名 LinuxユーザーをSambaへ登録
コンピュータアカウント(コンピュータ名)の追加 pdbedit -a -m コンピュータ名
パスワードのバッチ入力 pdbedit -t
ユーザの削除 pdbedit -x ユーザ名
smbclient -L Sambaサーバー名 Linuxクライアントから接続、IPアドレスでも可能
smbstatus -d Sambaデーモンの動作状態を調べて表示
findsmb サブネットに存在するSambaサーバーを一覧表示
・指定したコンピュータ名でIPアドレスの取得
nmblookup debian1 <--- マシン名 debian1
querying debian1 on 192.168.0.255
192.168.0.8 debian1<00>
・WINSサーバへの問合せ
nmblookup -R -U 192.168.0.8 WORKGROUP <----- WINSサーバとワークグループ名を指定して問合せ
querying WORKGROUP on 192.168.0.8
0.0.0.0 WORKGROUP<00>
・登録されているNetBIOS名で確認する場合
nmblookup -A 192.168.0.2
Looking up status of 192.168.0.2
MACBOOKPRO13 <03> - B <ACTIVE>
MACBOOKPRO13 <20> - B <ACTIVE>
MACBOOKPRO13 <00> - B <ACTIVE> <---- コンピュータ名
..__MSBROWSE__. <01> - <GROUP> B <ACTIVE> <--- マスタブラウザ
WORKGROUP <1d> - B <ACTIVE>
WORKGROUP <1e> - <GROUP> B <ACTIVE>
WORKGROUP <00> - <GROUP> B <ACTIVE>
MAC Address = 00-00-00-00-00-00
・名前解決時に -S オプションを使う場合
nmblookup -S macbookpro13
querying macbookpro13 on 192.168.0.255
192.168.0.2 macbookpro13<00>
Looking up status of 192.168.0.2
MACBOOKPRO13 <03> - B <ACTIVE>
MACBOOKPRO13 <20> - B <ACTIVE>
MACBOOKPRO13 <00> - B <ACTIVE>
..__MSBROWSE__. <01> - <GROUP> B <ACTIVE>
WORKGROUP <1d> - B <ACTIVE>
WORKGROUP <1e> - <GROUP> B <ACTIVE>
WORKGROUP <00> - <GROUP> B <ACTIVE
MAC Address = 00-00-00-00-00-00
・マスタブラウザを確認 ワークグループ名を指定
nmblookup -B 192.168.0.255 -M WORKGROUP
querying WORKGROUP on 192.168.0.255
192.168.0.8 WORKGROUP<1d>
・マスタブラウザを確認 指定したIPサブネット中のマスタブラウザを検索
nmblookup -B 192.168.0.255 -M -
querying __MSBROWSE__ on 192.168.0.255
192.168.0.8 __MSBROWSE__<01>
・nmblookupコマンドと同様にNetBIOS名の名前解決を実行
net lookup host macbookpro13
192.168.0.2
・ワークグループのマスタブラウザを検索
net lookup master workgroup
192.168.0.8
net cache
・NetBIOSネームキャッシュのエントリを表示
net cache list
Key: NBT/DEBIAN1#20 Timeout: 10:48:56 Value: 192.168.0.8:0 (expired)
Key: NBT/VM2CENTOS6#20 Timeout: 10:48:29 Value: 192.168.0.161:0 (expired)
Key: NBT/*#00.1D.192.168.0.8 Timeout: Tue Apr 30 18:15:13 2013 Value: WORKGROUP (expired)
・特定のエントリを調べる場合
net cache search 'NBT/VM2CENTOS6*'
Key: NBT/VM2CENTOS6#20 Timeout: 10:48:29 Value: 192.168.0.161:0 (expired)
Q: CentOS 6 などでSambaをインストールするときに設定トラブルが起きる場合
A: CentOSではSELinuxが稼働しているので、OFFにするか、SELInuxでポリシーを設定します。OFFにする場合は、/etc/sysconfig/selinux というファイルを編集、 SELINUX=disabled に設定し再起動します。
Q:Linux側から共有ディレクトリやコンピュータが見えない、Windowsからは見える場合
A:もしかすると、SELinuxを無効にするとこの現象がおこる、ということかも。調査中。
Q:smb.conf の設定サンプル
A:サンプルとして CentOS 6.4 Samba smbpasswdでユーザー追加
[global]
unix charset = UTF-8
dos charset = CP932
workgroup = WORKGROUP
server string = Samba Server Version %v
log file = /var/log/samba/log.%m
max log size = 50
hosts allow = 127. 192.168.0.
security = user
passdb backend = tdbsam
[homes]
comment = Home Directories
browseable = no
writable = yes
; valid users = %S
; valid users = MYDOMAIN\%S
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
[share1]
comment = Public Stuff
path = /home/samba
public = yes
writable = yes
printable = no
write list = +staff
[kyoyou2]
comment = Public Stuff
path = /home/share
public = yes
writable = yes
printable = no
write list = +staff
Sambaではいろいろな使い方に合わせて設定が可能です。代表的な環境でのサンプルとして、メモをまとめました。
Sambaインストール
設定ファイルsmb.confの作成、起動
ユーザ作成(LinuxユーザとSambaユーザ) 管理者用 administrator など ユーザ用 user01 など
各ユーザパスワード作成(LinuxユーザとSambaユーザ)
備考: ドメインの名称と種類 Windowsドメイン(NTドメイン、ADドメイン) Sambaドメイン
Sambaインストール
スタンドアロンのドメインコントローラ(PDC)としての設定ファイルsmb.confの作成、起動
ユーザ作成(LinuxユーザとSambaユーザ)
ユーザパスワード作成(LinuxユーザとSambaユーザ)
Sambaでの、UNIXのユーザ・グループとWindowsのユーザ・グループを管理する機能の概要について。
SambaではSambaユーザという独自のユーザを作成し、そのパスワードも設定します。 さらに、SambaサーバがUNIX系(Linuxも含む)の場合はUNIX(Linux)のログインユーザ名とパスワードが必要になります。
つまり、Sambaユーザには必ず対応するUNIX(Linux)ユーザが存在し、ログイン認証後にUNIX(Linux)ユーザとの対応付けが行われます。
また、コンピュータ名も必要となりますので、SambaユーザとUNIX(Linux)ユーザに登録します。 自動登録などの仕組みは別途必要です。
useraddコマンドなどで、Windowsユーザ名と同じ名前をUNIX(Linux)ユーザにパスワード付きで登録
useraddコマンドなどで、Windowsのコンピュータ名(名前の最後に$を付ける)と同じ名前をUNIX(Linux)ユーザにパスワード付き登録
ユーザ名とマシン名(最後に$を付ける)ともにpdbeditコマンドもしくはsmbpasswdコマンドを使います。
追加 pbdedit -a <Sambaユーザ名> 削除 pbdedit -x <Sambaユーザ名> 表示 pbdedit -Lw
Sambaユーザと同じようにUNIX(Linux)グループに対応するSambaグループを作成します。SambaグループはWindowsサーバに存在するローカルグループとして機能します。一般的に、マイクロソフトのWindowsドメインではない環境(ワークグループでのネットワーク運用)では、Sambaグループと言います。
net groupmap add unixgroup=UNIXグループ名 type=local ntgroup=Sambaグループ名 [ comment="<コメント文字>"]
net groupmap modify unixgroup=UNIXグループ名 type=local ntgroup=Sambaグループ名 [ comment="<コメント文字>"]
net groupmap delete ntgroup=<Sambaグループ名>
net groupmap list
net sam createlocalgroup <ローカルグループ名=UNIXグループ名>
net sam list groups
net sam list users
smb.conf にて valid users = @group1 +groiup2 という表現 @、+ でグループ名を指定
グローバルグループの初期設定(NTドメインの標準グローバルグループを作成)
groupadd domadmin groupadd domuser gtoupadd domguest
net groupmap add rid=512 ntgroup="Domain Admin" unixgroup=domadmin type=domain
net groupmap add rid=513 ntgroup="Domain Users" unixgroup=domuser type=domain
net groupmap add rid=514 ntgroup="Domain Guests" unixgroup=domguest type=domain
ユーザの権利 (重要な SeAddUsersPrivilege と SeMachineAccountPrivilege を設定)
net sam rights grant <Sambaユーザ / グループ > <ユーザの権利> -U <管理ユーザ>
net sam rights grant administrator SeMachineAccountPrivilege
net sam rights grant administrator SeTakeOwnershipPrivilege
net sam rights grant administrator SeBackupPrivilege
net sam rights grant administrator SeRestorePrivilege
net sam rights grant administrator SeRemoteShutdownPrivilege
net sam rights grant administrator SePrintOperatorPrivilege
net sam rights grant administrator SeAddUsersPrivilege
net sam rights grant administrator SeDiskOperatorPrivilege
WinbindはWindowsドメインに参加しているSambaサーバ上で、Windowsドメインのユーザ情報に基づいてUNIX(Linux)ユーザの情報を自動的に生成し、NSS(Name Servcie Switch)機能を経由してUNIX(Linux)ユーザの情報を提供するプログラムです。
Winbindを実行させるにはNSS(Name Server Switch)機構が必要となり、サーバのプラットフォームごとに設定方法が異なります。
CentOS5、CentOS6の場合 次のコマンド実行で自動設定されます。 authconfig --enablewinbind --update
Winbindの起動 service winbind restart
Winbindの動作確認 wbinfo -t wbinfo -u wbinfo -g
pam_winbind のインストールと設定は、CentOSの場合 authconfig --enablewinbindauth --update
無効にする場合は authconfig --disablewinbindauth
動作検証は、WindowsドメインのユーザでSSHでSambaサーバへログインします。 ssh -l Windowsユーザ Sambaサーバ
Sambaにはさまざま機能があり、設定方法も複雑な場合があります。単純なサンプル事例で基本をマスターして、さまざま応用にチャレンジしましょう。
Linuxユーザ administrator (グループも作成される) ユーザ名 samba01(グループも作成される) マシン名 samba-pc1
Windowsマシン名 samba-pc1 Windowsユーザ samba01
コンピュータアカウントとLinuxユーザを手動で作成する場合
useradd -s /dev/null -d /dev/null マシン名$
pebedit -a -m マシン名
Sambaグループ(ローカルグループ)の作成
net groupmap add unixgroup=UNIXグループ名 type=local ntgroup=<Sambaグループ名>
グローバルグループの初期設定
groupadd domadmin
groupadd domuser
groupadd domguest
net groupmap add rid=512 ntgroup="Domain Admins" unixgroup=domadmin type=domain
net groupmap add rid=513 ntgroup="Domain Users" unixgroup=domuser type=domain
net groupmap add rid=514 ntgroup="Domain Guests" unixgroup=domguest type=domain
ユーザ権利の設定
net sam rights grant <Sambaユーザ/グループ> <ユーザ権利> -U <管理ユーザ> ※重要なのは SeMachineAccountPrivilege SeAddUsersPrivilege です
net sam rights grant 'Sambaユーザ¥グループ' SeMachineAccountPrivilege -U root
net sam rights grant 'Sambaユーザ¥グループ' SeTakeOwnershipPrivilege -U root
net sam rights grant 'Sambaユーザ¥グループ' SeBackupPrivilege -U root
net sam rights grant 'Sambaユーザ¥グループ' SeRestorePrivilege -U root
net sam rights grant 'Sambaユーザ¥グループ' SeRemoteShutdownPrivilege -U root
net sam rights grant 'Sambaユーザ¥グループ' SePrintOperatorPrivilege -U root
net sam rights grant 'Sambaユーザ¥グループ' SeAddUsersPrivilege -U root
net sam rights grant 'Sambaユーザ¥グループ' SeDiskOperatorPrivilege -U root
ユーザ権利に関する現在の状況を一覧
net sam rights list SeAddUsersPrivilege -U ""%""
ドメインの信頼関係
WondowsドメインとSambaドメインを信頼する
LDAP(Lightweight Directory Access Protocol)はRFC1777で定義されているインターネット標準のプロトコルです。TCP/IPでのディレクトリサービスを提供するためのプロトコルです。
間違えやすいのは、ディレクトリとは、コンピュータのディレクトリ、フォルダーではなく、英語の人名簿、住所録などの意味になります。
idap_buind: Invalid credentials (49) のエラーが出る場合
# ldapadd -x -D "cn=Manager,dc=my-company,dc=com" -W -f ./base.ldif
Enter LDAP Password:
ldap_bind: Invalid credentials (49)
このエラーはさまざま要因で起こります。 例えば、slapd.conf ファイルの設定が間違っている場合などは、以下のテストコマンドで設定内容を確認します。
# slaptest -u -d 64 -f ./slapd.conf
また、パスワード設定が合っていない場合もあります。
スキーマ設定のテスト
slaptest [-v] [-d debuglevel] [-f configfile] [-F configdir] [-o <name>[=<value>]] [-n databasenumber] [-u]
例えば # slaptest
config file testing succeeded
データのバックアップ
環境 : CentOS 6.4 OpelLDAP 2.4.23-32.el6_4
注意 : LDAPのデータをバックアップおよびリストアする場合は必ずLDAPサーバプロセス slapd を停止します。
1)データベースのディレクトリをバックアップ、リストアする場合 ただし、リストアしたデータはバイナリーデータなので、起動時にパーミッションなどのエラーや機種が違うとエラーが起こります。注意が必要です。お薦めはLDIF形式が安全です。
LDAPのデータは /etc/openldap/slapd.conf で指定した directory /var/lib/ldap に保存されます。
バックアップ tar形式で
cd /var/lib tar cvzf ldap-data.tar.gz ./ldap
リストア
cd /var/lib tar xvzf ldap-data.tar.gz
2) LDIF形式でバックアップ、リストアする場合
参考情報 : 次のサイト もしもに備えるバックアップ、リストア
LAM (Ldap Account Manager) Webブラウザで管理できる 開発元のサイト
GOsa2 LDAPデータベースでアカウントやシステムを管理できるフレームワーク 開発元のサイト
Webmin Linuxのシステム管理ツールで、LDAP、SAMBAもサポート
LDAP Admin WindowsベースのLDAP管理ツール SAMABも対応
Apache Directory Studio Apache FoundationのLDAPプロジェクトとして開発されている 開発元のサイト
OpenLDAPはCUIべーづで初心者には大変わかりにくい、覚えるまで時間がかかることが多い。 開発元のサイト
そこで、OpenLDAPをGUIで管理できるオープンソースソフトウェアのツールLAM(Ldap Account Manager)を使うと便利です。
必要なパッケージをインスト-ルします httpd php php-ldap php-mhash(php 5.3 ではサポートされていない可能性がある)
# wget "http://sourceforge.net/projects/lam/files/LAM/4.2.1/ldap-account-manager-4.2.1-0.fedora.1.noarch.rpm/download?use_mirror=jaist&download="
# rpm -ivh ldap-account-manager-4.2.1-0.fedora.1.noarch.rpm # mkdir -p /var/www/html/lam/config # cd /var/www/html/lam/config # cp -ar /var/lib/ldap-account-manager/config/config.cfg_sample ./config.cfg # cp -ar /var/lib/ldap-account-manager/config/lam.conf_sample ./lam.conf
serverURL: ldap://localhost:389 admins: cn=Manager,dc=my-domain,dc=com treesuffix: dc=yourdomain,dc=org types: suffix_user: ou=People,dc=my-domain,dc=com types: suffix_group: ou=group,dc=my-domain,dc=com types: suffix_host: ou=machines,dc=my-domain,dc=com types: suffix_smbDomain: dc=my-domain,dc=com