liujia 发布的文章

住广州城中村的第一个月房租费用

我是2024-09-03日入住,在2024-10-02日抄得室内水表和房外电表读数。用水约1方(5元),用电约36度(1.5元)。按照租房合同:单间房租850元,卫生管理费30元。合计:850 + 30 + (1+1)x5 + 36x1.5 = 944元。其中,用水低于2方的,按2方计。一开始,我还以为房东每月送2方水用,原来“基数”指的“计费的最小用水量值”。合同部分原文是:“每水水费以2吨为‘基数’,超过基数则按实际用量收取”。我理解有错误。

房租

逛广州天河公园

吃过早餐后,约九点多,躺在床上时,我突然想去看看新闻里提到的天河公园“相亲角”。我先在网上查了一下出行的线路,从附近的“沐陂村口”坐496路公交车到“科韵路站”下车,走一小段路就能到了。

差不多十点时,我上了公交车,当走到天河公园的“小东门”时,约十点半。来的路上,在建业路那,科技园区里有“国家级”的科技公司字样。路的另一边建筑物有中国银行、建设银行和广州酒家等。

进到公园里,游人不少,各个年龄段的都有:青年、中老年;牵着小孩手的、推婴儿车的,也有护着不能自主走路老人的;有男女一起的、有亲戚一大家的、也有一个人跑步健身的。公园里树多、草坪绿,空气挺好的。路边的,一般是多茎多须的榕树;偶尔也可以看到小掇的竹子。我不识得路,也分不清方向,就是随着较多的人流走。走到一个湖,湖的一边有老年人跳广场舞,另一边是很多小孩往湖边扔食物,引得水里那些暗红的身影围绕着游动,时不时会有一条鲤鱼冒出水面,张开大嘴,吞下食物,投喂鱼食的小孩看到后会很高兴。我再往前走,看到一个小卖部,里边写着鱼料3元一包。前边正中是个多层级的平台,每上几个台阶就是一个平台,就像一个多层的蛋糕。每个平台里隔一段会有一桌围聚的人:有打纸牌的、也有下象棋的。越往上走,越接近原生态的山。路是人走出来的小土路,四通八达,想走哪儿就去哪。公园设有几个公厕,挺方便的。

我感觉我已经走了大半圈,从东门到北门,再到了小卖部,没看到新闻里提到“人山人海的相亲角”。我就去问路人。

“请问,‘相亲角’应该怎么走?”
“左边沿路,往上走,就会看到的了。现在没到时间,要12:30左右才会挂(信息)牌,下午两点左右的时候人较多。你再在公园里转一转。”
“‘相亲角’这么有名,为什么没有在公园的地图立牌里标出呢?”
“哪里出名。有的(信息)挂了很久了。你不要加群啊,小心被骗。”路人好心地提醒我。
“是不是这里?我之前经过一个小广场,有两边立着几条像晾衣绳的杆子,里边有不少人踢毽子。”我指着我手机上拍的一张相片问。
"是的,是这里。那些线是用来挂征婚信息纸张的。"

我没等到十二点半“相亲角”开放,因为肚子饿,原路搭496路公交车返回了。

路边的银行

科韵路,科技园

天河公园,小东门

公园路边的榕树

广东技术师范大学

湖

小土路

相亲角

到新塘综合菜市场买饺子

上午约十点,我从出租屋出发,打算走路到新塘菜市场,找“袁小饺”店,因为我在“美团”上买了一份5块钱的15个“玉米鲜肉云吞”。

我沿“沐陂大街”,由西向东,一直走到“沐陂公园”那儿。我停了下来,站在立交桥下,查看手机app上的地图。我在犹豫:前边有条分岔路:一条上坡,沿立交桥下走;另一条是需要穿过桥洞,不知道是能到哪。我问附近一个站着,戴着施工安全帽的人,他回答说往上坡走就行。我走出立交桥后,看到了路边建筑有“天河星作”的字样,知道到“合景路”了。我再往前走一小段,看到了“私立华联学院”的大门。这附近有“沐陂村”的公交站。然后我再走约五百米,左转进入“酉约新村大街”,再拐两个弯,看到了座公祠:“惠言简公祠”。我看了两遍,才记下了名字。

公祠旁边有菜市的入口,我走进,看到门附近有一间铺的招牌是“客家豆腐”,摆着有水豆腐卖。我继续往前走,边走边四周看,找“袁小饺”的招牌。走不一会儿,看到了。这是一间如报亭般的玻璃房,里边有三个工作人员。我在窗口打了招呼,说从“美团”下的单子。工作人员用手机扫码核销后,将饺子装进一条胶袋里递出来,我接住。我继续在市场里逛。菜市场很大,估计有几千平方米,顶栅好像是铁皮的,半开放的。这里有很多档(铺)位。有卖鱼的、卖鸡的、卖青菜的,也有卖干货,卖包装食品的。档位上基本上摆满了货品,逛市场的人不多。我倒回到之前进来时的豆腐铺。买了一块“嫩豆腐”,1.5元钱。那里还有2元/块的“老豆腐”。老板熟练地用一张小铁皮将水豆腐从托板里铲开,放进胶袋里。

我走出市场,找到停在路边的共享单车,准备骑回出租房。上车之前,我特意将装着豆腐和饺子的胶袋各自打上活结,想避免路上颠簸将饺子抛出。骑了约15分钟,回到了。果然,有几个饺子从单车的车筐篮的间隙里漏出,挂着。豆腐的情况不太好,因为颠簸,将成整块的豆腐,给震碎、震裂了。我心疼地提起豆腐的袋子,四周看了个遍,评估约有一半的豆腐还是成型的。我只想到,不让豆腐给颠簸的抛出车筐篮,但没料到豆腐是软的,是经不起震动的。

我煮开了水,放入八个饺子,再将在“美团”上买的秋葵放到锅里。煮几分钟,最后放进水豆腐。即使有些是碎成小块的豆腐,我都放进锅里了,一锅熟。煮好后,我托着锅底,夹豆腐吃,觉得还不错:咬开的豆腐不会有小坑,口感嫩滑,不会布,有豆腐味;汤底也不会煮成豆浆那般。不知道是否因为我过久没吃水豆腐了,这次在广州吃的,觉得比在和平的东水豆腐还要好点。

“私立华联学院”的门口

用 roudcube webmail 的 password plugin 更改密码后 postfix 报错 SQL prepare failed: disk I/O error

环境:服务端是 postfix + sqlite3 ,当 roundcube webmail 配置了 password 插件后,用户能更改密码,但之后 postfix 报错,错误信息是 SQL prepare failed: disk I/O error 。影响的结果是,收不了邮件。

原因:roundcube 的 sqlite 连接配置时,使用了 PRAGMA journal_mode = WAL ,但 postfix 不支持。

尝试:可将 sqlite 的 journal_mode 更改回原来的 delete 。如在Linux里执行命令: sqlite3 /var/vmail/postfixadmin.db 'PRAGMA journal_mode=delete;'

# sqlite3 /var/vmail/postfixadmin.db
SQLite version 3.40.1 2022-12-28 14:03:47
Enter ".help" for usage hints.
sqlite> PRAGMA journal_mode;
delete

参考:

在 debian 12 安装 postfix + dovecot + sqlite3 + postfixadmin + roundcube

需求:在 debian 12 系统里搭建用 postfix 和 dovecot ,用 sqlite3 存储,postfixadmin 管理,roundcube 作为 webmail 。

步骤:

参考的配置文件内容:

# postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
compatibility_level = 3.6
inet_interfaces = all
inet_protocols = all
mailbox_size_limit = 0
mydestination = $myhostname, mail.drsvps.2xinxian.top, localhost.drsvps.2xinxian.top, , localhost
myhostname = mail.drsvps.2xinxian.top
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relayhost =
smtp_tls_CApath = /etc/ssl/certs
smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_tls_cert_file = /etc/ssl/certs/postfix.pem
smtpd_tls_key_file = /etc/ssl/private/postfix.key
smtpd_tls_security_level = may
virtual_alias_maps = sqlite:/etc/postfix/sqlite_virtual_alias_maps.cf, sqlite:/etc/postfix/sqlite_virtual_alias_domain_maps.cf, sqlite:/etc/postfix/sqlite_virtual_alias_domain_catchall_maps.cf
virtual_mailbox_domains = sqlite:/etc/postfix/sqlite_virtual_domains_maps.cf
virtual_mailbox_maps = sqlite:/etc/postfix/sqlite_virtual_mailbox_maps.cf, sqlite:/etc/postfix/sqlite_virtual_alias_domain_mailbox_maps.cf
virtual_transport = lmtp:unix:private/dovecot-lmtp
# cat /etc/postfix/sqlite_virtual_alias_maps.cf
dbpath = /var/vmail/postfixadmin.db
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
# cat /etc/postfix/sqlite_virtual_alias_domain_maps.cf
dbpath = /var/vmail/postfixadmin.db
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = printf('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
# cat /etc/postfix/sqlite_virtual_alias_domain_catchall_maps.cf
dbpath = /var/vmail/postfixadmin.db
query  = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = printf('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
# cat /etc/postfix/sqlite_virtual_domains_maps.cf
dbpath = /var/vmail/postfixadmin.db
query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'
# cat /etc/postfix/sqlite_virtual_mailbox_maps.cf
dbpath = /var/vmail/postfixadmin.db
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
cat /etc/postfix/sqlite_virtual_alias_domain_mailbox_maps.cf
dbpath = /var/vmail/postfixadmin.db
query = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = printf('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1'
# postconf -M
smtp       inet  n       -       y       -       -       smtpd
pickup     unix  n       -       y       60      1       pickup
cleanup    unix  n       -       y       -       0       cleanup
qmgr       unix  n       -       n       300     1       qmgr
tlsmgr     unix  -       -       y       1000?   1       tlsmgr
rewrite    unix  -       -       y       -       -       trivial-rewrite
bounce     unix  -       -       y       -       0       bounce
defer      unix  -       -       y       -       0       bounce
trace      unix  -       -       y       -       0       bounce
verify     unix  -       -       y       -       1       verify
flush      unix  n       -       y       1000?   0       flush
proxymap   unix  -       -       n       -       -       proxymap
proxywrite unix  -       -       n       -       1       proxymap
smtp       unix  -       -       y       -       -       smtp
relay      unix  -       -       y       -       -       smtp -o syslog_name=postfix/$service_name
showq      unix  n       -       y       -       -       showq
error      unix  -       -       y       -       -       error
retry      unix  -       -       y       -       -       error
discard    unix  -       -       y       -       -       discard
local      unix  -       n       n       -       -       local
virtual    unix  -       n       n       -       -       virtual
lmtp       unix  -       -       y       -       -       lmtp
anvil      unix  -       -       y       -       1       anvil
scache     unix  -       -       y       -       1       scache
postlog    unix-dgram n  -       n       -       1       postlogd
maildrop   unix  -       n       n       -       -       pipe flags=DRXhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
uucp       unix  -       n       n       -       -       pipe flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
ifmail     unix  -       n       n       -       -       pipe flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp      unix  -       n       n       -       -       pipe flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix - n       n       -       2       pipe flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman    unix  -       n       n       -       -       pipe flags=FRX user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user}
submission inet  n       -       n       -       -       smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject
# doveconf -n
# 2.3.19.1 (9b53102964): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.19 (4eae2f79)
# OS: Linux 6.1.0-9-amd64 x86_64 Debian 12.0 ext4
# Hostname: mail.drsvps.2xinxian.top
auth_mechanisms = plain login
disable_plaintext_auth = no
first_valid_uid = 150
last_valid_uid = 150
mail_gid = mail
mail_location = maildir:/var/vmail/%d/%n
mail_privileged_group = mail
mail_uid = vmail
namespace inbox {
  inbox = yes
  location =
  mailbox Drafts {
    special_use = \Drafts
  }
  mailbox Junk {
    special_use = \Junk
  }
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Trash {
    special_use = \Trash
  }
  prefix =
}
passdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
protocols = " imap lmtp pop3"
service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0660
    user = postfix
  }
  unix_listener auth-userdb {
    mode = 0600
    user = vmail
  }
}
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    group = postfix
    mode = 0600
    user = postfix
  }
}
ssl_cert = </etc/ssl/certs/postfix.pem
ssl_client_ca_dir = /etc/ssl/certs
ssl_dh = # hidden, use -P to show it
ssl_key = # hidden, use -P to show it
userdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
# cat /etc/nginx/sites-enabled/postfixadmin
server {
        listen 8082 default_server;
        listen [::]:8082 default_server;

        # SSL configuration
        #
        listen 8083 ssl default_server;
        listen [::]:8083 ssl default_server;

        ssl_certificate     /etc/ssl/certs/postfix.pem;
        ssl_certificate_key /etc/ssl/private/postfix.key;

        root /opt/www/postfixadmin/public;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;

        server_name _;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

        # pass PHP scripts to FastCGI server
        #
        location ~ \.php$ {
               include snippets/fastcgi-php.conf;
               fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        }
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #       deny all;
        #}
}
cat /opt/www/postfixadmin/config.local.php
<?php
$CONF['configured'] = true;
$CONF['database_type'] = 'sqlite';
$CONF['database_name'] = '/var/vmail/postfixadmin.db';

$CONF['aliases'] = '0';
$CONF['mailboxes'] = '0';
$CONF['domain_quota'] = 'NO';
$CONF['password_expiration'] = 'NO';
$CONF['setup_password'] = '$2y$10$n6BEmoey9hBdqRiXt.aI2OR6KwY2SObjH88ibJYX2hcMWfetgWQIe';
# cat /etc/nginx/sites-enabled/mail
server {
        listen 80;
        listen [::]:80;

        # SSL configuration
        #
        listen 443 ssl default_server;
        listen [::]:443 ssl default_server;

        ssl_certificate     /etc/ssl/certs/postfix.pem;
        ssl_certificate_key /etc/ssl/private/postfix.key;

        root /opt/www/mail/public_html;

        # Add index.php to the list if you are using PHP
        index index.php index.html index.htm index.nginx-debian.html;

        server_name mail.drsvps.2xinxian.top;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

        # pass PHP scripts to FastCGI server
        #
        location ~ \.php$ {
               include snippets/fastcgi-php.conf;
               fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #       deny all;
        #}
}

参考命令:

    9  hostnamectl set-hostname mail.drsvps.2xinxian.top
   10  vi /etc/hosts
   11  exec bash
   12  apt update
   13  man useradd
   14  man useradd
   15  useradd -r -u 150 -g mail -d /var/vmail -s /sbin/nologin -c "Virtual Mail User" vmail
   16  ls -l /var/
   17  mkdir -p /var/vmail
   18  chmod -R 770 /var/vmail
   19  chown -R vmail:mail /var/vmail
   20  apt install postfix postfix-sqlite
   21  apt install php-fpm nginx php-imap php-mbstring
   22  ls
   23  ls
   24  more exec_recipe.log 
   25  ls
   26  more recipe_-398.log 
   27  ls
   28  ls
   29  cd /etc/nginx/sites-enabled/
   30  ls
   31  cp default postfixadmin
   32  vi postfixadmin 
   33  systemctl restart nginx
   34  cd /opt/
   35  ls
   36  mkdir www
   37  cd www
   38  ls
   39  wget https://github.com/postfixadmin/postfixadmin/archive/refs/tags/postfixadmin-3.3.13.tar.gz
   40  tar -xzvf postfixadmin-3.3.13.tar.gz 
   41  mv postfixadmin-postfixadmin-3.3.13 postfixadmin
   42  cd postfixadmin
   43  ls
   44  cp -a config.inc.php config.local.php 
   45  vi config.local.php 
   46  vi config.local.php 
   47  vi config.local.php 
   48  cd ..
   49  chown -R www-data:www-data postfixadmin
   50  touch /var/vmail/postfixadmin.db
   51  chown vmail:mail /var/vmail/postfixadmin.db
   52  ls -l /var/vmail/postfixadmin.db 
   53  usermod -a -G mail www-data
   54  chmod 770 /var/vmail/postfixadmin.db 
   55  ls
   56  cd postfixadmin
   57  ls
   58  vi /etc/nginx/sites-enabled/postfixadmin 
   59  systemctl restart nginx
   60  vi config.local.php 
   61  cd ..
   62  ls
   63  ls -l
   64  cd postfixadmin
   65  ls
   66  vi config.local.php 
   67  ls -l /var/vmail/postfixadmin.db
   68  apt install php-sqlite
   69  apt install php-sqlite3
   70  systemctl restart php8.2-fpm
   71  cd public/
   72  ls
   73  cd ..
   74  ls
   75  mkdir templates_c
   76  chown -R www-data:www-data templates_c/
   77  vi /etc/postfix/sqlite_virtual_alias_maps.cf
   78  vi /etc/postfix/sqlite_virtual_alias_domain_maps.cf
   79  vi /etc/postfix/sqlite_virtual_alias_domain_catchall_maps.cf
   80  vi /etc/postfix/sqlite_virtual_domains_maps.cf
   81  vi /etc/postfix/sqlite_virtual_mailbox_maps.cf
   82  vi /etc/postfix/sqlite_virtual_alias_domain_mailbox_maps.cf
   83   
   84  postconf -e "virtual_mailbox_domains = sqlite:/etc/postfix/sqlite_virtual_domains_maps.cf"
   85  postconf -e "virtual_alias_maps =  sqlite:/etc/postfix/sqlite_virtual_alias_maps.cf, sqlite:/etc/postfix/sqlite_virtual_alias_domain_maps.cf, sqlite:/etc/postfix/sqlite_virtual_alias_domain_catchall_maps.cf"
   86  postconf -e "virtual_mailbox_maps = sqlite:/etc/postfix/sqlite_virtual_mailbox_maps.cf, sqlite:/etc/postfix/sqlite_virtual_alias_domain_mailbox_maps.cf"
   87  postconf -n
   88  postconf -e "smtpd_sasl_type = dovecot"
   89  postconf -e "smtpd_sasl_path = private/auth"
   90  postconf -e "smtpd_sasl_auth_enable = yes"
   91  postconf -e "smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination"
   92  postconf -e "virtual_transport = lmtp:unix:private/dovecot-lmtp"
   93  postconf -e "smtpd_tls_cert_file = /etc/ssl/certs/postfix.pem"
   94  postconf -e "smtpd_tls_key_file = /etc/ssl/private/postfix.key"
   95  postconf -n
   96  vi /etc/postfix/master.cf
   97  apt-get install dovecot-imapd dovecot-lmtpd dovecot-pop3d dovecot-sqlite
   98  vi /etc/dovecot/conf.d/10-mail.conf
   99  vi /etc/dovecot/conf.d/10-auth.conf
  100  vi /etc/dovecot/conf.d/auth-sql.conf.ext 
  101  vi /etc/dovecot/dovecot-sql.conf.ext
  102  vi /etc/dovecot/dovecot-sql.conf.ext
  103  vi /etc/dovecot/conf.d/10-ssl.conf
  104  vi /etc/dovecot/conf.d/10-master.conf
  105  systemctl restart dovecot
  106  journalctl -u dovecot
  107  journalctl -u dovecot -n 20
  108  journalctl -u dovecot -n 20 --no-pager
  109  wget -O -  https://get.acme.sh | sh -s email=my@example.com
  110  /root/.acme.sh/acme.sh --issue -d mail.drsvps.2xinxian.top --webroot /var/www/html 
  111  ln -s /root/.acme.sh/mail.drsvps.2xinxian.top_ecc/fullchain.cer /etc/ssl/certs/postfix.pem
  112  ln -s /root/.acme.sh/mail.drsvps.2xinxian.top_ecc/mail.drsvps.2xinxian.top.key /etc/ssl/private/postfix.key
  113  systemctl restart dovecot
  114  ss -anp | grep :110
  115  cd ..
  116  ls
  117  wget https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz
  118  tar -xzvf roundcubemail-1.6.9-complete.tar.gz 
  119  mv roundcubemail-1.6.9 mail
  120  chown -R www-data:www-data mail
  121  ls
  122  cd ..
  123  ls
  124  cd www
  125  ls
  126  touch round.db
  127  chown www-data:www-data round.db
  128  ls
  129  mv mail /var/www/html/
  130  mv round.db /var/www
  131  vi /etc/nginx/sites-enabled/default 
  132  systemtl restart nginx
  133  systemctl restart nginx
  134  exit
  135  ls
  136  vi /etc/nginx/sites-enabled/default 
  137  systemctl restart nginx.service 
  138  tail /var/log/nginx/error.log 
  139  tail /var/log/nginx/access.log 
  140  cd /var/www/html/mail/
  141  ls
  142  ls -l
  143  cd config/
  144  ls
  145  cp -a config.inc.php.sample config.inc.php
  146  tail /var/log/nginx/error.log 
  147  cd ..
  148  ls
  149  vi index.php 
  150  cd config/
  151  ls
  152  mv config.inc.php config.inc.php.bak
  153  php
  154  ls
  155  cd ..
  156  ls
  157  php index.php 
  158  tail logs/
  159  ls -l logs/
  160  tail /var/log/nginx/error.log 
  161  tail /var/log/php8.2-fpm.log 
  162  vi /etc/nginx/sites-enabled/default 
  163  systemctl restart nginx
  164  apt install php-dom php-xml php-intl
  165  systemctl restart php8.2-fpm.service 
  174  vi mail/config/config.inc.php
  197  vi /etc/nginx/sites-enabled/default 
  198  systemctl restart nginx
  199  vi /etc/nginx/sites-enabled/default 
  200  systemctl restart nginx
  201  tail /var/log/nginx/error.log 
  203  ls
  204  vi /etc/nginx/sites-enabled/default 
  206  systemctl restart nginx
  207  tail /var/log/nginx/error.log 
  213  cd /etc/nginx/sites-enabled/
  214  ls
  215  cp postfixadmin mail
  216  vi mail 
  217  systemctl restart nginx
  218  tail /var/log/nginx/error.log 
  219  ls -l /opt/www/mail/public_html/
  220  vi mail 
  221  systemctl restart nginx
  222  ls -l /opt/www/mail/
  223  tail /var/log/nginx/error.log 
  224  vi mail
  225  systemctl restart nginx
  226  cd /opt/www/
  227  ls
  228  cd mail/
  229  ls
  230  ls
  231  vi config/config.inc.php
  232  vi /opt/www/postfixadmin/config.local.php 
  233  tail logs/errors.log 
  234  journalctl -u dovecot.service -n 20 --no-pager
  235  ls
  236  vi /etc/dovecot/dovecot-sql.conf.ext 
  237  journalctl -u dovecot.service -n 20 --no-pager
  238  ls
  239  vi /etc/dovecot/dovecot-sql.conf.ext 
  240  tail logs/errors.log 
  241  apt install sqlite3
  242  sqlite3 /var/vmail/postfixadmin.db 
  243  ls
  244  cd plugins/
  245  ls
  246  cd password/
  247  ls
  248  cp config.inc.php.dist config.inc.php
  249  vi config.inc.php
  259  ls -l /etc/ssl/private/postfix.key
  260  ls -l /root/.acme.sh/mail.drsvps.2xinxian.top_ecc/mail.drsvps.2xinxian.top.key
  261  vi /etc/dovecot/conf.d/10-master.conf 
  262  systemctl restart dovecot.service 
  263  journalctl -u dovecot.service -n 20 --no-pager
  264  chown dovecot /root/.acme.sh/mail.drsvps.2xinxian.top_ecc/mail.drsvps.2xinxian.top.key
  265  journalctl -u dovecot.service -n 20 --no-pager
  266  cd /etc/nginx/sites-enabled/
  267  ls
  268  vi mail 
  269  nginx -t
  270  nginx -s reload
  271  vi /etc/dovecot/conf.d/10-ssl.conf 
  272  vi /etc/dovecot/conf.d/10-auth.conf
  273  systemctl restart dovecot.s
  274  systemctl restart dovecot.service 
  275  vi /etc/dovecot/conf.d/10-auth.conf
  276  vi /etc/dovecot/conf.d/10-master.conf 
  279  systemctl restart dovecot.service 
  283  vi /etc/postfix/sqlite_virtual_alias_maps.cf
  284  sqlite3 /var/vmail/postfixadmin.db 
  285  ls -l /var/vmail/postfixadmin.db
  286  vi /etc/postfix/sqlite_virtual_alias_maps.cf
  287  systemctl restart postfix dovecot.service 
  288  journalctl -u postfix@-.service -n 20 --no-pager
  289  postmap -q he@drsvps.2xinxian.top sqlite:/etc/postfix/sql/sqlite_virtual_alias_maps.cf
  290  postmap -q he@drsvps.2xinxian.top sqlite:/etc/postfix/sqlite_virtual_alias_maps.cf
  297  journalctl -u postfix@-.service -n 20 --no-pager
  322  apt install postfix-sqlite
  323  ls -l a /var/vmail/
  324  journalctl -u postfix@-.service -n 20 --no-pager
  327  vi /etc/postfix/master.cf
  328  sqlite3 /var/vmail/postfixadmin.db 'PRAGMA journal_mode=delete;'
  329  cd /opt/www/mail/
  330  grep -rnw ./ -e "journal_mode"
  331  vi program/lib/Roundcube/db/sqlite.php
  332  journalctl -u postfix@-.service -n 20 --no-pager
  336  vi /etc/dovecot/conf.d/10-ssl.conf 
  337  vi /etc/dovecot/conf.d/10-auth.conf 
  338  systemctl restart dovecot
  339  vi config/config.inc.php

参考: