[LinuxFocus-icon]
首页  |  站点地图  |  索引  |  搜索

新闻 | 过往期刊 | 链接 | 关于LF
[an error occurred while processing this directive]
[Mark]
by Mark Nielsen
<articles(at)audioboomerang.com>

关于作者:
作者在AudioBoomerang.com工作,这是一家创建、 递送并追踪个性化的多媒体email、网页和新闻快报(newsletter)活动的网站。作者作为顾问, 递送最终产品给客户,比如:高级的定制的关于用户人数的统计报告,或者是对未来活动的一些 专家分析。空余时间里,他为自由软件(GPL)或者自由文档(FDL)撰写文章,同时也是非营利的学 习中心eastmont.net的成员。
目录:

 

使用efax接收传真

[illustration]

摘要:

在RedHat 7.2上安装Efax,收发传真。



 

目的

我打算建一个fax服务器。我想过使用HylaFax,但是我的RedHat系统已经有了 mgetty,安装HylaFax rpm的时候会发生冲突。好像如果我能正确使用mgetty的话,我还 可以通过mgetty做登录(译注:也许指拨号),进行voice和fax操作。现在, 我想的是通过RedHat 7.2 的默认安装,而不需要任何附加软件就可以接收传真。

Efax和fax其实是一回事,'fax'是一个调用efax的脚本。

 

文件配置

有两个文件你需要配置:/usr/bin/fax和/etc/inittab。

复制/usr/bin/fax到/usr/bin/fax_custom,然后我修改了以下几行:

FAXDIR=/var/spool/fax/incoming
NAME="AudioBoomerang.com Computer Fax Server"
FROM="+1 111 222 3333"
ANSFNAME="fax_%Y%m%d_%H%M%S"

在/etc/inittab中, 我的修改如下:

S0:2345:respawn:/bin/sh /usr/bin/fax_custom answer
 

Efax和fax -- 单个接收

如果你知道有人要给你发传真,你可以单个的接收它,执行一下命令:
efax -d /dev/ttyS0 -l "268 1162"  -c 1,5 -r reply
或者
fax answer

如果你不想fax挂在后台等待下个传真连接,那么就不要进行我在“文件配置” 一节提到的对/etc/inittab的修改。

 

Efax 和 fax -- 通过inittab多重接收

如果你象我在“文件配置”一节说的那样修改/etc/inittab,那么只要重启机器,你 的modem就会自动接收fax,并将内容输出到/var/spool/fax/incoming目录。

如果你执行下面的命令:

ps auxw | grep efax
你会看到efax在后台运行,象这样:
root 1698 0.0 0.4 1576 616 ? S< 21:47 0:00 /usr/bin/efax -v -v chewmainrxtf -d/dev/modem -iZ -i&FE&D2S7=120 -i&

非常好的是,如果你杀死进程1689,它会自动在后台再次运行,我相信,会 重新读取/usr/bin/fax_custom文件。于是,如果你对这个文件进行了修改的话, 只要 在你为了测试配置试图发送传真之前杀死efax进程就可以了。

 

收到传真以后怎么办?

运行一个cron的任务(job),用来将/var/spool/fax/incoming里的文件分类,为每组 传真创建一个lock文件,然后或者将它们转换成pdf格式以便网上浏览,或者直接将它们 打印出来。

如果你想把传真打印出来,操作如下:

efix -ops fax_20020606_014847.001 | lpr

建议你打印文件后将它保存在一个备份的目录里。

 

发送传真

安装打印服务比我原先想的要麻烦。首先,按照帮助说的做(有一点变动):
  1. ln /usr/bin/fax /usr/bin/faxlpr
    
  2. 在 /etc/printcap.local 文件中,
       fax:lp=/dev/null:sd=/var/spool/fax:if=/usr/bin/faxlpr_perl:
    
  3.     mkdir /var/spool/lpd/fax
        touch /var/spool/lpd/fax/lock
    
  4. /etc/rc.d/init.d/lpd restart
    

我还做了些变动:

  1. 在 /usr/bin/faxlpr中, 我修改
    l=`$FAX send "$num" fax$$`
    为
    
    `gs -q -sDEVICE=tiffg3 -dNOPAUSE -sOutputFile=fax_out fax$$ </dev/null`
    l=`efax -t $num fax_out`
    `rm fax_out`
    
    还修改了以下三行:
      num=` echo "$cfile" | sed -e /^[^J]/d -e s/..//`
      host=`echo "$cfile" | sed -e /^[^H]/d -e s/..//`
      user=`echo "$cfile" | sed -e /^[^P]/d -e s/..//`
    
  2. 我保存了如下的一个/usr/bin/faxlpr_perl脚本,并chmod 755 /usr/bin/faxlpr_perl:
    #!/usr/bin/perl
    
    my $String = "";
    foreach my $Arg (@ARGV)
      {
      if ($Arg =~ /\-j/)
        {
        my $Copy = $Arg;
        $Copy =~ s/\-j//;
        open(FILE,">lock"); print FILE "hfA$Copy"; close FILE;
        }
      }
    my $Command = "/usr/bin/faxlpr";
    system ($Command, @ARGV);
    print 1;
    
  3. 我很讨厌这一步,但是我不得不"chmod 666 /dev/ttyS1",以便 控制打印工作的lpr用户可以使用modem。

那个perl脚本使faxlpr可以找到进程号,修改"fax"命令为"efax"也是 必要的,因为它试图创建lock文件,而我并不想这样。

我相信我的发送传真的方法会破坏lock文件,这样如果你在接受传真的时候发送传真 可能会导致错误。

经过这些痛苦之后,你的打印程序还需要可以指定"-J"选项,能够象这样 使用:'lpr -P fax -J "555 1212" file.ps'。 否则,就打印到文件,然后 用行命令将文件打印出来。

你也可以只使用efax命令发送传真,而不必通过打印服务。不过,你得在发送之前 使用 gs将传真转换一下格式,这也是很痛苦的事情。

 

结论

如果有机会的话,我会尝试我是否可以:

Efax是我在解决mgetty的问题(我试过,但是失败)之前的一个临时方法。我不用hylafax的 唯一原因是安装它的rpm包时和mgetty冲突,然后我对mgetty发生兴趣,接着转向efax。我正在 尝试将来使用mgetty,因为我还想使用同一个modem做语音和登录方面的事情。好像可以做到这些, 不过好像有些modem不能正确的检测fax,voice,login。我真的不情愿用efax和打印服务发送传真。

 

参考

  1. The Easy Fax Server!
  2. A Linux Fax Server for a Windows Network
  3. Linux Fax for Dummies
  4. Hylafax

Article Version 1.2 : Date Last Changed Thu Jun 13 04:17:31 2002

 

对这篇文章发表评论

每篇文章都有各自的反馈页面。在这个页面里,您可以提交评论,也可以查看其他读者的评论:
 反馈页面 

主页由LinuxFocus编辑组维护
© Mark Nielsen, FDL
LinuxFocus.org

点击这里向LinuxFocus报告错误或提出意见
翻译信息:
en --> -- : Mark Nielsen <articles(at)audioboomerang.com>
en --> zh: chiesa <chiesaitaly(at)sina.com>

2002-07-08, generated by lfparser version 2.25