#author("2023-04-10T14:32:26+09:00","hasegawa","hasegawa")
#author("2024-04-04T09:13:16+09:00","hasegawa","hasegawa")
https://www.server-world.info/query?os=Debian_11

#contents

*ToDo [#bcc6d978]
-mailman3 web interfaceを動かす。
 $ sudo systemctrl start mailman3-web
https://XXXX.XXXX.XXXX.XXX/mailman3/にアクセス。userid/passwordでログインし、作業する。
 $ sudo systemctl stop mailman3-web
-OpenSSL 3に移行,OpenSSL 1.1.1 EOL 2023/9/11

*backportsの利用 [#i89f2fd6]
http://backports.debian.org/~
/etc/apt/source.listに
 deb http://deb.debian.org/debian bullseye-backports main contrib non-free
 deb-src http://deb.debian.org/debian bullseye-backports main contrib non-free
を追加。
 # apt update
backportsのpackageをインストールする場合は、
 # apt install -t bullseye-backports install "package"

*追加ソフトのインストール [#p1b5d075]
 # apt install rsync vim emacs mew mozc-server emacs-mozc mozc-data awstats fonts-ipafont sudo ntp fail2ban tcsh
 # apt install rsync vim emacs mew mozc-server emacs-mozc mozc-data awstats fonts-ipafont sudo ntp fail2ban tcsh w3m-el
 # apt install roundcube mailman procmail webalizer nfs-kernel-server clamav spamassassin

*ユーザ移行 [#u5de84f2]

** ldapのインポート [#n823ab4d]

 # atp install slapd ldap-utils

ldap管理者パスワードを適当に設定(PATHに/sbinが入っていない場合は追加を忘れずに)

 # systemctl stop slapd
 # dpkg-reconfigure slapd
  OpenLDAP サーバの設定を省略しますか? → いいえ
  DNS ドメイン名: phys.shinshu-u.ac.jp
  組織名: heplab
  管理者パスワード: ****
  管理者パスワードの確認: ****
  slapdをパージしたときにデータベースを削除しますか? → いいえ
  古いデータベースを移動しますか? → はい

現azusa上で、全てのアカウント情報をldif形式のファイルにダンプする。

 # systemctl stop slapd
 # /usr/sbin/slapcat -l all.ldif
 # systemctl start slapd

ダンプしたファイルを新azusa上にコピーし、不必要な部分(一番上のdn: dc=phys..とdn: cn=admin...のエントリ、この二つは、新azusaにslapdをインストールし、reconfigureしたときに設定しているので、既にエントリに含まれている)を削除する。%%ou=Groupを追加する。%%

 $ cat >Group.ldif
 dn: ou=Group,dc=phys,dc=shinshu-u,dc=ac,dc=jp
 objectClass: organizationalUnit
 ou: Group
 ^C
 $ 

後述するpostfixのメールを受信するために、mailというattributeが必要だが、これはstructural object classのobjectClass: accountではなく、objectClass: inetOrgPersonである。そのため、現azusaからダンプしたそれぞれのエントリに対し、account→inetOrgPersonに置き替え、さらに"sn: HASEGAWA"(surnameの意味)と"mail: hasegawa@example.com"のattributeを追加する。その後、

 # systemctl stop slapd
 # /usr/sbin/slapadd -l Group.ldif
 # /usr/sbin/slapadd -l all.ldif
 # systemctl start slapd

とすればよいはず。

ldapの設定

** ローカルユーザのインポート [#o9c23e57]
calice, hepl, ilccal, kinenkai, qrio, scecal, tvrecの/etc/passwd, /etc/shadowをインポートする。

* メールサーバの設定 [#e3da3769]
mailサーバーをExim4からPostfixに変更
 # apt remove exim4
 # apt autoremove
 # apt -y install postfix postfix-ldap sasl2-bin
 メール設定の一般形式: インターネットサイト
 システムメール名: azusa.shinshu-u.ac.jp

** Postfix+ldap [#pd1d449f]
ldapでユーザ管理しているため、メールを配送する際にldapとのやり取りが必要になる。/etc/postfix/main.cfで以下のように変更する。
 alias_maps = hash:/etc/aliases,hash:/var/lib/mailman/data/aliases,ldap:/etc/postfix/ldap-aliases.cf
/etc/postfix/ldap-aliases.cfを以下のように作成する。
 server_host = localhost
 search_base = dc=phys,dc=shinshu-u,dc=ac,dc=jp
 query_filter = (uid=%u)
 result_attribute = uid
query_filterの設定で色々できそうだが、とりあえずはuidが存在するかどうかでチェックし配送する。

**tlsの設定 [#te6e5b7c]

**aliaseの設定 [#lfaa5499]
/etc/aliasを編集し、有効にする。
 # /usr/sbin/postalias /etc/aliases

**procmail(設定しない) [#s250affd]
%%/etc/postfix/main.cfでコメントを外し、%%~
%%mailbox_command = /usr/bin/procmail%%~
%%とする。これをすると、.forward, .procmailrcが無いユーザのメールがMaildirではなく、/var/mail/以下に配送される。%%~
ユーザが個別に設定する。.forwardは以下のようにする。
 "|IFS=' ' && exec /usr/bin/procmail -f- || exit 75 #~/Maildir/"

**dovecot [#l2d317b6]
インストール
 # apt install dovecot-core dovecot-pop3d dovecot-imapd dovecot-ldap
Maildir形式にする。/etc/dovecot/conf.d/10-mail.confで
 mail_location = maildir:~/Maildir
とする。~
 # systemctl restart dovecot
gidがsystem userの場合、認証がfailする。/etc/dovecot/conf.d/10-mail.confで、first_valid_gidを設定する。GIDが0(root)だとデフォルトでアクセスできない。
*** 証明書関係 [#kffb9870]
letsencryptをインストールする。/etc/dovecot/conf.d/10-ssl.confで、
 ssl_cert = </etc/letsencrypt/live/(サーバ名)/cert.pem
 ssl_key = </etc/letsencrypt/live/(サーバ名)/privkey.pem
とする。

**amavisd-new+spamassassin+clamav [#j5bac9de]
 # apt install amavisd-new spamassassin clamav
設定は[[ここ>https://www.server-world.info/query?os=Debian_11&p=mail&f=7]]を参照。~
PCを再起動すると、amavisd, spamassassin(spamd)が起動しない場合がある。メールが送れなくなる。サービスを起動する。
 # systemctl restart amavis
 # systemctl restart spamassassin

* mewの設定 [#ja712081]
ローカルユーザpop,imap,smtpを利用する際に認証が必要となる。特に、smtpでメールを送る際に.mew.elでmew-smtp-userの設定が必要になる。
 (setq mew-smtp-user "ユーザID")
pop3,imapはmew-pop-user, mew-imap-userにログイン名(ユーザID)がデフォルト値になっているので設定する必要がないが、mew-smtp-userのデフォルト値は"ユーザID@azusa.shinshu-u.ac.jp"になっているので、この値を設定しないと、認証できなくなる。

* apache2の設定 [#za3af905]
**sslを使ったアクセスに限定する。 [#uf710ddf]
現行azusaから、/etc/apache2/site-available/000-default.confとdefault-ssl.confをコピーする(a2enmodは拡張子に.confがないとERROR: Site XXX does not exist!とエラーとなる)。 
 # a2enmod ssl
 # a2enmod rewrite
 # a2ensite default-ssl
を行う。~
**ユーザのpublic_htmlをみられるようにする。 [#v8617e7e]
/etc/apache2/mod-availableに利用可能なモジュールがあるので、この中の、userdirがそのモジュール。有効にするには、
 # a2enmod userdir
**通常ユーザでもphpが使えるようにする。 [#yf3aa948]
 # apt install php
/etc/apache2/mods-available/php7.4.confで以下のようにコメントアウトする。
 #<IfModule mod_userdir.c>
 #    <Directory /home/*/public_html>
 #        php_admin_flag engine Off
 #    </Directory>
 #</IfModule>
有効にする。
 # a2enmod php7.4
**phpでアップロードファイルサイズの上限を変える [#k0fb8698]
roundcubeの添付ファイルやpukiwikiのアップロードファイルのサイズの上限を変える。/etc/php/7.X/apache2/php.iniで、
 post_max_size = 20M
 upload_max_filesize = 20M
と変更し、apache2を再起動する。
 # systemctl restart apache2
**cgiを使えるようにする(mailmanのため) [#o02266de]
 # a2enmod cgi

*Let's Encrypt [#s6962797]
 # apt install certbot
80番ポートに外部からアクセスできるようにしておく。
 # certbot certonly --standalone -d ***.shinshu-u.ac.jp -d ****.shinshu-u.ac.jp 
連絡先メールアドレスを入力。利用規約に答える(2項目)。

IMPORTANT NOTES:

- Congratulations! Your certificate and chain have been saved at:
  /etc/letsencrypt/live/***.shinshu-u.ac.jp/fullchain.pem
  Your key file has been saved at:
  /etc/letsencrypt/live/***.shinshu-u.ac.jp/privkey.pem
  Your cert will expire on 2021-06-22. To obtain a new or tweaked
  version of this certificate in the future, simply run certbot
  again. To non-interactively renew *all* of your certificates, run
  "certbot renew"
- Your account credentials have been saved in your Certbot
  configuration directory at /etc/letsencrypt. You should make a
  secure backup of this folder now. This configuration directory will
  also contain certificates and private keys obtained by Certbot so
  making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:

  Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
  Donating to EFF:                    https://eff.org/donate-le

*mailman3 [#u9a780e0]
参考: https://blog.yoosee.net/articles/2022-03-migrate-from-mailman2-to-mailman3-on-debian
** インストール [#y6a1e6f9]
 # apt install mailman3-full
 mailman3 用のデータベースをdbconfig-commonで設定しますか?: はい
 mailman3-web 用のデータベースを dbconfig-common で設定しますか?: はい

** mailman(2.x)からmailman3へ移行 [#ka248d6e]
移行元サーバの/var/lib/mailman/list, /var/lib/mailman/archives/private 以下を移行先サーバにコピー(名前は以下のようなインポートするときのコマンドでしてできるので同じ場所でなくてよい)しておく。
 # python3 /usr/share/mailman3-web/manage.py hyperkitty_import -l ***@azusa.shinshu-u.ac.jp /var/lib/mailman/archives/private/***.mbox/***.mbox
Importing from mbox file /var/lib/mailman/archives/private/***.mbox/***.mbox to ***@azusa.shinshu-u.ac.jp
Computing thread structure
Synchronizing properties with Mailman
9 emails left to refresh, checked 0
Warming up cache
The full-text search index is not updated for this list. It will not be updated by the 'minutely' incremental update job. To update the index for this list, run the Django admin command with arguments 'update_index_one_list ***@azusa.shinshu-u.ac.jp'.
*** 文字コードのエラーで途中で止まる [#j83ab040]
とりあえず、巨大なmboxファイルを分割する。mbox-splitter.phpを使う。
 https://github.com/ryosama/mbox_spliter
エラーとなる文字を削除後、分割したmboxファイルを一つずつインポートする。あるいは、一つのファイルに再びまとめてインポートする。
** mailman3-web [#s80b7134]
-&color(red){superuserでログインできるが、各リストの設定ができない、'NoneType' object has no attribute 'preferred_address'のエラーが出る。};
-&color(red){リストの作成,アーカイブの削除はできる。};→[[削除したらmailmanと同期させる。>https://azusa.shinshu-u.ac.jp/~hasegawa/wiki/?%E8%A8%88%E7%AE%97%E6%A9%9F%E9%96%A2%E4%BF%82/azusa%E3%82%92bullseye%E3%81%AB#nc538194]]
-&color(red){メアドの追加、削除はmailmanコマンドで行う。};
*** superuserの削除(webでもできるかも) [#qad4d9f1]
 # python3 /usr/share/mailman3-web/manage.py shell
 >>> from django.contrib.auth.models import User
 >>> User.objects.get(username="superuserのアカウント名", is_superuser=True).delete()
*** MailingList.DoesNotExistのエラーでて、qclusterのloadが高くなる [#nc538194]
 hyperkitty.models.mailinglist.MailingList.DoesNotExist: MailingList matching query does not exist
どのメーリスがエラーを出しているかのチェック。https://tigrerayé.org/en/post/2022/07/10/hyperkitty-consumes-all-cpu-time-after-removing-a-mail-list/
削除されていれば、
 # python3 /usr/share/mailman3-web/manage.py mailman_sync
でhyperkittyを同期する。
** mailmanコマンド [#rac4ecf5]
- ヘルプ
 # mailman --help
 # mailman lists -h
- メーリスのリスト
 # mailman lists
- メーリスのメンバー表示
 # mailman members LIST@azusa.shinshu-u.ac.jp
- リストにメアドを追加
 # mailman addmembers (ファイル名) LIST@azusa.shinshu-.ac.jp
- リストからメアドを削除
 # mailman delmembers -l LIST@azusa.shinshu-u.ac.jp -f (ファイル名)
 # mailman delmembers -l LIST@azusa.shinshu-u.ac.jp -m (メアド)

*dns [#q9df0ed6]
 # apt install bind9 dnsutils
現azusaから/etc/bind以下をコピー(db.*.168.192, db.he, named.conf.options, named.conf.local, zones.heをコピーすればよい)。
**エラー named error (insecurity proof failed) resolvingが出た場合 [#l410f33c]
/etc/bind/named.conf.optionsで、
 dnssec-validation no; <-autoから
とする。[[ここ>http://blog.livedoor.jp/haruchaco/archives/1610376.html]]を参照。

*fail2ban [#xb269e92]
インストール
 # apt install fail2ban
iptablesにルールを設定する模様。[[設定例>https://www.chrissearle.org/2015/06/16/replacing-denyhosts-with-fail2ban-for-debian/]]

*roundcubeの設定 [#ic18b59d]
インストール~
sqliteを使う場合は、
 # apt install roundcube php7.4-sqlite3  
 データベースの設定を行いますか?: はい
サーバーをlocalhostにし、サーバ選択フォームを非表示、認証を行わないようにする。/etc/roundcube/config.inc.phpで、
 $config['default_host'] = 'localhost';
 $config['smtp_server'] = 'localhost';
 $config['smtp_port'] = 25;
 $config['smtp_user'] = '';
 $config['smtp_pass'] = '';
とする。apache2を再起動する。
 # systemctrl restart apache2

*sshd [#c3bfdd34]
現azusaから/etc/ssh以下のファイルをコピーする。設定ファイルはコピーせずに修正したほうがよいかも。

*sudoの設定 [#u9dae3ba]
現azusaから/etc/sudoers,/etc/sudoers.d以下のファイルをコピーする。設定ファイルはコピーせずに修正したほうがよいかも。~
defaultの設定だと、sudoのグループに追加すればよい。
 # /usr/sbin/vigr
 # id (アカウント名)
で確認後、ログインし直す。

*webアクセス統計 [#q7c0375d]
** awstats [#vf464e9d]
 # apt install awstats
現azusaから/var/lib/awstats以下のファイルをコピーする。
logを読んで統計を更新する。/etc/cron.d/awstatsで、rootで動かす。
** webalizer [#scde3fc9]
bullseyeには入っていない?
** awffull [#scde3fc9]
/etc/awffull/awffull.confをコピーする。

*バックアップ [#i3b10655]
 # apt install rdiff-backup nfs-common
現azusaから/etc/cron.daily/rdiff-backupをコピーし、実行可能にしておく。
 # chmod 755 /etc/cron.daily/rdiff-backup
 # mkdir /mnt/backup

*freeradius [#v2a072ba]
無線LANをWPA-EAP/WPA2-EAPで接続する。
無線LANをWPA2-EAPで接続する。
**Windows11の場合 [#yf6e7fe3]
以下の簡易設定でもOKのはず。~
「設定」→「ネットワークとインターネット」→「Wi-Fi」→「既知のネットワークの管理」→「新しいネットワークの追加」
で以下の設定する。
-ネットワーク名:HEPNet1(学生部屋A621) または、HEPNet2(1F実験室)または、HEPNet3(A619)または、HEPNet4(6F実験室)
-セキュリティの種類: WPA2-エンタープライズ AES
-EAP メソッド: EAP-TTLS
-認証方法: 暗号化されていないパスワード(PAP)

これでつながらない場合は次の設定を行う。

**Windows10,11の場合 [#l86719ff]
コントロールパネルから「ネットワークとインターネット」→「ネットワークの状態とタスクの表示」→「新しい接続またはネットワークのセットアップ」→"ワイヤレスネットワークに手動で接続します"を選び「次へ」
-ネットワーク名:HEPNet1(学生部屋A621) または、HEPNet2(1F実験室)または、HEPNet3(A619)または、HEPNet4(6F実験室)
-セキュリティの種類:WPA2-エンタープライズ
-暗号化の種類:AES (自動入力)

を入力し、「次へ」→「接続の設定を変更します」→「セキュリティ」タブ
-ネットワークの認証方法の選択:Microsoft EAP-TTLS

「設定」ボタンをクリック
-「IDプライバシーを有効にする」のチェックを外す。
-クライアント認証:認証に非EAPメソッドを選択する、暗号化されていないパスワード(PAP)

「OK」ボタンをクリック。「詳細設定」ボタンをクリック。「802.1Xの設定」タブ
-「認証モードを指定する」のチェック
- ユーザの認証を選択。
- (オプション)「資格情報の保存」以下を入力すると、Wi-Fi接続時にこれらのユーザ名、パスワードが使われる。
--ユーザ名:(azusaアカウント名)
--パスワード:(azusaパスワード)

「OK」ボタンをクリック。もう一度「OK」ボタンをクリック。

**Androidの場合(Android 13で確認) [#mabcb49e]
「設定」→「接続」→「Wi-Fi」→利用可能なネットワークから"HEPNetN"(N=1,2,3,4)を選択する。
-EAP方法:TTLS
-ID:(azusaアカウント名)
-パスワード:(azusaパスワード)
-CA証明書:認証しない

**raspberry piの場合 [#f8018911]
 $ sudo apt-get install wpagui
 $ sudo wpa_gui
HEPNet*をダブルクリックして、設定を作成する。
-Authentication : WPA2-Enterprise (EPA)
-Encryption: CCMP
-PSK: 入力不要
-EAP method: TTLS
-Identitiy: (auzsaアカウント名)
-Password: (azusaパスワード)
-CA certificate: 入力不要
-Optional Settings:
--Inner auth: PAP

[[研究室関係]]


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS