OSS

オープンソースソフトウェア
 
オープンソースソフトウェア(OSS)について、さまざまアプリケーション、ツールなどの技術的な情報です。
 
たとえば、MySQLやPostgreSQLなどのデータベース、グラフィックス関連ソフトのGIMPやInkspace、セキュリティで重要な迷惑フィルターのPOPFile、プログラミング言語としてJavaやスクリプト言語のPHP、統合開発環境としてのQTやEclipse、ユーザーログイン管理データベースのLDAP、eラーニングソフトのMoodle、などなど。
 
主なカテゴリ
 
システム管理  Webmin
 
Webサーバ  Apache  Nginx
 
 
 
 
 
 
 
 
 
 
 
 
 

 

 

タグ: 

オープンソースソフトウェア: 

Database

データベース

1) MySQL

2) PostgreSQL

 

 

 

MySQL

データベースMySQLについて

 

インストールおよび環境設定

 ・CentOS / RedHat  ・Debian  ・Windows  ・Macintosh

 

  • MySQL 5.5 から 5.7へアップグレード(Debian Jessieの場合)

まず、データベースのバックアップ、現状の確認、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

 

  • MySQL 5.7 から 8 へのアップグレード(Ubuntu 18.04の場合)

アップグレードの手順 ここを参考に  

  • Add MySQL APT repository
  • Update APT index and install MySQL server
  • Manage mysql.service

 

  • Mariadb-server のインストール(Debian 10 buster)

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を再インストールすることも解決策です。

 

  • MariaDB-server 10.5 へのアップグレード (Debian 9 Stretch)

アップグレードの手順  ここを参考に

  • Data Backup
  • uninstall old version
  • install new version
  • start server
  • upgrading data directory
  • test 

 

  • MariaDB 10.1 から 10.3 へのアップグレード (Debian 9)

アップグレードの手順  ここを参考に

 

  • MariaDB-server 10.5 へのアップグレード (Debian 10 Buster)

アップグレードの手順  ここを参考に

  • Data Backup
  • uninstall old version
  • install new version
  • start server
  • upgrading data directory
  • test 

 

  • MariaDB の my.cnf (Ubuntu Ubuntu 20.04.6 LTS)

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

 

local以外の外部から接続する設定

作業中です。

 

 

コマンドの基礎

 

MySQLユーザーのパスワードを設定

環境: 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

 

 

オープンソースソフトウェア: 

phpMyAdmin

phpMyAdminについて

 

インストールについて

 

環境: CentOS 5.5   PHP 5.3.4  MySQL 5.1.54  phpMyAdmin 3.3.8.1

 
ダウンロードした phpMyAdmin-3.3.8.1-all-languages.tar.gz を解凍し、phpMyAdmin-3.3.8.1-all-languages という解凍後のディレクトリをApacheのDocumentRootにコピーもしくは移動させて、ディレクトリ名を phpMyAdmin と設定します。
 
phpMtAdminのディレクトリにある、config.sample.inc.phpのファイルをコピーして、config.inc.php というファイル名にします。その後、以下の設定をします。
 
以下のところに、使用するURLを記入します。
$cfg['PmaAbsoluteUri'] = 'http://localhost/phpMyAdmin/';
 
スタンドアロン的に使う場合の簡単な方法として、以下のcookieではなくhttpで設定できます。テストとして使用した場合。
$cfg['Server'][$i]['auth_type'] = 'cookie';
 
ファイルを保存後、http://....DocumentRoot/phpMyAdmin/  でログインし、MySQLのユーザー名とパスワードでログインします。 インターネット上ではセキュリティを意識した追加の設定をします。

 

Debianへインストール

環境 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 など

 

タグ: 

オープンソースソフトウェア: 

PostgreSQL

データベース PostgreSQL について

 

インストール

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

 

 

タグ: 

オープンソースソフトウェア: 

Frontend

Webサイトのフロントエンド

 

フロントエンドの開発環境

Gatsby

フロントエンドの開発言語

Angular

 

React

 

Vue.js

 

Node.js

 

 

タグ: 

Gatsby

Gatsby

Gatsby サイト https://www.gatsbyjs.org/

 

チュートリアル
  • Build blazing fast web applications with Gatsby 101

Gatsby + Drupal https://gatsbyguides.com/tutorial/

 

  • Integrating Headless Drupal with Gatsby (JSON:API) - Part 1

https://www.qed42.com/blog/integrating-headless-drupal-gatsby-jsonapi-part-1

 

 

Gatsby Cli

 

Gatsby起動コマンドの設定

develop [オプション] 

-H, --host ローカルホスト  デフォルトは localhost
-p, --port ポートの設定   デフォルトは 8000
-o, --open Open the site in your (default) browser for you
-S, --https   HTTPSを使用する場合
 
例えば gatsby develop --port=8080 --host=192.168.1.100

 

 

タグ: 

Git

GitHubについて

 

ホームページ https://github.com

 

FAQ

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

 

タグ: 

オープンソースソフトウェア: 

Groupware

オープンソースソフトウェアのグループウェア

 

国産のグループウェアAipo(アイポ) の技術的な話題について  ここから

 

 海外のグループウェア

 

オープンソースソフトウェア: 

Aipo

グループウェアAipoの技術的な話題

インストール :

サーバー環境 Windows(32ビット)、Linux(32ビット)

 

 

Learning

★教育、eラーニング、Webinarなど

 

Mail

メール

SMTPサーバー、POPサーバーなど、メールサーバーに関する情報

 

SMTPメールサーバー

 

qmail

役立つ情報

 

  • Lifw with qmail

http://www.lifewithqmail.org/

 

 

 

  • sqmail install guide for Debian 9 (stretch)

System vorbereiten, sqmail mit Abhängigkeiten installieren

https://www.oliwel.de/basissystem-und-sqmail/

 

  • The updated qmailrocks.org qmail Installation guide for Debian 8 (Jessie)

http://qmailrocks.thibs.com/

Install Ezmlm-idx

https://qmailrocks.thibs.com/ezmlm-idx.php

 

  • qmailを使った学校内メールシステム事例

E-mail: The SUNY Potsdam Model: Scalable Open-Source Infrastructure

http://www.fritzhardy.com/projects/email/

 

  • qmailのインストール設定事例

series of “Nifty and Minimally Invasive qmail Tricks”

https://schmonz.com/2017/01/18/qmail-smtp-auth-tls-redux/

Amitai's qmail stuff

https://schmonz.com/qmail/

 

  • notqmailのインストール設定事例

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のインストール設定事例 qmail + vpopmail + Dovecot | Roberto's qmail notes

http://notes.sagredo.eu/

qmail + vpopmail + Dovecot   http://notes.sagredo.eu/node/8

 

  • eQmail

eQmail

https://blog.dyndn.es/doku.php/blog/2014/10/18_eqmail_1.08

 

  • CentOSにQmailをインストール

qmail(with smtp auth) + vpopmail + ezmlm-idx + dovecot + qmailadminなサーバ構築

https://jw7.org/2015/06/21/qmail/

 

  • qmail + vpopmail + qmailadmin インストール

http://www.ksknet.net/qmail/qmail_vpopmail.html

 

  • Installing ezmlm on Debian squeeze with existing qmail and vpopmail system

http://geroyblog.blogspot.jp/2013/04/installing-ezmlm-on-debian-squeeze-...

 

  • The updated qmailrocks.org qmail Installation guide for Debian 8 (Jessie)

http://qmailrocks.thibs.com/

 

日本語での情報

  • qmail によるメールサーバ構築(日本語)

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/

 

  • 「実用qmailサーバ運用・管理術」

http://www.atmarkit.co.jp/flinux/index/indexfiles/qmailindex.html

 

  • Install and use qmqtool

Qmqtool is a utility designed for viewing and safely modifying the contents of a qmail queue.

http://qmailrocks.thibs.com/qmqtool.php

 

  • Free Email-related Packages Andrew Richards

http://free.acrconsulting.co.uk/email/index.html

 

  • openQmail

http://openqmail.org/doku.php

 

  • qmail のインストールと設定

https://itpass.scitec.kobe-u.ac.jp/hiki/hiki.cgi?%5BITPASS2018%5Dqmail+%...

 

  • qmail Add-on software

https://acrconsulting.co.uk/email/freesw.html

 

  • Qmail over SSLでメール通信を暗号化する(CentOS) 第 1 篇〜第 6 篇

https://www.jacepark.com/building-mail-servers-with-qmail-over-ssl-in-ce...

 

  • qmail + vpopmail + smtpauth + courier-imap インストール(福岡大学)

http://okkun-lab.fu-u.jp/wiki/?Tips/Linux/qmail/smtpauth

 

  • Qmail (netqmail) for CentOS 7. and vpopmail,tcpserver,daemontools

https://server-recipe.com/1194/

https://server-recipe.com/qmail/

 

ezmlm-idx

https://untroubled.org/ezmlm/

 

 

Postfix

Debian 11でのインストール手順は ここから

PostfixAdmin インストール手順 ここから

 

 

タグ: 

オープンソースソフトウェア: 

Postfix インストール手順

Postfixのインストール

 

インストール

環境: 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 

 

Tips
  • Postfixのパラメーター myorigin について

From: ドメイン名は、myhostname パラメータではなく、Postfix の myorigin パラメータ (別名システム メール名) によって決定されます。

 

  • TelnetでTCPポート25(outbound)がブロックされてるか確認

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)

 

  • Postfixで必要になる主なTCPポートは

sudo ufw allow 25,80,110,143,443,587,465,143,993,995/tcp

 

  • TCPポートスキャン

https://www.ipvoid.com/port-scan/

 

  • Postfix のバージョン確認(postconfコマンド)

$ sudo postconf | grep mail_version
mail_version = 3.5.13
milter_macro_v = $mail_name $mail_version

 

  • Postfixのデフォルトサイズの値確認(postconfコマンド)

$ 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

 

  • postfix[2199]: fatal: bad string length 0 < 1: html_directory = のエラー

main.cf で html_directory = no

 

  • dovecotでユーザ認証ができない場合

デフォルトがユーザー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

 

  • dovecotでメールボックスを使えるユーザ一覧表示

sudo doveadm user '*'

 

  • dovecotを自動的にリスタートさせる

新規にディレクトリを作成 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

 

  • 電子メールとSMTPサーバーの設定を確認

email checker で確認します。 https://network-tools.com/email-tests/

 

  • Virtualドメインの設定

/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
noreplay@hogehoge.jp      user1
webmaster@hogehoge.jp    user2

# postmap /etc/postfix/virtual

ハッシュ化された中身を見る場合は  # strings /etc/postfix/virtual.db

 

  • Apacheのデフォルトドメインを停止する(仮想ドメインを使う場合)

他の仮想ホストに干渉する可能性があるため、デフォルトの仮想ホストを無効にします。

sudo a2dissite 000-default.conf

 

  • CertbotコマンドでLetsencryptの証明書を取得(Apacheの場合)

$ 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

  • CertbotコマンドでLetsencryptの証明書を取得(Nginxの場合)

$ 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

 

  • Certbotの証明書再発行を自動化

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

 

  • PostfixとDovecotで複数のドメインの証明書を設定

一つの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 you@example.com

TLS証明書を取得 Nginxの場合

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp -d mail.ドメイン1.com,mail.ドメイン2.com --cert-name mail.ドメイン1.com --email you@example.com

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をメールソフトとして使う場合のSMTPサブミッションサービスの設定(master.cf)

一般的な設定と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)。

 

 

 

タグ: 

オープンソースソフトウェア: 

Mailman

Mailman3

 

インストール

環境: 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: changeme@example.com ー> 自分のメールアドレスに変更

 

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の登録確認が最初に必要です。

 

メーリングリストの作成

 

Mass operationsの設定

登録するメールアドレスは、以下のような形式で登録します。
 John Doe <jdoe@example.com>
 "John Doe" <jdoe@example.com>
 jdoe@example.com (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]

 

 

 

FAQ
  • Q:メーリングリストを作成すると公開状態になるので、非公開にしたい。

 A:作成したメーリングリストで、「設定」ー>「List Identity」ー>「Show list on index page」ー>「No」をチェックします。アーカイブは「設定」ー>「Archiving」ー>「Private archives」もしくは「Do not archive this list」を選択します。

  • Q:Mailman3の再起動は

 A: systemctl restart mailman3 と systemctl restart mailman3-web

 

タグ: 

オープンソースソフトウェア: 

PostfixAdmin

PostfixAdminについて

概要 

オープンソース(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...

 

アップデート

Postfixadmin 3.3.11 から 3.3.13へアップデート

ダウンロード 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';

 

 

タグ: 

オープンソースソフトウェア: 

PostfixでのSPF、DKIM、DMARCの設定

PostfixでのSPF、DKIM、DMARC

 

SPF

 

 

FAQ

Q: digやnslookupコマンドでSPF設定内容を確認する方法

A: digコマンドの場合 dig ドメイン名 tx

A: nslookupコマンドの場合  nelookup ドメイン名 txt

 

 

 

DKIM

 

作成した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 ドメイン名

 

 

FAQ

Q: digやnslookupコマンドでDKIM設定内容を確認する方法

A: digコマンドの場合 dig selector._domainkey.ドメイン名 txt

A: nslookupコマンドの場合  nslookup selector._domainkey.ドメイン名 txt

 

 

 

DMARC

 

FAQ

Q: digやnslookupコマンドでDMARC設定内容を確認する方法

A: digコマンドの場合 dig _dmarc.ドメイン名 txt

A: nslookupコマンドの場合  nelookup _dmarc.ドメイン名 txt

タグ: 

オープンソースソフトウェア: 

qmail install

qmailのインストール

qmail、netqmail, notqmail などのインストール方法

 

qmail 1.03 によるインストール

環境:

このインストール作業は、以下のサイトを参考にしました。

 

環境

qmail 1.03+ vpopmail + ezmlm + ezmlm-idx

Debian 10 buster で、2021年7月25日に実施。なるべく2021年7月時点での最新版ソースを使ったインストールになります。

事前に、Psotfixやexim4などのSMTPサーバーがアンインストールされていることを確認して、インストールしました。

設定サンプルとして、サーバー名 host.example.jp  ホスト名 host ドメイン名 example.jp で説明します。

 

opensslの導入

opensslのインストール

事前に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のソースパッケージにsslのパッチを適用

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

  • $ patch -p0 < ../ucspi-tcp-ssl-20050405.patch
  • $ patch -p1 < ../ucspi-tcp-0.88.a_record.patch
  • $ patch -p1 < ../ucspi-tcp-0.88.nobase.patch
  • $ make実行   make

tcpserver実行ファイルをコピーする

$ sudo cp tcpserver /usr/local/bin/tcpserver-ssl

 

- - - 

※以下の作業はnetqmailのインストール時にも実行させているので重複を確認する

smtp over ssl を使用する場合のために, qmail にsmtp-auth のパッチをあてる

以前qmail のソースを展開したディレクトリに移動し, パッチをあてる。

tar zxvf netqmail-1.06.tar.gz

cp -ar netqmail-1.06 netqmail-1.06_smtps

cd netqmail-1.06_smtps

- - - 

 

※ここからはrootで作業します。

qmailのインストール前にqmailで必要なグループ・ユーザーの作成

# 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がソースプログラムからコンパイルしてインストール

qmail 1.03のソースダウンロード: wget https://cr.yp.to/software/qmail-1.03.tar.gz

パッチのインストール

qmail-1.03.tar.gzを解凍し、# cd qmail-1.03 で以下のパッチを適用する

  • # patch -p1 < ../qmail-date-localtime.patch
  • # patch -p1 < ../qmail-103.patch
  • # patch -p1 < ../qmail-smtpd-relay-reject

パッチの内容は

  • qmail-103.patch (DNS応答に関するパッチ)
  • qmail-date-localtime.patch (ローカルタイムに関するパッチ)
  • qmail-smtpd-relay-reject (リレーサーバとして利用させないためのパッチ)
  • これは迄です。qmail-smtpd-auth-0.31.tar.gz (SMTP認証をqmail-smtpdに追加、smtp-auth のためのパッチ, 後ほど適用する. 詳しくは, こちらを参照)

 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のパッチ適用、ビルド・インストール

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の動作で必要な設定として、以下のように記載します。

  • defaultdomain

example.jp

to ヘッダなどにドメイン名が省略された場合に保管されるドメイン名

  • locals

localhost
localhost.example.jp
host.example.jp
example.jp

qmailがメールを受け取るドメインを指定するファイルです。受信するホスト名・ドメイン名の設定 qmail-send が使用します。

  • rcpthosts

localhost
example.jp
.example.jp

SMTPのメールアドレス宛先を伝えるRCPTコマンドを許可するドメインを指定します。ここで指定されないドメインへのメール送信はsmtpサービスが拒否。他のSMTPサーバーより自ドメイン宛に送信されてきたメールや、ローカル内で送受信しているメールは受け取りますが、このSMTPサーバーを使って他のドメインへのメール送信はできません。これによりスパムメールの中継に利用出来なくなります。但し、/home/vpopmail/etc/tcp.smtpのRELAYCLIENT の設定によりここで指定しないドメインへのメール送信を可能にします。 受信するホスト名・ドメイン名の設定 qmail-smtpd が使用します。

  • me

host.example.jp

インストールしたサーバーのFQDN

  • plusdomain

example.jp

ドメイン名が+で終わっている場合に付加されるドメイン名。例えば、「user@host+」なら「user@host.example.jp」と置換。 qmail-inject が使用します。

上記の設定で、不正中継対策も含んだ最小限の動作環境になります。

そのほかの設定項目として、パーミッションは他のファイルと同様な chmod 644

 /var/qmail/control/databytes 内容は 100000000 100MB以上のメールは拒否

/var/qmail/control/queuelifetime 内容は 259200

登録したドメイン名を確認できます。 # /var/qmail/bin/qmail-showctl

 

tcpserverのインストール

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のインストール

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 before SMTP とは、送信の前にPOPで認証を行い、それからSMTPリレーを許可する仕組みです。POP3デーモン自体はqmailのインストールと同時にインストールされますす。/var/qmail/bin/qmail-pop3dがそれに当たります。しかし、このデーモン自体には認証を行う機能がないため、認証機能を補う必要があります。平文パスワードによる最も簡単な認証確認の手段としては、D. J. Bernstein氏がqmailとともに提供しているcheckpasswordがあります。

 

APOP(Authenticated Post Office Protocol)について

APOPはPOP3のログイン認証を行うコマンドです。POP3同様qmail-pop3dを使用しますが、認証機能を付加するにはAPOPに対応しているものを選択する必要があります。OHIRA, Shinya氏が提供しているcheckpwはその一つです。

checkpasswordでは/etc/shadowに登録されているパスワードを基に認証(PAM)を行いましたが、checkpwではパスワードを管理するために外部ファイルを使います。仮にPOPパスワードが漏れてしまってもシステムのパスワードまで盗まれるのを防げるため、ほかのサービスへの被害を最小限に抑えられます。

checkpwの場合、ユーザーのPOPパスワードはユーザーが各自で管理できるように、ユーザーのMaildir/下にファイルを保存します。

 

POP before SMTPの設定

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 name@example.jp
Please enter password for name@example.jp:
enter password again:

管理者向けメールの転送設定

postmasterやroot宛のメールの転送設定を行います。この作業は必須ではありませんが、エラーなどでroot宛などに送られたメールも自分のメールユーザーで受信でき、便利です。root宛のメールをhoge@example.jpに転送する設定です。

/home/vpopmail/domains/仮想ドメイン名のディレクトリに、.qmail-rootファイルを作成し、以下の内容を記述します。ファイル名先頭の"."は必須です。パーミッションを修正。ファイルの命名は".qmail-"+ユーザー名です。

&hoge@example.jp
# chown vpopmail:vchkpw .qmail-root

ユーザーは仮想ユーザーとして作成していなくてもかまいません。webでよく使うwebmaster@example.jpなどもこの転送指定のファイルで可能です。

また、/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ファイルを作成します。 711710は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

 

 

 

 

 

 

 

 

 

 

 

////////////// 未作業です

qmailに smtp-auth のパッチ

念のために 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 への配送

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でないとメール配送時にエラーになるようです。

 

インストールした実行ファイルへのPATHの設定

/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

 

マニュアルのmanを有効にする

/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の起動

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 hoge@netqmail.ijinden.jp Thu Jul 29 06:08:02 2021
Return-Path: <hoge@netqmail.ijinden.jp>
Delivered-To: hoge@netqmail.ijinden.jp
Received: (qmail 911 invoked by uid 1000); 29 Jul 2021 15:08:02 +0900
Date: 29 Jul 2021 15:08:02 +0900
Message-ID: <20210729060802.910.qmail@netqmail.ijinden.jp>
From: hoge@netqmail.ijinden.jp
to: hoge@netqmail.ijinden.jp

 

ローカル配送テストその2

存在しない宛先に送る。バウンスメールが~hoge/Mailbox に送られてくれば大丈夫です。

echo to: nonexisten | qmail-inject
lv ~/Mailbox

From hoge@netqmail.ijinden.jp Thu Jul 29 06:08:02 2021
Return-Path: <hoge@netqmail.ijinden.jp>
Delivered-To: hoge@netqmail.ijinden.jp
Received: (qmail 911 invoked by uid 1000); 29 Jul 2021 15:08:02 +0900
Date: 29 Jul 2021 15:08:02 +0900
Message-ID: <20210729060802.910.qmail@netqmail.ijinden.jp>
From: hoge@netqmail.ijinden.jp
to: hoge@netqmail.ijinden.jp

From MAILER-DAEMON Thu Jul 29 07:00:04 2021
Return-Path: <>
Delivered-To: hoge@netqmail.ijinden.jp
Received: (qmail 1044 invoked for bounce); 29 Jul 2021 16:00:04 +0900
Date: 29 Jul 2021 16:00:04 +0900
From: MAILER-DAEMON@netqmail.ijinden.jp
To: hoge@netqmail.ijinden.jp
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.

<nonexisten@netqmail.ijinden.jp>:
Sorry, no mailbox here by that name. (#5.1.1)

--- Below this line is a copy of the message.

Return-Path: <hoge@netqmail.ijinden.jp>
Received: (qmail 1041 invoked by uid 1000); 29 Jul 2021 16:00:04 +0900
Date: 29 Jul 2021 16:00:04 +0900
Message-ID: <20210729070004.1040.qmail@netqmail.ijinden.jp>
From: hoge@netqmail.ijinden.jp
to: nonexisten@netqmail.ijinden.jp

 

ローカル配送テストその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 hoge@netqmail.ijinden.jp

hoge@netqmail.ijinden.jp にバウンスが来ていることを確認する.

lv ~hoge/Mailbox

 

POP IMAP SMTP ezmlmのインストール

次のページへ

POP / tcpserver
SMTP / tcpserver
VMailMgr
ezmlm
imap dovecot
notqmail install
qmail FAQ
qmailadmin
vpopmail

 

 

タグ: 

オープンソースソフトウェア: 

POP / tcpserver

POP(tcpserver)のインストール

POPはtcpserverから起動されます。tcpserverはucspi-tcpパッケージの一部として提供されており、inetdなどの従来のサービス起動プロセスよりもDoS攻撃などにも対応できるように同時接続制限が設定できる、制御ファイルは独自データベースファイル(cdb)を採用しているため、高速な処理が可能、設定変更にサービス再起動が必要ない、などメリットがあります。

POPでメールを読む際にパスワードの暗号化でapopをインストールします。

 

POPソース、コンパイル

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からの呼び出し

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

 

~/Maildir/ への配送

環境変数の設定

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: 接続の保護なし
認証方式: 暗号化されたパスワード認証 

 

 

 

タグ: 

オープンソースソフトウェア: 

SMTP / tcpserver

SMTP (tcpserver)

tcpserverの設定

 

タグ: 

オープンソースソフトウェア: 

VMailMgr

仮想ドメイン環境のVMailMgr

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...

 

VMailMgrのインストール

以下のサイトに過去のソースがあります。

http://untroubled.org/vmailmgr/current/

ソースのダウンロード: wget http://untroubled.org/vmailmgr/current/vmailmgr-0.97.tar.gz

 

 

 

タグ: 

オープンソースソフトウェア: 

ezmlm and ezmlm-idx

ezmlm

ezmlmは、qmailの開発者D. J. Bernstein氏により作成された大規模対応のメーリングリストで、qmailのMaildirにも対応し、fmlやMajordomoに比べ管理も容易です。

 

ezmlmのインストール

環境: 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のメーリングリストのタイトルに連番で番号を表示させる設定

 

 

ezmlm-idx

ezmlm-idxは、ezmlmを拡張するパッチプログラムで、Frederik P.Lindberg氏によって開発・メンテナンスされています。ダイジェストリストを作成したり、Subjectを加工したりできるようになります。

詳しい情報: http://untroubled.org/ezmlm/

 

ezmlm-idxのインストール

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

 

Webツール

ezmlm-browseのインストール

ダウンロード: 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のコマンドで取得したほうが、安全、安心だと思います。

ダイジェストメールの有効化

ダイジェストメールの場合は「ml2-digest-subscribe@example.jp」になります。同様に、ダイジェストメールをやめるには「ml2-digest-usubscribe@example.jp」に空メッセージを送信します。

※メッセージやタイトルなどで文字化けが起きる場合は、メールソフトでのテキストエンコーディングで、Unicodeに設定します。

123 から145のメッセージを取得 メーリングリスト名-get.123_145@example.jp

123 から145のインデック付のメッセージを取得 メーリングリスト名-index.123_145@example.jp

 

 

autoresponderのインストール

参照した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:」を使用

 

 

 

 

 

タグ: 

オープンソースソフトウェア: 

imap dovecot

imap (Dovecot)インストール
Dovecotインストール

 

 

 

タグ: 

オープンソースソフトウェア: 

notqmail install

notqmailインストール

このページは古い内容です、2022年7月の最新版のページへ ここから

notqmaiのインストールは、事前にSSL証明書(インストールしたサーバー独自の)をインストールした環境で行います。

例えば、OpenSSLを使って、秘密鍵、サーバー証明書、公開鍵など。

qmailadminをインストールするために、Webサーバー(Apache)とSSL証明書を設定します。サーバーのIPアドレスでSSL証明書を使う場合はサーバー自身の証明書を使い、もし、ドメイン名でSSL証明書を使う場合は、Let’s Encryptの   https://certbot.eff.org/  を設定してからインストールします。 今回はサーバーのIPアドレスを使う方法でインストールします。

参考にしたサイト: 

 

notqmailのインストール

インストール作業はrootアカウントです。OSはDebian 10 busterです。

自ホストを host.example.jp、自ドメインをexample.jp としています。メールサーバを運用する場合、DNSの設定が必須です。DNSに下記のようにドメインに対するMXを設定してください。

IN      MX      10    host.example.jp. 

とりあえず動かすだけならMXは必須ではありませんが、その場合user@example.jpではサーバへの配送は行われません。user@host.example.jpのような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の動作で必要な設定として、以下のように記載します。

  • 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+」なら「user@host.example.jp」と置換。 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 ‘xxx@example.com’ > .qmail-root
# echo -n ‘xxx@example.com’ > .qmail-postmaster
# echo -n ‘xxx@example.com’ > .qmail-mailer-daemon

 

Maildirへの移行設定

ユーザーごとに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の動作確認

暫定的に動作確認するために、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: root@host.example.jp | /var/qmail/bin/qmail-inject

 

tcpserverのインストール

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

 

cdbの基になるファイルの作成

/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

 

tcpserverによるqmailの起動(動作検証中!)

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の代表的なオプション

-v  すべてのメッセージを出す
-u  uid ユーザーIDをuidに切り替える
-g  gid グループIDをgidに切り替える
-H  逆引きをしない(リモートホスト名を調べない)
-R  ident(接続したサーバのユーザー情報について、付加的な情報を返す)しない
-x  /etc/tcp.cdb cdbデータベース(/etc/tcp.cdb)で制御する
-c  limit 最大同時接続数をlimitに設定する(デフォルトは40)
-P  逆引き、正引きで相手の正当性を調査する

 

vpopmailのインストール

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

 

crontabに設定

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 user@xxx.com

「@」以降のドメインが登録されたものでない場合はエラーになります。ここで設定したパスワードを変更する場合は、vpasswdコマンドを使用します。

バーチャルユーザーを削除する場合は、vdeluserコマンドを使用します。

# cd ~vpopmail/bin
# ./vdeluser xxx@xxx.com

バーチャルドメインを削除する場合は、vdeldomainコマンドを使用します。

# cd ~vpopmail/bin
# ./vdeldomain xxx.com

※一般的には「@」以前がユーザー名になりますが、vpopmailを使用した場合は「メールアドレスそのものがユーザー名」になります。

 

 

貼り付け

////////////////////  以下は未検証です、作業中 

vpopmailのユーザーでログイン  # su – vpopmail

postmasterの設定

$ cd /home/vpopmail/domains/example.com/postmaster/
$ echo -n ‘xxx@example.com’ > .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 ‘xxx@example.com’ > .qmail-root

パーミッションは vpopmail vchkpw になっているか確認し、なっていなければ 

chown -R vpopmail:vchkpw .qmail-root

chmod -R 600 .qmail-root

/////////////////////////////    <---- ここまで

 

 

exim4 やPostfixのアンインストールとqmail設定

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: xxx@xxxx.com | /var/qmail/bin/qmail-inject

echo "Hallo" | /var/qmail/bin/sendmail  -v xxxx@xxx.com

 

Daemontoolsインストール

展開したディレクトリが実行ファイルの環境になり、/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/下にさらにシンボリックリンク

systemctl 用のdaemontools を設定します

/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は検証中です。まだ未完成

 

 

 

タグ: 

オープンソースソフトウェア: 

notqmailインストール修正版

notqmailインストール修正版(2022年7月)

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は必須ではありませんが、その場合user@example.jpではサーバへの配送は行われません。user@host.example.jpのようなFQDN(Fully Qualified Domain Name:完全修飾ドメイン名)を用いてテストしてください。また、その場合、host.example.jp自体はDNSに登録されている必要があります。

念のために、サーバーのホスト名 host.example.jp を /etc/hosts に設定します。

 

notqmailのインストール(バイナリーパッケージの場合)

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バイナリーの場合必要なし

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 ..

 

Maildirへの移行設定

ユーザーごとに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の動作で必要な設定として、以下のように記載します。

  • 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+」なら「user@host.example.jp」と置換。 qmail-inject が使用します。

上記の設定で、不正中継対策も含んだ最小限の動作環境になります。

登録したドメイン名を確認できます。

追加機能で必要な設定もこのコントロールファイルで設定します。

  • virtualdomains

example.com:example.com

  • spfbehavior

1

 

 

 

起動の準備

必要ないかも ここから ー->

初期の管理アカウント設定

# cd ~alias
# touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
# chmod 644 .qmail*

postmaster、MAILER-DAEMON、rootあてのメールは/var/qmail/aliasに保存ではなく、別のメールアドレスへ送信する設定にします。各ファイルにメールアドレスを設定します。echoで代入すると文字のごみができることがあるので、ファイルをエディタで編集するほうが安全のようです。

# echo -n ‘xxx@example.com’ > .qmail-root
# echo -n ‘xxx@example.com’ > .qmail-postmaster
# echo -n ‘xxx@example.com’ > .qmail-mailer-daemon

<--- ここまで 

 

qmailの動作確認

暫定的に動作確認するために、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: root@host.example.jp | /var/qmail/bin/qmail-inject

 

tcpserverのインストール

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

tcpserverの設定

ユーザー qmaild のユーザーID(UID) と グループ nofiles グループID(GID)を調べます。UIDとGIDはインストール環境により異なります。

# id -u qmaild
109
# id -g qmaild
115

 

tcpserverにおけるリレー設定: cdbの基になるファイルの作成

/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

 

----> ここから必要ないかも

tcpserverによるqmailの起動(動作検証中!)

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の代表的なオプション

-v  すべてのメッセージを出す
-u  uid ユーザーIDをuidに切り替える
-g  gid グループIDをgidに切り替える
-H  逆引きをしない(リモートホスト名を調べない)
-R  ident(接続したサーバのユーザー情報について、付加的な情報を返す)しない
-x  /etc/tcp.cdb cdbデータベース(/etc/tcp.cdb)で制御する
-c  limit 最大同時接続数をlimitに設定する(デフォルトは40)
-P  逆引き、正引きで相手の正当性を調査する

 

<-- ここまで 必要ないかも

 

vpopmailのインストール

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

 

crontabに設定

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

ここまで 未確認です <---

 

 

仮想ドメインのユーザー追加・削除(この時点ではユーザー追加まで動作検証がOKですが、それ以外は未完成です!)

ユーザーを追加(ユーザー追加できませんでした)

# /home/vpopmail/bin/vadduser user@xxx.com

「@」以降のドメインが登録されたものでない場合はエラーになります。ここで設定したパスワードを変更する場合は、vpasswdコマンドを使用します。

バーチャルユーザーを削除する場合は、vdeluserコマンドを使用します。

# cd ~vpopmail/bin
# ./vdeluser xxx@xxx.com

バーチャルドメインを削除する場合は、vdeldomainコマンドを使用します。

# cd ~vpopmail/bin
# ./vdeldomain xxx.com

※一般的には「@」以前がユーザー名になりますが、vpopmailを使用した場合は「メールアドレスそのものがユーザー名」になります。

 

ここから 必要ないかも --->

貼り付け

////////////////////  以下は未検証です、作業中 

vpopmailのユーザーでログイン  # su – vpopmail

postmasterの設定

$ cd /home/vpopmail/domains/example.com/postmaster/
$ echo -n ‘xxx@example.com’ > .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 ‘xxx@example.com’ > .qmail-root

パーミッションは vpopmail vchkpw になっているか確認し、なっていなければ 

chown -R vpopmail:vchkpw .qmail-root

chmod -R 600 .qmail-root

/////////////////////////////    <---- ここまで

 

 

exim4 やPostfixのアンインストールとqmail設定

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: xxx@xxxx.com | /var/qmail/bin/qmail-inject

echo "Hallo" | /var/qmail/bin/sendmail  -v xxxx@xxx.com

<-----  ここまで 必要ないかも

 

 

Daemontoolsインストール

展開したディレクトリが実行ファイルの環境になり、/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/下にさらにシンボリックリンク

systemctl 用のdaemontools を設定します

/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 FAQ

qmail 便利なコマンド
  • qmail-queue

受け取ったメールをキューに保存し、qmail-sendに配送を依頼する

  • qmail-clean

クラッシュした時のキュー内の残っているごみファイルを削除します。

  • qmail-qstat

現在キューにたまっているメールの数を表示

  • qmail-qread

キューにたまっているメールの情報を表示

参考にしたURL: https://japanrock-pg.hatenablog.com/entry/20090414/1239695108

 

便利な機能

 

.qmail ファイル

ホームディレクトリに .qmail というファイルを 作成・編集することで、配送されてきたメールに対してさまざまなことができます。

./Maildir/

を.qmailファイルに記述することで、Maildir形式をるようできるようになります。パーミッション権限も調整が必要です。

注意事項: .qmail の処理は行単位で実行されてますが, たとえ文字が書かれてなくても その行をみて処理しようとして失敗します. また改行したところから行頭とみ なして正しい処理を行なってくれません. さらに, 行の処理は上から順々に行な われるので行の順序にも気をつけましょう.

.qmail ファイルの編集

  • 空の行を作らない
  • エディタ編集時にひとつの指示が数行にわたってしまうときでも改行はしてはいけない。
  • .qmail のパーミッションは 600 にする

詳細は http://www.ep.sci.hokudai.ac.jp/~epnetfan/tebiki/server-mail/usage/dot-q...

 

qmail install FAQ

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は必須ではありませんが、その場合user@example.jpではサーバへの配送は行われません。user@host.example.jpのようなFQDN(Fully Qualified Domain Name:完全修飾ドメイン名)を用いてテストしてください。また、最低限host.example.jp自体はDNSに登録されている必要があります

 

qmailコンパイル時の設定

# 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の動作に必要なファイルやディレクトリが作成されます。

 

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+」なら「user@host.example.jp」と置換される(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の動作検証

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: root@host.example.jp | /var/qmail/bin/qmail-inject

これで、空のメールが/var/qmail/alias/のMailboxファイルに届いているはずです。

 

Maildirへの設定

/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: root@host.example.jp | /var/qmail/bin/qmail-inject

※Maildir/newディレクトリにファイルが1つできています。

 

 

 

 

 

タグ: 

オープンソースソフトウェア: 

qmailadmin

qmailadminのインストールと設定

qmailadmin-1.0.2.tar.gzを適当な作業ディレクトリにダウンロードして展開します。その後、ディレクトリを移動してconfigureを行います。vpopmailやautorespondのパスは、紹介したインストール方法であれば自動的に組み込まれます。

 

事前に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:」を使用

 

 

事前にApacheのインストール

cgiの設定 : /usr/lib/cgi-bin/ 

 

qmailadminのインストール

ダウンロード: 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

qmailadmin 1.2.16 login

 

Webではできなことは、詳しくはこのURLで確認 https://www.atmarkit.co.jp/ait/articles/0203/09/news002_2.html

  • 新規にバーチャルドメインを追加したり削除する場合
  • バーチャルドメインごとに機能を制限
  • 機能の無効化
  • ディスク使用量を制限する(quotaの設定)
  • すでに作成したアカウントの制限を変更する場合

 

設定

メーリングリストのタイトルに連番で番号を表示させたい。

メーリングリストのプレフィックスに、メーリングリストのタイトルの後に :# を追加します。

qmailadminにメーリングリストの連番設定 ezmlm

 

 

 

vpopmail

vpopmail

 

コマンド
  • ドメイン名の追加

# /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...

 

 

 

タグ: 

オープンソースソフトウェア: 

Multimedia

マルチメディア(画像、動画、音声など)

 

グラフィックス

Inkscape : 高機能なグラフィックソフトです。イラストレータのAIファイル読み込み可能。

GIMP :  高機能なイメージデータ処理ソフトです。Photshopと同様機能があり、便利です。

 

動画

VLC : 動画のビューワーソフトとして、軽快で機能が豊富です。動画のキャプチャーもスナップション機能で簡単です。

オープンソースソフトウェア: 

GIMP

GIMP

概要

GIMP Windows 操作画面GIMPは、写真データや各種イメージデータを編集加工できる、PhotoShopに相当するイメージ編集加工ソフトです。

動作環境とライセンス

Windows、Mac、LinuxなどさまざまなOSで動作します。

 

スクリーンショット

 

インストール

WindowsやMacなどは、インストールプログラムを実行するだけでOKです。バージョンアップも、インストールプログラムを実行を実行する際に、既存のバージョンを確認します。

 

備考

 

お役だち情報

・ GIMPでファビコンを作成

GIMPでロゴなどを32x32のサイズでイメージを作成します。ファビコンで使う場合は、背景を透過にした方が、ホームページのブラウザーなどで表示がきれいになります。GIMPで透過を指定するには、

レイヤー > 透明部分 > 色を透明度に > 背景の色を選択クリック >  「色を透明度に」のダイアログで色を確認してOKをクリック > 選択した背景の色が透明に変換 >  保存は PNGもしくはGIFフォーマットにします。

その後、そのファイル名を favicon.ico などに変換して、ホームページサイトへアップロードします。

 

 

Inkscape

グラフィックスソフト Inkscapeについて

★概要

Inkscapeはイラストレーターや高機能グラフィックスソフトと同等の機能をもったベクター形式(Scalable Vector Graphics SVG)を採用したオープンソースソフトウェアです。インラストレータのAIファイルを読み込みできるのが、大きなメリットです。

★動作環境とライセンス

Linux、Mac OS X、Windows   

Licenseは GNU General Public License(GPL)  2011年2月4日現在

InkscapeでイラストレータのAIファイルを読み込み表示

★スクリーンショット  

イラストレータのAIファイルを読み込んで表示 

 

 

 

★インストール

ダウンロードは 次のサイトから sourceforge.net/projects/inkscape/

★備考
★参考情報

開発コミュニティサイト inkscape.org/

 

VLC

VLC

概要: 動画などのキャプチャに最適。

環境:

 

スクリーンショット:

 

ダウンロード

 

インストール

 

環境設定

 

備考

 

役立つ情報

 

 

オープンソースソフトウェア: 

Programing

★プログラミング言語

1) PHP

2) JavaScript

3) Perl

4)  Node.js 

Node.jsは、ChromeのV8JavaScriptエンジン上に構築されたJavaScriptランタイムです。

https://nodejs.org/en/about/

タグ: 

オープンソースソフトウェア: 

Node.js

Node.js

Node.jsは、ChromeのV8JavaScriptエンジン上に構築されたJavaScriptランタイムです。

概要: https://nodejs.org/en/about/

 

インストール

 

 

Tips

foreverコマンド

forever start xxxx.js

概要は https://www.npmjs.com/package/forever

forever list  forever stop   forever stopall   forever restart   forever resartall   ...

 

FAQ

タグ: 

オープンソースソフトウェア: 

PHP

スクリプト言語 PHP について

 

PHP言語一般

 

CentOSでのPHP言語

 

Debian/UbuntuでのPHP言語

 

Debian 9 / 10 にPHP7.4をインストール(アップデイト)

参照: Upgrade/Installation guide for PHP 7.4 on Ubuntu and Debian

現在のインストール済みのPHP環境を確認します。

  • sudo apt list --installed php*

上記の説明を参考に新しいPHP7.4とその追加機能をインストールします。レポジトリは、packages.sury.orgを使用る設定です。

  • sudo apt install php7.4 php7.4-common php7.4-cli
  • sudo apt install php7.4-curl php7.4-mbstring php7.4-bz2 php7.4-readline php7.4-intl
  • sudo apt install php7.4-bcmath php7.4-bz2 php7.4-curl php7.4-intl php7.4-mbstring php7.4-mysql php7.4-readline php7.4-xml php7.4-zip

最後に古いPHP7.3をアンインストールします。

  • apt purge php7.3 php7.3-common

 # Change 7.3 with all versions you want to purge.

 

参照: How to Update to PHP 7.4 for WordPress Site on Debian 9/10

 

Debian 9・10に複数のPHPバージョンをインストール

 レポジトリ 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の場合の説明

  • WordPress
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
  • Drupal
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

 

Debian 11 Bulleyes にPHP8.2 FPMをインストール

参考にしたページ : 

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

 

 

WindowsでのPHP言語

 

タグ: 

オープンソースソフトウェア: 

PHP-CentOS

IUS Community Repository

IUS Community Repository について

CentOSのPHP、Python、MySQLについて、常に最新環境を提供するために活動しているコミュニティ組織です。

コミュニティサイト: iuscommunity.org/

レポジトリ ダウンロード: iuscommunity.org/Repos

参考情報:

CentOSのWikiサイトにて、IUS Commnuity Repositoryについて説明があります。 以下のサイト

wiki.centos.org/AdditionalResources/Repositories

このレポジトリはCentOSのコア派ケージを置き換えるような表現があります。

PHP5.1-Testing-repo5.2

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 install

PHP5.2とPHP5.3へのバージョンアップ手順

△PHP5.2について

CentOS 5.3 などではPHP5.1が標準サポートなので、PHP5.2以上を使う場合は、さまざまサードパーティが作成したRPMパッケージとそのレポジトリを利活用するようになります。remi というレポジトリもそのひとつです。

remiレポジトリにあるPHPの全てのリスト表示

 # yum --enablerepo=remi list php-*

△PHP5.2から5.3へのバージョンアップ

環境:  CentOS 5.5 x86_64 Linux version 2.6.18-194.26.1.el5 (mockbuild@builder10.centos.org) (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のアップデイト

念のために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 Suhosin のインストール

オプションとして、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

 

PHP-Info

PHP言語でのいろいろな情報

△ phpinfo.phpで表示がでない場合

PHP 5.3.4で phpinfo.php ファイルを表示できないときがあり、その時は、他の簡単な PHPスクリプトを作成し、その中に phpinfo(); を定義して表示が出るようになりました。

例えば、

<?php
 print "テスト1";
 phpinfo();
  ?> 

 

Web Server

Webサーバー関連
Apacheについて

仮想(Virtual)ドメインを使って運用している場合、必要ない仮想ドメインは、ディレクトや設定ファイルをすべて削除もしくは移動させて、apacheを再起動させます。 中途半端な状態で運用していると、内部でエラーがたまってApacheのパフォーマンスに影響する場合もありえるので、必ず、必要ない設定ファイルは削除しましょう。

 

SSLについて

DebianにOpenSSLをインストールする手順 参考サイト ここから

 

アクセスログについて

・PiWik

Debianにアクセスログ(Piwik)をインストールする手順 参考サイト ここから

piwikはオープンソースのWEBサイトアクセス解析ツールです。

http://www.piwikjapan.org/   日本のユーザーグループ

Debianへのインストール

Debianのパッケージではなくソースからダウンロードしてインストールしてみました。

  1. MySQLデータベースでPiWik用のデータベースを作成、接続ユーザーとその権限を設定
  2. Webサーバーからアクセスできるディレクトリ作成、パーミッション設定
  3. そのディレクトリにPiWikソースプログラムをダウンロード
  4. wget https://builds.piwik.org/piwik.zip
  5. ZIPファイルを解凍しApacheでアクセスできるパーミッションの設定
  6. ブラウザからインストール実行

 

オープンソース アクセス記録 PiWiK インストール

以下のワーニングが表示されるので、plugins/Morpheus/icons/submodules を削除します。

オープンソース アクセス記録 PiWiK インストール

インストール環境の確認

オープンソース アクセス記録 PiWiK インストール

データベースの設定、事前にPiWik用のデータベース名、そのユーザーと権限を設定しておきましょう。

オープンソース アクセス記録 PiWiK インストール

データベースのテーブル作成

オープンソース アクセス記録 PiWiK インストール

PiWikの管理画面にログインするユーザー名、パスワード、メールアドレスを登録

オープンソース アクセス記録 PiWiK インストール

アクセス記録をする対象のWebサイトを設定します。 複数のWebサイトを登録管理可能。

オープンソース アクセス記録 PiWiK インストール

PiWilのトラッキングスクリプトについて CMSのモジュール(DrupalのPiwik Web Analyticsなど)は自動的にモジュール側の設定を行なうことでこのスクリプトを追加します。

オープンソース アクセス記録 PiWiK インストール

インストールできました

オープンソース アクセス記録 PiWiK インストール

PiWikをインストールしたURLにアクセスして管理画面にログインします

オープンソース アクセス記録 PiWiK インストール & ログイン

ログイン後のダッシュボード画面

オープンソース アクセス記録 PiWiK インストール & ログイン ダッシュボード

 

 

Nginx

Nginx Webサーバー

概要:

 

Faq

Q: Nginxで仮想ドメインを設定する場合は

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

Q: NginxでPHP7.4を設定する場合は

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の再起動です

 

Q: リバースプロシキーでNode.jsベースのアプリを設定する場合

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

  • 192.168.0.10:80から127.0.0.1:9000に接続を転送するようにロードバランサーを構成します。
  • 通常どおりxxxサーバーを起動します。
  • httpのWebインターフェイス  http://xxx.example.org にアクセスします。

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/

 

Q: オープンソースCMS Drupal をNginxで運用する場合の設定方法は

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;
}
}

 

Q: Certbotの証明書再発行を自動化

A: crontabに毎日certbot renew を実行し、postfixとdovecot を再起動、Nginxの場合

sudo crontab -e
@daily certbot renew --quiet && systemctl reload postfix dovecot nginx

 

Q: CertbotコマンドでNginxの証明書を発行する

A: sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -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.

 

 

 

タグ: 

オープンソースソフトウェア: 

etc

★その他のオープンソースソフトウェア 

office

オフィスソフト

 

ワープロ、表計算、プレゼンテーション、グラフィック作成、データベースソフトなどの事務用ソフトウェア

OpenOffice

LibreOfficeになる前のソフト名

 

 

LibreOffice

OpenOfficeの開発チームが立ち上げた、オフィスソフトです。OpenOfficeやMS Officeとの互換性があり、OpenOfficeの後継として活用できると、期待しております。

 

ダウンロード

JavaのJREを別途ダウンロードしてからLibreOfficeをインストールします。  ここから 

 

使い方

 

  • マウスの右クリックで表示されるメニューを編集したい

コンテキストメニューで設定を追加します。 ツール -> カスタマイズ -> コンテキストメニュー -> メニュー(操作ごとに内容を設定)、セルを選択してマウス右クリックの場合はメニュー「セル」を選択 -> 希望の項目を選択 -> コマンドを追加 -> ONで保存

 

 

 

 

 

 

 

オープンソースソフトウェア: 

ossのマルチメディア

OSSのマルチメディア

 

Sound

 

Audacity

Audacity Version 3.2.4

ノイズの削減

  • 音源全体もしくは除去したい範囲を選択
  • メニュー エフェクト ノイズの削減 を選択
  • ノイズプロファイルの取得 クリック 完了
  • 音源全体もしくは除去したい範囲を選択
  • メニュー エフェクト ノイズの削減 を選択
  • OKをクリック 完了

参考にしたURL: https://jp.cyberlink.com/blog/audioeditor/1646/how-to-remove-noise-in-au...

 

音の増幅

ノーマライズ機能を使う場合(私はこの機能を推奨)

  • 音源全体を選択
  • メニュー エフェクト ノーマライズ を選択
  • デフォルトで OK クリック

増幅機能を使う場合

  • 音源全体を選択
  • メニュー エフェクト 増幅 を選択
  • デフォルトで OK クリック

参考にした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日現在)

ドイツのドレスデン大学でのJitsiMeetの導入・応用紹介動画

 

 

メッセージング

 

Element(旧名:Riot)

Slack代替えとして有望なオープンソースのメッセージングシステムです。Matrixのクライアント環境として開発されています。

エンドツーエンドの暗号化ができる。

Element: Matrixクライアント https://element.io/

Element(旧名:Riot)のインストール・技術情報: ここから

 

Matrix

Matrix : 分散型コミュニケーション(Decenterlized Communication)サーバーシステム https://matrix.org/

Riot: Matrixクライアント https://about.riot.im/

Matrixのインストール・技術情報: ここから

Riotのインストール・技術情報: ここから

ドイツのドレスデン大学でのJitsiMeetの導入・応用紹介動画

 

 

タグ: 

オープンソースソフトウェア: 

Jitsi Meet

Jitsi Meet

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でした)

1)事前準備

ドメイン名とそのドメイン名をインストールするサーバーのホスト名(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

 

2) ファイアウォールの設定

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

 

3)OpenJDK JRE8インストール

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 Buster に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

 

4)Nginxのインストール

sudo apt install -y nginx
sudo systemctl start nginx.service
sudo systemctl enable nginx.service

 

5)Jitsi Meet インストール

レポジトリの設定

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 からの連絡先メールアドレス(自分のアドレスで)を入力

 

6)確認

https://meet.example.com で動作確認

 

7)会議作成の制限

インストール完了した状態は、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 

 

 

Prosodyctlの概要

 

sudo prosodyctl --help

prosodyctl - Manage a Prosody server

Usage: /usr/bin/prosodyctl COMMAND [OPTIONS]

Where COMMAND may be one of:

  • adduser JID Create the specified user account in Prosody
  • passwd JID Set the password for the specified user account in Prosody
  • deluser JID Permanently remove the specified user account from Prosody
  • start Start Prosody
  • stop Stop a running Prosody server
  • restart Restart a running Prosody server
  • reload Reload Prosody's configuration and re-open log files
  • about Show information about this Prosody installation
  • check Perform basic checks on your Prosody installation
  • cert config|request|generate|key|import Helpers for generating X.509 certificates and keys.
  • cert config HOSTNAME [HOSTNAME+] Builds a certificate config file covering the supplied hostname(s)
  • cert key HOSTNAME <bits>  Generates a RSA key named HOSTNAME.key
  • Prompts for a key size if none given
  • cert request HOSTNAME [HOSTNAME+] Generates a certificate request for the supplied hostname(s)
  • cert generate HOSTNAME [HOSTNAME+] Generates a self-signed certificate for the current hostname(s)
  • cert import [HOSTNAME+] /path/to/certs [/other/paths/]+ Copies certificates to /var/lib/prosody
  • status Reports the running status of Prosody

例えば、一度登録したユーザーのパスワードを変更する場合は、prosodyctl passwd ユーザー名@JID(URL名) を実行して変更するパスワードを入力します。

 

Prosodyの設定

Prosodyは認証機能をサポートしています。参考にしたページ: https://prosody.im/doc/authentication

 providerの設定で変更可能

 例えば、 authentication = "internal_hashed" -- Default

  • internal_plain Plaintext passwords stored using built-in storage
  • internal_hashed  Hashed passwords stored using built-in storage
  • cyrus  Cyrus SASL integration (LDAP, PAM, …)
  • anonymous  SASL 'ANONYMOUS' mechanism, random username, requires no credentials

Hashed or Plain ?  https://prosody.im/doc/plain_or_hashed

 

◆ Debian 10 busterにJitsiMeetをインストール

以下のサイトを参考にインストール

 https://nerdonthestreet.com/wiki?find=Host+a+Jitsi+Meet+Server

 

◆ Debian 11 bullseye にJitsiMeetをインストール

以下のサイトを参考にインストール

https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-quickstart

注意事項:

  • debian11 での標準Javaパッケージは OpenJDK 11 です。  openjdk-11-jdk を事前にインストール
  • JitsiMeetレポジトリなどのインストールは次を参照 https://jitsi.org/downloads/ubuntu-debian-installations-instructions/ 
  • Prosody PackageはProsodyのページでレポジトリを追加、Prosodyは、まだ事前インストールしない、JitsiMeetインストール時に実行 https://prosody.im/download/package_repository
  • Certbotの事前インストール、SSL対象のドメインは追加しない
  • ダイアルインサービスは、電話料金がかかるので、インストール時に有効にしないほうが安心です。

 

◆ Debian 12 Bookworm に JitsiMeetをインストール(不安定です!)

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

注意事項:

 

 

FAQ

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: モデレーターの権限

  • 会議室のパスワードを追加できる
  • モデレーター以外の人にモデレーターの役割を付与する
  • 非モデレーターをキックできる(muc_owner_allow_kick.patchを適用した場合のみ) 
  • 参加者をミュートさせる
  • 全員にモデレーターのビデオ画面を見てもらう機能(全員がモデレーターをフォローしている)
  • 参加者をミュートで参加させる機能(全員がミュートで開始)
  • ビデオなしで参加者を参加させる機能(誰もがビデオなしで始めます)
  • ロビー(待機室)を使う・使わない設定
  • 参加/ノック通知リクエストを承認する機能(ロビーが有効になっている場合)
  • e2e暗号化を有効にする機能、現在ベータ版です(利用可能な場合)

 A: モデレーターのデフォルトインストール時の設定内容

  • 最初に参加する参加者はモデレーターです
  • モデレーターが離れると、新しいモデレーターが自動的に選択されます
  • 選択はサーバー側で行われます(Prosody&Jicofoによる)

A: モデレーターのデフォルトインストール(Secure Domain セットアップで)時の設定内容

  • 認証されたすべてのユーザーはモデレーターです
  • ゲストユーザーはモデレーターではありません、会議室を作成することもできません

A: もし、mod_muc_allowners.lua を有効した場合

  • 誰もがモデレーターです
  • これは https://meet.jit.si のデフォルトの動作です

 

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日)の場合

  • 10名で接続 サーバーは4コア、メモリは3GBで、#CPUは70%-80% 程度です。 接続状態は良好
  • 20名で接続 サーバーは2コア、メモリは3GBで、#CPUは120%-130% 程度です。 接続状態は時々接続エラーやカメラ画面が黒くなり、運用は困難
  • 20名の接続 サーバーは8コア、メモリは5GBで接続状態は良好でした。 同じ石狩第1ゾーンの「コア占有プラン」の6コア/32GBメモリでは限界でした。
  • 30-40名の接続 サーバーは10コア、メモリは6GBで可能だと推測します。 

推測ですが、ユーザー数が増えた場合は、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

Matrix

Matrix通信プロトコルは、ユーザーがアプリに関係なく互いに通信できるようにすることを目的としています。分散型システムマトリックスは、HTTP標準に基づいており、個々のクライアントとサーバー間のインターフェイスの詳細です。

 

技術情報

2020年

Matrix: Das steckt hinter dem neuen Messenger von Bundeswehr und Behörden

 

2019年

Whatsapp-Alternative – Frankreich wandert in die Matrix (フランス政府でWhatsappの代替えとして採用)

 

 

 

インストール

 

 

タグ: 

オープンソースソフトウェア: 

Riot

Riot

Matrix通信プロトコルで稼働するメッセージングシステムで、Slackの代替えになります。

Riotの概要: https://about.riot.im/

 

技術情報

2020年

 

 

2019年

 

 

2016年

Open Source und verschlüsselt: Das steckt hinter dem Slack-Rivalen Riot(オープンソースで暗号化....)

 

インストール

 

 

タグ: 

オープンソースソフトウェア: 

システム管理

システム管理に便利なオープンソースソフトウェア

システムのアドミニストレーションで必要となるさまざまなソフトに関する情報です。

Webmin

Webminはシステムのほとんどの機能をルート権限で設定することが多いので、アクセスには気をつけましょう。

Webmin DNSサーバの設定画面必要になる時だけ、アクセスできるように、設定ファイル /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を使ったサーバの構築(Sambaの基礎からPDC機能まで)

基本の設定や使い方について、参考になります。 ここから

 

よく使うコマンド  環境 Samba 3.6.9-151-el6  CentOS 6.4

testparm

testparm /etc/samba/smb.conf  smb.confファイルを指定して設定を確認

pdbedit

pdbedit -Lw  現在 Sambaに登録されているユーザーをsmbpaswwd形式で表示

pdbedit -a ユーザー名  LinuxユーザーをSambaへ登録

コンピュータアカウント(コンピュータ名)の追加   pdbedit -a -m コンピュータ名

パスワードのバッチ入力  pdbedit -t

ユーザの削除  pdbedit -x ユーザ名

smbclient

smbclient -L Sambaサーバー名  Linuxクライアントから接続、IPアドレスでも可能

smbstatus

smbstatus -d   Sambaデーモンの動作状態を調べて表示

findsmb

findsmb  サブネットに存在するSambaサーバーを一覧表示

nmblookup

指定したコンピュータ名で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>

net lookup  

・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)

 

よく使うコマンド  環境 Windowsにて

 

 

FAQ

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

 

 

 

 

オープンソースソフトウェア: 

Install

Sambaのインストール、設定について

Sambaではいろいろな使い方に合わせて設定が可能です。代表的な環境でのサンプルとして、メモをまとめました。

Windows のワークグループでファイルサーバ

Sambaインストール

設定ファイルsmb.confの作成、起動

ユーザ作成(LinuxユーザとSambaユーザ) 管理者用 administrator など ユーザ用 user01 など

各ユーザパスワード作成(LinuxユーザとSambaユーザ)

 

スタンドアロンのWindowsのドメインコントローラ(WindowsNTドメイン互換のSambaドメイン)として

備考: ドメインの名称と種類 Windowsドメイン(NTドメイン、ADドメイン) Sambaドメイン

Sambaインストール

スタンドアロンのドメインコントローラ(PDC)としての設定ファイルsmb.confの作成、起動

ユーザ作成(LinuxユーザとSambaユーザ)

ユーザパスワード作成(LinuxユーザとSambaユーザ)

 

 

OpenLDAPと連携したスタンドアロンのWindowsドメインコントローラ

 

タグ: 

オープンソースソフトウェア: 

Sambaの話題

Sambaに関する話題

 

参考になるプレゼン資料

2015年2月28日(土) OSC東京にて 「いまさら聞けないWindows Server」 >> ここから

 

タグ: 

オープンソースソフトウェア: 

User and Group

ユーザとグループについて

Sambaでの、UNIXのユーザ・グループとWindowsのユーザ・グループを管理する機能の概要について。

 

Sambaのユーザ概念

SambaではSambaユーザという独自のユーザを作成し、そのパスワードも設定します。 さらに、SambaサーバがUNIX系(Linuxも含む)の場合はUNIX(Linux)のログインユーザ名とパスワードが必要になります。

つまり、Sambaユーザには必ず対応するUNIX(Linux)ユーザが存在し、ログイン認証後にUNIX(Linux)ユーザとの対応付けが行われます。

また、コンピュータ名も必要となりますので、SambaユーザとUNIX(Linux)ユーザに登録します。 自動登録などの仕組みは別途必要です。

UNIX(Linux)ユーザの作成

 useraddコマンドなどで、Windowsユーザ名と同じ名前をUNIX(Linux)ユーザにパスワード付きで登録

 useraddコマンドなどで、Windowsのコンピュータ名(名前の最後に$を付ける)と同じ名前をUNIX(Linux)ユーザにパスワード付き登録

Sambaユーザの作成

 ユーザ名とマシン名(最後に$を付ける)ともにpdbeditコマンドもしくはsmbpasswdコマンドを使います。

 追加 pbdedit -a <Sambaユーザ名>  削除 pbdedit -x <Sambaユーザ名>  表示 pbdedit -Lw

 

Sambaグループの作成、修正、削除、参照

Sambaユーザと同じようにUNIX(Linux)グループに対応するSambaグループを作成します。SambaグループはWindowsサーバに存在するローカルグループとして機能します。一般的に、マイクロソフトのWindowsドメインではない環境(ワークグループでのネットワーク運用)では、Sambaグループと言います。

Sambaグループの作成(既存UNIXグループに対応するローカルグループを作成する場合)

 net groupmap add unixgroup=UNIXグループ名 type=local ntgroup=Sambaグループ名 [ comment="<コメント文字>"]

Sambagグループの修正

 net groupmap modify unixgroup=UNIXグループ名 type=local ntgroup=Sambaグループ名 [ comment="<コメント文字>"]

Sambaグループの削除

 net groupmap delete ntgroup=<Sambaグループ名>

Sambaグループの参照

 net groupmap list

Sambaグループの作成(ローカルグループに対応するUNIXグループの定義をWinbind内で保持する場合)

 net sam createlocalgroup  <ローカルグループ名=UNIXグループ名>

Sambaユーザ、グループの参照(ローカルグループに対応するUNIXグループの定義をWinbind内で保持する場合)

 net sam list groups

 net sam list users

グループ名の指定

smb.conf にて valid users = @group1 +groiup2  という表現 @、+ でグループ名を指定

 

Sambaでドメインを構築する場合

グローバルグループとローカルグループ

グローバルグループの初期設定(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について

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によるSamba以外のプログラムとの認証統合

pam_winbind のインストールと設定は、CentOSの場合  authconfig --enablewinbindauth --update

無効にする場合は authconfig --disablewinbindauth

動作検証は、WindowsドメインのユーザでSSHでSambaサーバへログインします。 ssh -l Windowsユーザ Sambaサーバ

 

タグ: 

オープンソースソフトウェア: 

サンプル事例インストール

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グループ名>

 

ドメインコントローラ(PDC)として運用する場合

 

 

グローバルグループの初期設定

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ドメインを信頼する

ドメインコントローラとOpenLDAPによる連携

 

 

タグ: 

オープンソースソフトウェア: 

ユーザ管理

LDAP関連の話題

LDAP(Lightweight Directory Access Protocol)はRFC1777で定義されているインターネット標準のプロトコルです。TCP/IPでのディレクトリサービスを提供するためのプロトコルです。

間違えやすいのは、ディレクトリとは、コンピュータのディレクトリ、フォルダーではなく、英語の人名簿、住所録などの意味になります。

OpenLDAPについて

 

 

 

FAQ

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形式でバックアップ、リストアする場合

 

 

参考情報 : 次のサイト もしもに備えるバックアップ、リストア

GUIで管理できる便利なツール(Samba対応)

LAM (Ldap Account Manager)  Webブラウザで管理できる  開発元のサイト

GOsa2 LDAPデータベースでアカウントやシステムを管理できるフレームワーク 開発元のサイト

Webmin  Linuxのシステム管理ツールで、LDAP、SAMBAもサポート

LDAP Admin WindowsベースのLDAP管理ツール SAMABも対応

Apache Directory Studio Apache FoundationのLDAPプロジェクトとして開発されている  開発元のサイト

 

 

オープンソースソフトウェア: 

LDAP Account Manager

LAM(Ldap Account Manager)

OpenLDAPはCUIべーづで初心者には大変わかりにくい、覚えるまで時間がかかることが多い。  開発元のサイト

そこで、OpenLDAPをGUIで管理できるオープンソースソフトウェアのツールLAM(Ldap Account Manager)を使うと便利です。

 

インストール

環境: CentOS 6.4 

必要なパッケージをインスト-ルします  httpd   php   php-ldap   php-mhash(php 5.3 ではサポートされていない可能性がある)

ダウンロード  sourceforge サイトから、最新のバージョンに合わせます

# 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インストール

# 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

lan.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

ブラウザでアクセスし、確認します  ://xxxxxx/lam/

 

 

タグ: 

オープンソースソフトウェア: 

GOsa2

LDAPとSambaを管理できるGOsaプロジェクト

 

開発元のサイト >> ここから  GOsaプロジェクト >> ここから

 

 

 

オープンソースソフトウェア: