树莓派动态ipv6安装邮件服务器sendmail

在树莓派上安装和配置sendmail,搭建自己的邮件服务器

对于绑定自定义域名的邮箱,需要在域名解析里面增加mx记录,注意:记录值要填写已经解析过的地址,具体如下:

安装sendmail

sudo apt install -y install sendmail sendmail-cf

sendmail的smtp认证配置(不需要认证的可滤过)

设置sendmail服务的网络访问权限

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl 

改为

DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl 

生成sendmail配置文件

m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf  #需在root权限下

添加域名

sudo nano /etc/mail/local-host-names
#添加 buryin.com

修改submit.cf文件

sudo nano /etc/mail/submit.cf

找到行 #Dj$w.Foo.COM,修改为

Djburyin.com

重启服务使能已配置参数

sudo service sendmail restart

测试一下邮件发送

echo “这是树莓派的sendmail测试” | mail -s 测试 up@up.day

其它可参数配置

centos安装sendmail服务及设置【亲测好用!】_Gavin Matthew的博客-CSDN博客_centos sendmail

树莓派下打包自己的安装程序

以打包codon为例
mkdir codon && cd codon
mkdir DEBIAN usr && cd usr && mkdir bin
cd DEBIAN
nano control


Package: codon
Version: 1.0.0
Architecture: arm64
Maintainer: jack
Secion: utils
Priority: optional
Installed_Size: #可以空白
Description: codon package
#此处要空一行

sudo dpkg -b codon
dpkg-name codon.deb #改名
sudo dpkg -i codon_1.0.0_arm64.deb  #安装
sudo dpkg -r codon #卸载,或者sudo dpkg -P codon

注意:
打包过程中,执行文件放入bin目录,usr的lib目录下放入so文件,同时在usr下拷贝stdlib目录

https://blog.csdn.net/qq_50998481/article/details/127788849

树莓派系统的codon编译程序

作为目前地表最强的python编译器,codon将python的执行速度提升了10-100倍并提供本地可执行二进制代码,遗憾的是官方并未照顾到广大树莓派爱好者的感受,未提供Raspberry OS环境下的执行程序,这里我从源码做了编译,提供给大家使用

sudo ./codon build -release -exe x.py

标准树莓派环境下编译codon

https://docs.exaloop.io/codon/advanced/build

http://cloud.buryin.com/wp-content/uploads/2022/12/codon-develop-2.zip

编译需要大量的交换空间,否则容易出错,因此先增加交换空间

sudo dd if=/dev/zero of=/swapfile bs=1G count=6
#count的大小就是增加的swap空间的大小,1G是块大小为1G,所以空间大小是bs*count=6G
sudo mkswap /swapfile  #把刚才空间格式化成swap格式
su
chmod 0600 /swapfile  
sudo swapon /swapfile  #使用刚才创建的swap空间
sudo pip install Ninja --break-system-packages
sudo apt install cmake
git clone --depth 1 -b codon https://github.com/exaloop/llvm-project
cmake -S llvm-project/llvm -B llvm-project/build -G Ninja \
    -DCMAKE_BUILD_TYPE=Release \
    -DLLVM_INCLUDE_TESTS=OFF \
    -DLLVM_ENABLE_RTTI=ON \
    -DLLVM_ENABLE_ZLIB=OFF \
    -DLLVM_ENABLE_TERMINFO=OFF \
    -DLLVM_TARGETS_TO_BUILD=all
cmake --build llvm-project/build -j4
cmake --install llvm-project/build
sudo apt-get install clang
cd llvm
cmake -S . -B build -G Ninja \
    -DCMAKE_BUILD_TYPE=Release \
    -DLLVM_DIR=$(llvm-config --cmakedir) \
    -DCMAKE_C_COMPILER=clang \
    -DCMAKE_CXX_COMPILER=clang++
cmake --build build --config Release

编译完成,释放临时增加的交换空间

swapoff -a

在树莓派上利用apache2建立多站点服务

https://www.jianshu.com/p/8a4a045da03d?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

cd /etc/apache2/sites-available
cp 000-default.conf vhosts.conf
nano vhost.conf
<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        ServerName cloud.nestpi.com
        ServerAlias cloud.nestpi.com
        DocumentRoot /var/www/cloud

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
</VirtualHost>


<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        ServerName www.nestpi.com
        ServerAlias nestpi.com
        DocumentRoot /var/www/html

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
</VirtualHost>


# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
sudo ln -s  /etc/apache2/sites-available/vhosts.conf /etc/apache2/sites-enabled/
service apache2 restart

修改ddns解析配置config.json

{
  "$schema": "https://ddns.newfuture.cc/schema/v2.8.json",
  "debug": false,
  "dns": "alidns",
  "id": "LTAI",
  "index4": "default",
  "index6": "default",
  "ipv4": [],
  "ipv6": [
    "nestpi.com",
    "cloud.nestpi.com"
  ],
  "proxy": null,
  "token": "ZOGs",
  "ttl": null
}

如需改变默认网站根目录(/var/www),则需要修改文件apache2.conf 和000-default.conf(注意html目录)