传真打印服务器是由几个程序组成的设置:efax 和打印服务器,其目的是让从计算机发送传真像发送打印输出到打印机一样简单。
将 efax 设置为传真打印服务器包含一些问题。由于我多次解决了这些问题,我决定将这些经验总结在这个小的 mini-HOWTO 中,欢迎在 <erez@newplaces.com>
提出意见。我在这里描述这些问题和解决方案,以及所有简短步骤的说明
确保您已安装 efax 软件包。
在基于 RPM 的系统上,使用命令 'rpm -qv efax'。
您可以从 sunsite 获取 tar.gz 格式的 efax 源代码:ftp://sunsite.unc.edu/pub/Linux/apps/serialcomm/fax/efax08a.tar.gz 或二进制 rpm 软件包:ftp://ftp.redhat.com/pub/redhat/redhat-4.2/i386/RedHat/RPMS/efax-0.8a-3.i386.rpm
efax 文档中缺少 printcap 条目末尾的冒号 (:)。
解决方案:添加以下 /etc/printcap
条目
fax:\
:lp=/dev/null:\
:sd=/var/spool/fax:\
:if=/usr/bin/faxlpr:
使用硬链接而不是符号链接到 fax 命令。
运行命令
ln /usr/bin/fax /usr/bin/faxlpr
编辑 /usr/bin/fax 以符合您的偏好
为您的调制解调器选择正确的传真类别(Fax Class)
CLASS=2.0
设置 FROM="您的国际电话号码" 字段
NAME="Your Name"
添加将国际电话号码转换为本地号码的行,例如在以色列,您将使用
TELCVT='sed -e s/+972/0/ -e s/+/00/' # Israel
文件第 586 行存在问题,将 cfile=...
更改为以下两行
cfile=`/usr/bin/tail -1 lock`
cfile=`cat $cfile`
在第 586,587 行不应有 '-' 符号,正确的行是
0) echo "$l" | mail -s "fax to $num succeeded" $user@$host ;;
*) echo "$l" | mail -s "fax to $num failed " $user@$host ;;
创建目录 /var/spool/fax
mkdir /var/spool/fax
chmod 777 /var/spool/fax
锁文件 (/var/spool/fax/lock
) 的创建权限不正确,使用以下命令正确设置它
touch /var/spool/fax/lock ; chmod 644 /var/spool/fax/lock
efax 程序期望在 /dev/modem
中找到真实的设备文件,并且不适用于符号链接,因此创建一个设备文件,其主设备号和次设备号与连接到调制解调器的 /dev/cua?
相同。该文件应具有 rw-rw-rw- 模式,以允许任何用户使用传真软件。
ls -lL /dev/modem
rm /dev/modem
mknod /dev/modem c Mj Mi
chmod 666 /dev/modem
cua0 的主设备号 (Mj) 为 5,次设备号 (Mi) 为 64,cua1 的次设备号为 65,依此类推。例如(对于 cua1)
mknod /dev/modem c 5 65
/var/lock
目录。更改 /var/lock
目录的模式
chmod 1777 /var/lock
您应该使用带有 -P 选项和带有传真号码的 -J 选项的传真打印机。
使用以下 lpr 命令之一
lpr -Pfax -J <Fax-Number> [file-names]
any command | lpr -Pfax -J <Fax-Number>
在 -J 选项之后。
将以下条目添加到客户端 Linux 系统的 /etc/printcap
文件中,创建 spool 目录,等等...
fax:\
:sd=/var/spool/fax:\
:mx#0:\
:sh:\
:rm=host.domain:\
:rp=fax:
将客户端主机的名称添加到传真服务器机器上的 /etc/hosts.lpd
中。
像以前一样使用它。
注意
efax 添加到传真页面的页眉字符串不受发送传真的用户名影响。(可以更新)。
LPRng 打印管理软件使用不同的方法来处理控制文件。
感谢 Luca Montecchiani <m.luca@usa.net>,他发现了问题和解决方案。以下是对 /usr/bin/fax
文件的更新。以下行替换了第 586,587 行中两个简单的 cfile=... 行
# Modified to work also with the LPRng package
# Luca Montecchiani (08/11/97 m.luca@usa.net)
if [ !-z "$CONTROL_FILE" ]
then
cfile=`cat tail -1 lock`
cfile=`cat $cfile`
else
cfile=$CONTROL_FILE
fi