nik*_*org 5 macos bash sendmail
我创建了一个小的 shell 脚本,它将所有输入记录到一个日志文件中,我以为我可以用它来替换 sendmail 二进制文件,从而实现一种简单的方法来模拟电子邮件传送,而无需实际设置一个工作的 sendmail。
然而,这失败了。由于我无法理解的原因。
我查看了 PHP mail.c 源代码,据我所知(请注意,我在 C 方面不是很有经验),PHP 直接执行并与二进制文件对话(在 中设置sendmail_path)。但是,当我用脚本替换 sendmail 二进制文件时,不会创建任何日志文件,并且替换 sendmail 的脚本在执行时将始终创建一个日志文件,无论是否存在输入。
脚本本身运行良好。它的返回码应该与sendmail 的返回码一致。不同之处在于,无论输入如何,我的脚本总是返回 0,因为我对检查输入是否有效并不真正感兴趣 - 只是我得到了一些。
是否可以实现我想要的,即使用 sendmail 模拟器?
脚本源码如下:
#!/bin/bash
LOGDIR=/tmp/sendmail-sim
NOW=$(date +%Y%m%dT%H%M)
CNT=1
FILENAME="$LOGDIR/$NOW.$CNT.log"
while [ -f $FILENAME ]; do
CNT=$(($CNT + 1))
FILENAME="$LOGDIR/$NOW.$CNT.log"
done
echo "$0 $*" > $FILENAME
while read BUF
do
echo $BUF >> $FILENAME
done
exit 0
Run Code Online (Sandbox Code Playgroud)
附言。我当前的 sendmail (或者实际上是 postfix)确实从 PHP 接收电子邮件,但我不想实际发送任何电子邮件或需要在开发中挖掘其邮件队列。