mailfax.sh-postfix
上传用户:weiyuanprp
上传日期:2020-05-20
资源大小:1169k
文件大小:5k
源码类别:

传真(Fax)编程

开发平台:

C/C++

  1. #!/bin/sh
  2. #
  3. # mailfax - email to fax gateway for Postfix.
  4. #
  5. # Here you find instructions about 2 email-to-fax configurations
  6. # using HylaFAX and Postfix, they differ in the email address format:
  7. #
  8. # 1. <username>@<fax-no>.fax      ('classic' HylaFAX email-to-fax setup)
  9. #
  10. # 2. <fax-no>@fax.yourdomain.dom  
  11. #
  12. # GENERAL NOTES:
  13. # - Linux binary/config files locations assumed, change them to suit your
  14. #   system conventions.
  15. # - Setup #1 requires you install this file as /usr/bin/mailfax, while
  16. #   setup #2 does not.
  17. # - Whatever setup you chose, when finished you need to run
  18. #   # postmap /etc/postfix/transport
  19. #   # postfix reload
  20. #   in order for the changes to take effect immediately
  21. #
  22. ################################################## 
  23. #
  24. # 1. <username>@<fax-no>.fax      ('classic' HylaFAX email-to-fax setup)
  25. #
  26. # *** you NEED TO INSTALL this file as /usr/bin/mailfax ***
  27. #
  28. #   Add the following to /etc/postfix/master.cf:
  29. #      fax unix - n n - 1 pipe
  30. #          flags= user=fax argv=/usr/bin/mailfax ${user} ${recipient} ${sender}
  31. #
  32. #   Add the following to /etc/postfix/transport:
  33. #      .fax   fax:localhost
  34. #
  35. #   Add the following to /etc/postfix/main.cf:
  36. #      transport_maps = hash:/etc/postfix/transport
  37. #      fax_destination_recipient_limit = 1
  38. #
  39. # Notes:
  40. # 1) If you want the fax to be submitted as an user other than fax (uucp), 
  41. #    then replace
  42. #    flags= user=fax argv=/usr/bin/mailfax ${user} ${recipient} ${sender}
  43. #    with
  44. #    flags= user=<anyuser> argv=/usr/bin/mailfax ${user} ${recipient} ${sender}
  45. #    Do not use 'root' ...
  46. # 2) If you want the HylaFAX email contact to be the same for all the fax
  47. #    submitted via email, then replace
  48. #    flags= user=fax argv=/usr/bin/mailfax ${user} ${recipient} ${sender}
  49. #    with
  50. #    flags= user=fax argv=/usr/bin/mailfax ${user} ${recipient} <some@address>
  51. ##################################################
  52. #
  53. # 2. <fax-no>@fax.yourdomain.dom
  54. # *** you _DO_ _NOT_ NEED TO INSTALL this file as /usr/bin/mailfax ***
  55. #
  56. # See http://www.postfix.org/faq.html#fax for instructions on how to set up
  57. # an email-to-fax gateway with this email address format.
  58. # For your convenience the faq available at the above URL is reproduced here.
  59. #
  60. # ===== http://www.postfix.org/faq.html#fax (as of 2001-03-05)
  61. # Sending mail to a FAX machine
  62. #
  63. # The following information is by Joerg Henne:
  64. #
  65. # Over here we are using the scheme <fax number>@fax.our.domain
  66. # with Postfix and HylaFax. Here's the setup used:
  67. #
  68. #    /etc/postfix/master.cf:
  69. #      fax unix - n n - 1 pipe
  70. #          flags= user=fax argv=/usr/bin/faxmail -d -n ${user}
  71. #
  72. #    /etc/postfix/transport:
  73. #        fax.your.domain   fax:localhost
  74. #
  75. #    /etc/postfix/main.cf:
  76. #        transport_maps = hash:/etc/postfix/transport
  77. #        fax_destination_recipient_limit = 1
  78. #
  79. # The process limit of 1 in the master.cf file is necessary with fax software 
  80. # that cannot handle multiple requests at the same time.
  81. # It won't hurt otherwise.
  82. #
  83. # The fax_destination_recipient_limit entry (by Simon, Mr.Simix) 
  84. # is necessary with fax software that can't have more than one destination 
  85. # on its command line. It won't hurt otherwise.
  86. #
  87. # Specify dbm instead of hash if your system uses dbm files instead of
  88. # db files. To find out what map types Postfix supports, use the command
  89. # postconf -m.
  90. #
  91. # Note: be sure to not advertise fax.your.domain in the DNS :-)
  92. #
  93. # =====
  94. #
  95. # Notes:
  96. # 1) If you want the fax to be submitted as an user other than fax (uucp), 
  97. #    then replace
  98. #    flags= user=fax argv=/usr/bin/faxmail -d -n ${user}
  99. #    with
  100. #    flags= user=<anyuser> argv=/usr/bin/faxmail -d -n ${user}
  101. #    Do not use 'root' ...
  102. # 2) faxmail automatically gets the 'from' identity (to be used for email 
  103. #    notifications by HylaFAX) from the email headers; should you find the 
  104. #    address is not detected correctly you can try replacing
  105. #    flags= user=fax argv=/usr/bin/faxmail -d -n ${user}
  106. #    with
  107. #    flags= user=fax argv=/usr/bin/faxmail -d -n ${user} ${sender}
  108. #    If you want the email contact to be the same for all the fax submitted
  109. #    via email, then use
  110. #    flags= user=fax argv=/usr/bin/faxmail -d -n ${user} <some@address>
  111. #
  112. ################################################## 
  113. USER=$1
  114. RECIPIENT=$2
  115. SENDER=$3
  116. TMPVAR=${USER//`/}
  117. TMPVAR=${TMPVAR//$(/}
  118. USER=${TMPVAR//)/}
  119. TMPVAR=${RECIPIENT//`/}
  120. TMPVAR=${TMPVAR//$(/}
  121. RECIPIENT=${TMPVAR//)/}
  122. TMPVAR=${SENDER//`/}
  123. TMPVAR=${TMPVAR//$(/}
  124. SENDER=${TMPVAR//)/}
  125. # Try the commented out command if this does not work...
  126. FAXNO=`/usr/bin/expr "$RECIPIENT" : '.*@(.*).fax$'`
  127. #FAXNO=`/usr/bin/expr "$RECIPIENT" : '.*@(.*).fax$'`
  128. /usr/bin/faxmail -n -d "${USER}@${FAXNO}" ${SENDER}