Changes between Version 29 and Version 30 of HowTo/SakuraVpsSetup3


Ignore:
Timestamp:
Oct 29, 2019, 5:44:42 AM (5 years ago)
Author:
村山 俊之
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • HowTo/SakuraVpsSetup3

    v29 v30  
    7070== シェルのロケール設定 ==
    7171
    72 初回と同じ。
     72かなり後半の方でどハマリした orz 。 `LANG=ja_JP.UTF-8` を使用するためには `language-pack-ja` とやらをインストールしておかないといけないらしい。([https://qiita.com/mochi-grin-grin/items/ea4fa0799d016ad02c09 参考])
     73
     74{{{
     75#!console
     76$ locale -a
     77C
     78C.UTF-8
     79POSIX
     80en_US
     81en_US.iso88591
     82en_US.utf8
     83$ sudo apt -y install language-pack-ja
     84
     85...
     86
     87$ locale -a
     88C
     89C.UTF-8
     90POSIX
     91en_US
     92en_US.iso88591
     93en_US.utf8
     94ja_JP.utf8
     95$
     96}}}
     97
     98あとは初回と同じ。
    7399
    74100== BIND の設定 ==
     
    9761002mysql> quit
    9771003}}}
     1004
     1005===== WSGI 設定 =====
     1006
     1007WSGI スクリプト周りはすでに記述済みなので、 apache 側の設定だけ。
     1008
     1009{{{
     1010#!console
     1011$ sudo vim /etc/apache2/sites-enabled/developer/trac.conf
     1012}}}
     1013
     1014{{{
     1015<IfModule mod_wsgi.c>
     1016  WSGIScriptAlias /trac/original /var/Developer/trac/original/trac-original.wsgi
     1017  WSGIScriptAlias /trac/projects/test /var/Developer/trac/projects/test/trac-test.wsgi
     1018
     1019  <Directory /var/Developer/trac/original>
     1020    WSGIApplicationGroup %{GLOBAL}
     1021    Order deny,allow
     1022    Allow from all
     1023  </Directory>
     1024
     1025  <Directory /var/Developer/trac/projects/test>
     1026    WSGIApplicationGroup %{GLOBAL}
     1027    Order deny,allow
     1028    Allow from all
     1029  </Directory>
     1030
     1031  <Location /trac/original/otoco/login>
     1032    AuthType Digest
     1033    AuthName realm
     1034    AuthUserFile "/var/Developer/trac/original/otoco/.htdigest"
     1035    Require valid-user
     1036  </Location>
     1037
     1038  <Location /trac/original/ideanote/login>
     1039    AuthType Digest
     1040    AuthName realm
     1041    AuthUserFile "/var/Developer/trac/original/ideanote/.htdigest"
     1042    Require valid-user
     1043  </Location>
     1044
     1045  # ... (以下、似たような設定が続く)
     1046
     1047</IfModule>
     1048}}}
     1049
     1050そして apache を再起動。
     1051
     1052{{{
     1053#!console
     1054$ sudo /etc/init.d/apache2 restart
     1055}}}
     1056
     1057…あれ、404 ですね orz
     1058
     1059===== trac 環境のアップグレード =====
     1060
     1061そうか、 `trac-admin` から upgrade してあげないといけないんだった。
     1062
     1063で、やってあげようとすると mysql がどうのこうのと怒られる。[https://trac.edgewall.org/wiki/MySqlDb この辺]によると、 MySQL-python を入れてあげないといけないっぽい。
     1064
     1065{{{
     1066#!console
     1067$ sudo pip install MySQL-python
     1068[sudo] password for murachi:
     1069The directory '/home/murachi/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
     1070The directory '/home/murachi/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
     1071Collecting MySQL-python
     1072  Downloading https://files.pythonhosted.org/packages/a5/e9/51b544da85a36a68debe7a7091f068d802fc515a3a202652828c73453cad/MySQL-python-1.2.5.zip (108kB)
     1073    100% |################################| 112kB 1.8MB/s
     1074    Complete output from command python setup.py egg_info:
     1075    sh: 1: mysql_config: not found
     1076    Traceback (most recent call last):
     1077      File "<string>", line 1, in <module>
     1078      File "/tmp/pip-install-99Zjnt/MySQL-python/setup.py", line 17, in <module>
     1079        metadata, options = get_config()
     1080      File "/tmp/pip-install-99Zjnt/MySQL-python/setup_posix.py", line 43, in get_config
     1081        libs = mysql_config("libs_r")
     1082      File "/tmp/pip-install-99Zjnt/MySQL-python/setup_posix.py", line 25, in mysql_config
     1083        raise EnvironmentError("%s not found" % (mysql_config.path,))
     1084    EnvironmentError: mysql_config not found
     1085   
     1086    ----------------------------------------
     1087Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-99Zjnt/MySQL-python/
     1088$
     1089}}}
     1090
     1091`mysql_config` って何だ?
     1092
     1093…結局[https://stackoverflow.com/questions/5178292/pip-install-mysql-python-fails-with-environmenterror-mysql-config-not-found 開発用パッケージも必要]ってことらしい。
     1094
     1095{{{
     1096#!console
     1097$ sudo apt -y install libmysqlclient-dev
     1098
     1099...
     1100
     1101$ sudo pip install MySQL-python
     1102}}}
     1103
     1104うん、今度はちゃんと入った。
     1105
     1106気を取り直して、とりあえず ideanote の環境を upgrade
     1107
     1108{{{
     1109#!console
     1110$ cd /var/Developer/trac/original/ideanote
     1111$ trac-admin .
     1112trac-admin 1.2.3 ?????
     1113Trac ???????(?????)???
     1114Copyright (C) 2003-2018 Edgewall Software
     1115
     1116'?' ????? 'help' ???????????????
     1117       
     1118Trac [/var/Developer/trac/original/ideanote]> upgrade
     1119???????????????????????????????????
     1120
     1121TracError: ???????????????????????? InnoDB ??? NDB ???????????????????????????????????????????????????????????????: attachment, auth_cookie, cache, component, enum, milestone, node_change, permission, report, repository, revision, session, session_attribute, system, ticket, ticket_change, ticket_custom, version, wiki
     1122Trac [/var/Developer/trac/original/ideanote]>
     1123}}}
     1124
     1125今度は InnoDB じゃないぞって怒られてしまった… 旧 DB は MyISAM だったってこと? まじかー
     1126
     1127 * [https://trac.edgewall.org/wiki/MySqlDb MySQL and its MySQLdb Python bindings]
     1128
     1129↑を参考に、MyISAM になっているテーブルを InnoDB に変換する。
     1130
     1131{{{
     1132MariaDB [trac_ideanote]> select table_name, engine from information_schema.tables where table_schema = database();
     1133+-------------------+--------+
     1134| table_name        | engine |
     1135+-------------------+--------+
     1136| attachment        | MyISAM |
     1137| auth_cookie       | MyISAM |
     1138| cache             | MyISAM |
     1139| component         | MyISAM |
     1140| enum              | MyISAM |
     1141| milestone         | MyISAM |
     1142| node_change       | MyISAM |
     1143| permission        | MyISAM |
     1144| report            | MyISAM |
     1145| repository        | MyISAM |
     1146| revision          | MyISAM |
     1147| session           | MyISAM |
     1148| session_attribute | MyISAM |
     1149| system            | MyISAM |
     1150| ticket            | MyISAM |
     1151| ticket_change     | MyISAM |
     1152| ticket_custom     | MyISAM |
     1153| version           | MyISAM |
     1154| wiki              | MyISAM |
     1155+-------------------+--------+
     115619 rows in set (0.02 sec)
     1157
     1158MariaDB [trac_ideanote]> alter table attachment engine = InnoDB;
     1159Query OK, 38 rows affected (0.13 sec)             
     1160Records: 38  Duplicates: 0  Warnings: 0
     1161
     1162MariaDB [trac_ideanote]> alter table auth_cookie engine = InnoDB;
     1163Query OK, 1 row affected (0.02 sec)               
     1164Records: 1  Duplicates: 0  Warnings: 0
     1165
     1166MariaDB [trac_ideanote]> alter table cache engine = InnoDB;
     1167Query OK, 1 row affected (0.01 sec)               
     1168Records: 1  Duplicates: 0  Warnings: 0
     1169
     1170...
     1171
     1172MariaDB [trac_ideanote]> alter table wiki engine = InnoDB;
     1173Query OK, 516 rows affected (0.15 sec)             
     1174Records: 516  Duplicates: 0  Warnings: 0
     1175
     1176MariaDB [trac_ideanote]> quit
     1177Bye
     1178}}}
     1179
     1180で、もう一度 upgrade を試すが…
     1181
     1182{{{
     1183Trac [/var/Developer/trac/original/ideanote]> upgrade
     1184アップグレードが失敗しました。問題を解消させてもう一度試してください。
     1185
     1186TracError: すべてのテーブルは照合順序として utf8_bin または utf8mb4_bin で作成されている必要があります。次のテーブルがその照合順序で作成されていません: attachment, auth_cookie, cache, component, enum, milestone, node_change, permission, report, repository, revision, session, session_attribute, system, ticket, ticket_change, ticket_custom, version, wiki
     1187Trac [/var/Developer/trac/original/ideanote]>
     1188}}}
     1189
     1190今度は照合順序ですか…
     1191
     1192
     1193== メールサーバー移行 ==
     1194
     1195ひとまず先にメールサーバーの移行を済ませることにする。
     1196
     1197=== 旧サーバーのメールサーバーを停止 ===
     1198
     1199新しいメールサーバーのホスト名は `mail.harapeko.jp` にしてしまうことにする。そこで、旧サーバーの BIND のゾーン設定を以下の通りに変更した。
     1200
     1201{{{
     1202$TTL    1D
     1203@               IN      SOA     onaka.harapeko.jp. root.onaka.harapeko.jp. (
     1204                        2019050201      ; serial
     1205                        3600            ; refresh 1h
     1206                        900             ; retry 15m
     1207                        3600000         ; expiry 1000h
     1208                        3600            ; minimum 24h
     1209                )
     1210;
     1211                IN      NS      ns.harapeko.jp.
     1212                IN      MX      0 mail.harapeko.jp.
     1213mail            IN      MX      0 mail.harapeko.jp.
     1214onaka           IN      A       49.212.128.142
     1215ns              IN      A       49.212.128.142
     1216mail            IN      A       153.126.157.107
     1217www             IN      CNAME   onaka
     1218daiyokujo       IN      CNAME   onaka   ; for harapeko.asablo.jp/blog
     1219blog            IN      CNAME   onaka
     1220developer       IN      CNAME   onaka
     1221svn             IN      CNAME   onaka
     1222test            IN      CNAME   onaka
     1223}}}
     1224
     1225以前は MX レコードに `developer` を置いていたが、これを `mail` に変更。 `*` は削除し、 `(user id)@harapeko.jp` または `(user id)@mail.harapeko.jp` 以外は届かないことにする。そして `mail` を CNAME レコードから A レコードへ移し、新サーバーのアドレスを割り当てた。
     1226
     1227~~どうせこの設定が世に広まるまでに時間はかかるだろうから~~(←浸透いうなw)、まずはこいつを BIND に reload し、ついでに Postfix を落としてしまった。
     1228
     1229{{{
     1230#!console
     1231# service named reload
     1232# service postfix stop
     1233# service dovecot stop
     1234}}}
     1235
     1236※ 実際のところ、手元のルーターには割とすぐに設定が反映されました。いい時代になった…。
     1237
     1238=== SSL 証明書発行 ===
     1239
     1240Let's Encrypt を使用します。こいつの導入は git を使います。
     1241
     1242{{{
     1243#!console
     1244$ sudo apt install git
     1245
     1246...
     1247
     1248$ git clone https://github.com/certbot/certbot
     1249
     1250...
     1251
     1252$ cd certbot
     1253}}}
     1254
     1255とりあえず証明したいのは `mail.harapeko.jp` ドメインのみ。 Web ページを作成する予定はないので、 Apache の設定はスキップしてスタンドアローンで証明書のみ発行してしまいます。 80番ポートを listen できる必要があるので Apache は一旦止めます。
     1256
     1257{{{
     1258#!console
     1259$ sudo service apache2 stop
     1260$ ./certbot-auto certonly --standalone -d mail.harapeko.jp
     1261}}}
     1262
     1263途中色々と聞かれるので適当に応答します (!Yes/No とかメールアドレスとか)。最終的にこんなメッセージが出てきます。
     1264
     1265{{{
     1266IMPORTANT NOTES:
     1267 - Congratulations! Your certificate and chain have been saved at:
     1268   /etc/letsencrypt/live/mail.harapeko.jp/fullchain.pem
     1269   Your key file has been saved at:
     1270   /etc/letsencrypt/live/mail.harapeko.jp/privkey.pem
     1271   Your cert will expire on 2019-07-31. To obtain a new or tweaked
     1272   version of this certificate in the future, simply run certbot-auto
     1273   again. To non-interactively renew *all* of your certificates, run
     1274   "certbot-auto renew"
     1275}}}
     1276
     1277=== ユーザーアカウントの引き継ぎ ===
     1278
     1279[http://developer.harapeko.jp/trac/original/ideanote/wiki/HowTo/SakuraVpsSetup2#%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%AE%E5%BC%95%E3%81%8D%E7%B6%99%E3%81%8E 前回とほぼ同じことをやりました]。ついでにもはや使われていないいくつかのユーザーアカウントを抹消。
     1280
     1281ちなみに、ログインできないアカウントの登録は Ubuntu では以下のように、 `/sbin/nologin` ではなく `/usr/sbin/nologin` を指定する。
     1282
     1283{{{
     1284#!console
     1285$ sudo useradd -ms /usr/sbin/nologin toshiyuki.murayama
     1286}}}
     1287
     1288そして、これらのアカウントに変更するには、一旦 root を経由する必要がある。
     1289
     1290{{{
     1291#!console
     1292$ sudo su -
     1293# su -s /bin/bash toshiyuki.murayama
     1294
     1295(アカウントを借りてコマンドを発行したいだけであれば sudo -u を使えばいい)
     1296$ sudo -u toshiyuki.murayama any-command -options...
     1297}}}
     1298
     1299また、メールの受信方式を IMAP に変更していたので、今回はメールボックスの移行も行いました。
     1300
     1301{{{
     1302#!console
     1303$ su -s /bin/bash toshiyuki.murayama
     1304$ cd
     1305$ tar -cJvf toshiyuki.murayama.Maildir.tar.xz Maildir
     1306
     1307...
     1308
     1309$ exit
     1310$ sudo mv /home/toshiyuki.murayama.Maildir.tar.xz .
     1311$ rsync -az toshiyuki.murayama.Maildir.tar.xz mitsuko.seki.Maildir.tar.xz -e ssh mail.harapeko.jp:~/
     1312$ ssh mail.harapeko.jp
     1313$ sudo chown toshiyuki.murayama:toshiyuki.murayama toshiyuki.murayama.Maildir.tar.xz
     1314$ sudo mv toshiyuki.murayama.Maildir.tar.xz /home/toshiyuki.murayama/
     1315$ sudo su -
     1316# su -s /bin/bash toshiyuki.murayama
     1317$ cd
     1318$ tar -xJvf toshiyuki.murayama.Maildir.tar.xz
     1319}}}
     1320
     1321(当然他のアカウントの分も…) (と言っても実質使用実績のあるアカウントのみにしましたが)
     1322
     1323=== いろいろとインストール ===
     1324
     1325Postfix, Cyrus SASL, dovecot 辺りを一気にインストールします。多分こんなんでいいはず…
     1326
     1327{{{
     1328#!console
     1329$ sudo apt install postfix dovecot-imapd dovecot-lmtpd dovecot-mysql libsasl2-modules-sql
     1330}}}
     1331
     1332なんかこんな画面が出てきました…。
     1333
     1334[[Image(fig-postfix-configuration-type.png, 800px)]]
     1335
     1336とりあえずこのまま `Internet Site` を選んでみることにします。
     1337
     1338次に「System mail name」を聞かれますが、これは素直に `harapeko.jp` とします。
     1339
     1340※ Cyrus SASL は `sasl2-bin` でした… (汗 後から以下を実行しました (汗
     1341
     1342{{{
     1343#!console
     1344$ sudo apt install sasl2-bin
     1345}}}
     1346
     1347=== IMAP4 設定 ===
     1348
     1349dovecot の設定は概ね今までどおりですが、前回が POP3 でその後 IMAP4 に切り替えて、結果設定内容がごっちゃになっているので改めて整理します。
     1350
     1351`/etc/dovecot/dovecot.conf` は多分そのままで大丈夫です。 `listen` もコメントアウトのままで良いんじゃないかな。 `protocols` は `dovecot-imapd` と `dovecot-lmtpd` をインストールしたことによって、 `/usr/share/dovecot/protocols.d/` の下に `imapd.protocol` と `lmtpd.protocol` ができていて、これらで設定してくれています。
     1352
     1353`/etc/dovecot/conf.d` の下は以下の通り。
     1354
     1355 * `10-auth.conf`
     1356
     1357{{{
     1358# 以下はそのまま
     1359auth_mechanisms = plain
     1360
     1361# 以下はコメントアウト
     1362#!include auth-system.conf.ext
     1363
     1364# 以下はコメントハッシュを外す
     1365!include auth-sql.conf.ext
     1366}}}
     1367
     1368 * `10-mail.conf`
     1369
     1370{{{
     1371# mbox ではなく maildir 形式に
     1372#mail_location = mbox:~/mail:INBOX=/var/mail/%u
     1373mail_location = maildir:~/Maildir
     1374}}}
     1375
     1376 * `10-master.conf`
     1377
     1378{{{
     1379# IMAP はポートを潰して、 IMAPS (SSL/TLS) だけを許容する
     1380service imap-login {
     1381  inet_listener imap {
     1382    #port = 143
     1383    port = 0
     1384  }
     1385  inet_listener imaps {
     1386    port = 993
     1387    ssl = yes
     1388  }
     1389
     1390# ...
     1391
     1392}
     1393}}}
     1394
     1395 * `10-ssl.conf`
     1396
     1397{{{
     1398#ssl = no
     1399ssl = yes
     1400
     1401#ssl_cert = </etc/dovecot/dovecot.pem
     1402ssl_cert = </etc/letsencrypt/live/mail.harapeko.jp/cert.pem
     1403#ssl_key = </etc/dovecot/private/dovecot.pem
     1404ssl_key = </etc/letsencrypt/live/mail.harapeko.jp/privkey.pem
     1405
     1406#ssl_ca =
     1407ssl_ca = </etc/letsencrypt/live/mail.harapeko.jp/chain.pem
     1408}}}
     1409
     1410それから、 `/etc/dovecot/dovecot-sql.conf.ext` を以下の通りに修正する。
     1411
     1412{{{
     1413driver = mysql
     1414
     1415connect = host=localhost dbname=mailusers user=mailusers password=パスワード
     1416
     1417#default_pass_scheme = MD5
     1418default_pass_scheme = plain
     1419
     1420password_query = select userid as username, domain, plain_passwd as password from users where userid = '%n' and domain in ('%d', 'mail.harapeko.jp')
     1421user_query = select home, uid, gid from users where userid = '%n' and domain in ('%d', 'mail.harapeko.jp')
     1422}}}
     1423
     1424`default_pass_scheme` のデフォルト値は `MD5` になっている。これを明示的に変更しないと `password_query` で取得した `password` を MD5 ハッシュされたものとして評価する。本当はそのほうが嬉しいんだが、 SASL の auxprop がパスワードをハッシュ化することに対応していないので、残念だが `plain` としている。
     1425
     1426`password_query`, `user_query` で検索条件に指定しているドメイン名の `%d` は、ログイン時のユーザー名を `user@mail.harapeko.jp` のような形式で指定する場合の `@` より後ろの部分が渡される。従来このユーザー名の `@` 以降を省略してログインした場合でもメールサーバーのドメイン名が渡されていたはずなのだが、現行では空文字が渡されてしまう模様。メーラー側の設定は極力変更しないで済むようにしたかったので、 `user` のままでも `user@mail.harapeko.jp` とした場合でも許容されるよう、 SQL を若干工夫している。
     1427
     1428とりあえずここまでで dovecot を再起動。
     1429
     1430{{{
     1431#!console
     1432$ sudo service dovecot restart
     1433}}}
     1434
     1435~~これでとりあえず受信はできるようになったかなと Thunderbird から繋いでみたが、受信できず…。続きは明日以降に。~~ 以上の設定でとりあえず IMAP4 による閲覧はできるようになった。
     1436
     1437=== SASL 設定 ===
     1438
     1439[https://chee-s.net/ubuntu14-04postfixdovecotsasl%E3%81%A7smtp%E8%AA%8D%E8%A8%BC こちらのサイト]を参考にさせていただきました。
     1440
     1441設定ファイルは `/etc/default/saslauthd` 。
     1442
     1443{{{
     1444# 自動起動を有効にしておく
     1445#START=no
     1446START=yes
     1447
     1448# 以下の変数の内容を確認しておく (そのままでいい)
     1449OPTIONS="-c -m /var/run/saslauthd"
     1450}}}
     1451
     1452`OPTIONS` 変数に指定されている `-m` オプションのパスは存在するディレクトリでなければならない。古いバージョンの Ubuntu ではこれが存在しないということがあったらしいが、今回の場合はちゃんと存在していた。
     1453
     1454`smtpd.conf` は `/etc/postfix/sasl/` の下に作ればいいらしい。内容は前回と同じでいいんじゃないかな。
     1455
     1456次に `/etc/postfix/main.cf` を編集。
     1457
     1458{{{
     1459#
     1460# SASL の設定 (追加)
     1461smtpd_sasl_auth_enable = yes
     1462smtpd_sasl_security_options = noanonymous   
     1463smtpd_sasl_local_domain = $myhostname
     1464
     1465# SSL/TLS 鍵の設定
     1466#smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
     1467#smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
     1468smtpd_tls_cert_file=/etc/letsencrypt/live/mail.harapeko.jp/cert.pem
     1469smtpd_tls_key_file=/etc/letsencrypt/live/mail.harapeko.jp/privkey.pem
     1470smtpd_tls_CAfile=/etc/letsencrypt/live/mail.harapeko.jp/chain.pem
     1471
     1472# TLS を使用する (変更なし)
     1473smtpd_use_tls=yes
     1474smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
     1475smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
     1476
     1477# TLS 認証のみを使用 (追加)
     1478smtpd_tls_auth_only=yes
     1479
     1480# リレーの許可設定 (変更なし)
     1481smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
     1482
     1483# ホスト名 (変更)
     1484#myhostname = ik1-314-17353.vs.sakura.ne.jp
     1485myhostname = mail.harapeko.jp
     1486
     1487# オリジン (変更なし)
     1488myorigin = /etc/mailname
     1489
     1490# 自ホスト宛のメールとして処理するドメイン名 (変更)
     1491#mydestination = $myhostname, harapeko.jp, ik1-314-17353.vs.sakura.ne.jp, localhost.vs.sakura.ne.jp, localhost
     1492mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
     1493
     1494# 自ホストネットワークの設定 (変更)
     1495mynetworks_style = host
     1496#mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
     1497
     1498# メールボックスの設定 (追加)
     1499home_mailbox = Maildir/
     1500
     1501# メール 1通あたりのサイズ制限 (追加)
     1502message_size_limit = 10485760
     1503}}}
     1504
     1505Postfix は 2.10 以降リレーの許可設定ルールが変更になった (今回入っているのは 3.1.0)。以前は以下のように設定していたが、
     1506
     1507{{{
     1508smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
     1509}}}
     1510
     15112.10 以降では `smptd_relay_restrictions` を設定し、 Reject するための特別なルールを追加したいときに `smptd_recipient_restrictions` を追加する、というルールに変更された。 `smtpd_relay_restrictions` を設定しないとメールの送信自体が常に失敗するようになる模様。
     1512
     1513`myorigin` に指定されているパスのファイルには `harapeko.jp` とだけ書かれていた。恐らく Postfix インストール時に聞かれた「System mail name」がここに書き込まれたものと思われる。
     1514
     1515なお、**インストール時の自動生成では `home_mailbox` の設定が含まれておらず、そのままだと他所からのメールがどこにも保存されない。必ず設定を追加する必要がある。**
     1516
     1517~~TODO:~~ なんかよさげなのであとで[https://blog.dshimizu.jp/article/215 これ]を試してみる。 ←試してみました。すべて解決した。
     1518
     1519ここまでの設定に加えて以下の変更を追加。
     1520
     1521 * `/etc/postfix/main.cf`
     1522{{{
     1523# SASL settings
     1524smtpd_sasl_auth_enable = yes
     1525smtpd_sasl_type = dovecot         # <- 追加
     1526smtpd_sasl_path = private/auth    # <- 追加
     1527smtpd_sasl_security_options = noanonymous
     1528smtpd_sasl_local_domain = $myhostname
     1529}}}
     1530
     1531SASL も dovecot にやらせる時代が来てたらしい。ひぇ〜 (おっさんっぽい反応)
     1532
     1533 * `/etc/dovecot/conf.d/10-master.conf`
     1534{{{
     1535# 以下は蛇足 (pop3 は動いてほしくないので徹底的に停止)
     1536service pop3-login {
     1537  inet_listener pop3 {
     1538    port = 0
     1539    #port = 110
     1540  }
     1541  inet_listener pop3s {
     1542    port = 0
     1543    #port = 995
     1544    #ssl = yes
     1545  }
     1546}
     1547
     1548# ...
     1549
     1550service auth {
     1551  # ...
     1552
     1553  # 以下はそのまま
     1554  unix_listener auth-userdb {
     1555    #mode = 0666
     1556    #user =
     1557    #group =
     1558  }
     1559
     1560  # 以下はコメントアウトされていたのを外し、 user, group の定義を追加
     1561  # Postfix smtp-auth
     1562  unix_listener /var/spool/postfix/private/auth {
     1563    mode = 0666
     1564    user = postfix
     1565    group = postfix
     1566  }
     1567}}}
     1568
     1569これで postfix と dovecot を restart したらメール送信も無事動くようになりました。よかった…。
     1570
     1571TODO: (あとで調査) SASL も dovecot に任せられるということは、パスワード比較時にハッシュ関数をかます用にすればパスワードをハッシュ値で持てるようになるということなのでは…
     1572
     1573…サイズオーバーになってしまったので、[wiki:HowTo/SakuraVpsSetup3b パート2] に続く。