frp-mail-filter
Contents
配置frp服务后,利用stcp的模式将ssh服务暴露到公网中。虽然,链接时需要secretKey和对应的密钥
增强了安全性。但是大部分情况下,并不需要在宿主机上启动frpc服务。所以想到是否能通过某种机制,
可以远程起、停frpc服务。
最终选择了邮件过滤器,当发送特定主题的邮件,执行某一类的操作。主要实现了frpc服务的启动、停止操作。
software
软件的版本如下
- Thunderbird - 115.12.1 (64-bit)
- filtaquilla(4.0)
- frp (0.57.0)
config
frpc
这里需要注意将frpc配置成 用户服务 ,这样在脚本中启动、停止服务时,不需要输入密码
将服务脚本放置在 /usr/lib/systemd/user/frpc.service 即可。
- status
1systemctl --user status frpc.service - start
1systemctl --user start frpc.service - stop
1systemctl --user stop frpc.service
FiltaQuilla
install
在 Thunderbird 插件管理里,直接搜索安装即可
config 这里的规则可以根据自己的需要配置
SUBJECT, 主题可以当作参数传给脚本,其他参数参考 docs
Run Program : /hom/xx/mail-filter-frp.sh,@SUBJECT@,@MESSAGEID@ 还有一个类似的action Launch File ,这个不接收参数,每个平台的实现不一样,我在测试中,是用默认编辑器打开的该文件。

shell scrips
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35#!/usr/bin/env bash # mail-filter-frp.sh SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" cd $SCRIPT_DIR __log_name=/tmp/mail.log exec 1>$__log_name 2>&1 # 按需更改 __frp_start="start-xxx" # 按需更改 __frp_stop="stop-xxx" echo $(date +%F-%s) __subject=$1 if [[ -z "$1" ]]; then echo "mail subject empty, exit" exit 0 fi if echo "$__subject" | grep -q "$__frp_start"; then echo "start frp service" systemctl start frpc.service --user exit 0; fi if echo "$__subject" | grep -q "$__frp_stop"; then echo "stop frp service" systemctl stop frpc.service --user exit 0; fi