设为首页 收藏本站
查看: 1370|回复: 0

[经验分享] Redmine接收邮件传入的问题

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2014-11-19 09:47:35 | 显示全部楼层 |阅读模式
                       
As of 0.8.0, Redmine can be configured to allow issue creation orcomments via email. It is also able to recognize and incorporateemail replies to forum messages.
Setup
You can configure Redmine to receive emails in one of the followingways:
  • Forwarding emails from your email server:
    • Pros: works with a remote mail server, email are processedinstantly, fast (no environment reloading)
    • Cons: needs some configuration on your mail transfer agent (eg.Postfix, Sendmail...)
  • Fetching emails from an IMAP or POP3 server:
    • Pros: easy to setup, no need to configure your MTA, works witha remote mail server
    • Cons: emails are not processed instantly (a cron job needs tobe added to read emails periodically)
  • Reading emails from standard input:
    • Pros: fine for testing purpose
    • Cons: slow (the environment is reloaded each time an email isread), needs some configuration on your MTA
Forwarding emails from your email server
A standalone script can be used to forward incoming emails fromyour mail server.
This script reads a raw email from the standard input and forwardit to Redmine via a HTTP request.
It can be found in your redminedirectory: extra/mail_handler/rdm-mailhandler.rb.
In order to use it, you have to enable the API that receiveemails:
Go to Applicationsettings -> Incomingemails, check Enable WS for incomingemails and enter or generate a secretkey.
Copy rdm-mailhandler.rb toyour mail server, make sure its permissions allow execution, andconfigure your MTA (Mail Transport Agent).
Usage:
rdm-mailhandler [options] --url= --key=Required:  -u, --url                      URL of the Redmine server  -k, --key                      Redmine API keyGeneral options:  -h, --help                     show this help  -v, --verbose                  show extra information  -V, --version                  show version information and exitIssue attributes control options:  -p, --project=PROJECT          identifier of the target project  -t, --tracker=TRACKER          name of the target tracker      --category=CATEGORY        name of the target category      --priority=PRIORITY        name of the target priority  -o, --allow-override=ATTRS     allow email content to override attributes                                 specified by previous options                                 ATTRS is a comma separated list of attributes
See Issue-attributes fora list of values that can be used forthe --allow-override option.
Examples:
  # No project specified. Emails MUST contain the 'Project' keyword:  rdm-mailhandler --url http://redmine.domain.foo --key secret  # Fixed project and default tracker specified, but emails can override  # both tracker and priority attributes:  rdm-mailhandler --url https://domain.foo/redmine --key secret \\                  --project foo \\                  --tracker bug \\                  --allow-override tracker,priority
Here is an example for a Postfix local alias entry:
foo: "|/path/to/rdm-mailhandler.rb --url http://redmine.domain --key secret --project foo"
This line should go in the aliases file, which is usually specifiedin /etc/aliases. If the location isunknown, use the command postconfalias_maps to find out. After updating thealiases file, be sure torun newaliases toalert Postfix of the new entry.
If your domain is setup as a virtual mailbox map (so that you use/etc/postfix/virtual_mailbox_maps to do mappings in theform user@example.com/path/example.com/user) you should:
  • create a mappingin /etc/virtual like: foo@example.orgfoo
  • modify /etc/postfix/main.cf tospecify a transport file: transport_maps =hash:/etc/postfix/transport
  • within the transport file add a linelike: foo@example.org local:
Explanation: - When you definevirtual_mailbox_maps for a domain the default transport is virtual,which means specifying a local aliasin /etc/postfix/virtual willfail (with "unknown user"). To fix this, we override the defaulttransport by specifying a local transport for the email address inquestion, which means the local alias will resolve correctly, andyour script will be executed.
A front-end to rdm-mailhandler.rb has been written to allowspecifying projects trough sub-addresses ([url=mailto:name+project@example.com]name+project@example.com[/url]).See MailhandlerSubAddress
Fetching emails from an IMAP server
A rake task (redmine:email:receive_imap) can be usedto fetch incoming emails from an IMAP server. When you run the rakecommand from a cron job you can include theswitch -f/path/to/redmine/appdir/Rakefile on therake command, because otherwise the rakefile is not found. This isan example line for a cron file that fetches mails every 30minutes:
*/30* * * * redmineuser rake -f /path/to/redmine/appdir/Rakefileredmine:email:receive_imap RAILS_ENV="production" host=imap.foo.barusername=redmine@somenet.foo password=xxx
If your setup is working, but you receive mails from the crondaemon, you can suppress the output from the rake command by addingthe --silent switch. That should stop cron sending mails on everyexecution of the command.
*/30* * * * redmineuser rake -f /path/to/redmine/appdir/Rakefile--silent redmine:email:receive_imap RAILS_ENV="production"host=imap.foo.bar username=redmine@somenet.foo password=xxx
The command has to go on a single line in your cronfile. Also seethe other examples below, which only show the rake commands withoutthe -f option andwithout the cron part.
For Windows as server pycron canbe used to schedule a fetch task.
It can be necessary that you open the firewall on the machine foroutgoing TCP connections to IMAP port 143.
Available IMAP options:
  host=HOST                IMAP server host (default: 127.0.0.1)  port=PORT                IMAP server port (default: 143)  ssl=SSL                  Use SSL? (default: false)  username=USERNAME        IMAP account  password=PASSWORD        IMAP password  folder=FOLDER            IMAP folder to read (default: INBOX)  move_on_success=MAILBOX  move emails that were successfully received                           to MAILBOX instead of deleting them  move_on_failure=MAILBOX  move emails that were ignored to MAILBOX
Issue attributes control options:
  project=PROJECT          identifier of the target project  tracker=TRACKER          name of the target tracker  category=CATEGORY        name of the target category  priority=PRIORITY        name of the target priority  allow_override=ATTRS     allow email content to override attributes                           specified by previous options                           ATTRS is a comma separated list of attributes
See Issue-attributes fora list of values that can be used forthe allow-override option.
Examples for the rake command:
  # No project specified. Emails MUST contain the 'Project' keyword:  rake redmine:email:receive_imap RAILS_ENV="production" \\    host=imap.foo.bar username=redmine@somenet.foo password=xxx  # Fixed project and default tracker specified, but emails can override  # both tracker and priority attributes:  rake redmine:email:receive_imap RAILS_ENV="production" \\    host=imap.foo.bar username=redmine@somenet.foo password=xxx ssl=1 \\    project=foo \\    tracker=bug \\    allow_override=tracker,priority  # Move successful emails to the 'read' mailbox and failed emails to  # the 'failed' mailbox  rake redmine:email:receive_imap RAILS_ENV="production" \\    host=imap.foo.bar username=redmine@somenet.foo password=xxx \\    move_on_success=read move_on_failure=failed
Ignored emails are marked as 'Seen' but are not deleted from theIMAP server--these include unknown user, unknown project and emailsfrom the redmine emission account.
Theoption allow_override isnot only for overriding default values given to rake, but for everyattribute in a mail. If you want to override the tracker in yourmail you have toadd allow_override=tracker asa parameter.
Fetching emails from a POP3 server
Only available in trunk and future 1.0.
A rake task (redmine:email:receive_pop3) can be usedto fetch incoming emails from a POP3 server.
Available POP3 options:
  host=HOST                POP3 server host (default: 127.0.0.1)  port=PORT                POP3 server port (default: 110)  username=USERNAME        POP3 account  password=PASSWORD        POP3 password  apop=1                   use APOP authentication (default: false)  delete_unprocessed=1     delete messages that could not be processed                           successfully from the server (default                           behaviour is to leave them on the server)
See the IMAP rake task above for issue attributes controloptions.
Reading emails from standard input
A rake task (redmine:email:receive) can be used toread a single raw email from the standard input.
Issue attributes control options:  project=PROJECT          identifier of the target project  tracker=TRACKER          name of the target tracker  category=CATEGORY        name of the target category  priority=PRIORITY        name of the target priority  allow_override=ATTRS     allow email content to override attributes                           specified by previous options                           ATTRS is a comma separated list of attributes
See Issue-attributes fora list of values that can be used forthe allow-override option.
Examples:
  # No project specified. Emails MUST contain the 'Project' keyword:  rake redmine:email:read RAILS_ENV="production" < raw_email  # Fixed project and default tracker specified, but emails can override  # both tracker and priority attributes:  rake redmine:email:read RAILS_ENV="production" \\                  project=foo \\                  tracker=bug \\                  allow_override=tracker,priority < raw_email
Theoption allow_override isnot only for overriding default values given to rake, but for everyattribute in a mail. If you want to override the tracker in yourmail you have toadd allow_override=tracker asa parameter.
Enabling unknown users to create issues by email
Redmine has a feature that provides the ability to accept incomingemails from unknown users. In order to use this feature, an extraparameter has to be included:
unknown_user=ACTION     how to handle emails from an unknown user where ACTION can be one of the following values:                        ignore: the email is ignored (default)                        accept: the sender is considered as an anonymous user and the email is accepted                        create: a user account is created for the sender (username/password are sent back to the user) and the email is accepted
Permissions have to be consistent with the chosen option. E.g. ifyou choose 'create', the 'Non member' role must have the 'Addissues' permission so that an issue can be created by an unknownuser via email. If you choose 'accept', the 'Anonymous' role musthave this permission.
If you receive emails via the rake task, the unknown-user optionhas to be written as:
unknown_user=[ignore|accept|create]
You can disable permission checking using the 'no_permission_check'option:
no_permission_check=1   disable permission checking when receiving the email
This, together with the 'unknown-user', provides the ability to letanyone submit emails to a private project. For example:
rdm-mailhandler --unknown-user accept --no-permission-check --project=foo
will let anyone submit emails to a private project 'foo'.
TODO: Is this true and is this related tothe no_permission_check option?:
Since Redmine 0.9 the project doesn't have to be public, butauthentication required in the Administration->Settings->Authentication tab has to be unchecked.
If you do not want an "new account notification email" sent toevery newly created user by rdm-mailhandler you must add the option"--no-account-notice". Is implemnetedwith 2.3.0 inissue #11498.Now an example:
rdm-mailhandler --unknown-user accept --no-permission-check --project=foo --no-account-notice
How it works
When receiving an email, Redmine uses the From address of the emailto find the corresponding user. Emails received from unknown orlocked users are ignored.
If the email subject contains something like"Re: [xxxxxxx #123]", the emailis processed as a reply and a note is added to issue #123.Otherwise, a new issue is created.
Note that, in order to create an issue, all required custom fieldsmust be provided. Without them, issue creation will fail. As analternative you can ensure that every custom field has a defaultvalue which is then used during issue creation.
Target project
The target project can be specified usingthe project optionwhen receiving emails. This should be the identifier of the projectand not thename. You can easily find the identifier in the url.
If you don't use this option, users have to specify in the emailbody which project the issue should be added to. This can be doneby inserting a line in the email body likethis: "Project: foo".
Example (email body):
This is a new issue that will be added to project foo.Here we have the issue description[...]Project: foo
You can set a default project usingthe project optionand let users override this default project by usingthe allow-override optionwhen receiving emails.
Example:
  # Create issues on project foo by default  rake redmine:email:receive_imap [...] project=foo allow_override=project
Of course, user permissions are checked and this email would beignored if the user who sent this email is not allowed to addissues to project foo.
Make sure that the target project doesn'tuse required customfields with no default value for its issues, otherwise the creationof the issue will fail.
Issue attributes
Based on the options you use when receiving emails(see allow-override option),users may be able to override some attributes when submitting anissue.
This can be done by using the following keywords in the email body: Project, Tracker, Category, Priority, Status.
The values available are the ones of the context. E.g. Statusavailable (for this Tracker and this Project) are labels in thelocalized language, exactly as displayed in the user interface(even with spaces, without quoting).
Example (email body):
This is a new issue that overrides a few attributes[...]Project: fooTracker: BugPriority: UrgentStatus: Resolved
Valid attribute values that can used withthe allow-override optionare: project, tracker, status, priority,category, assigned_to, fixed_version (aka.Target version),start_date, due_date, estimated_hours,done_ratio.
Watchers
If the user who sends the email has the 'Add issue watchers'permission, users that are in To or Cc field of the email areautomatically added as watchers of the created issue.
Watchers are added only when the issue is created. To or Cc fieldsare ignored on replies. See #7017 and #8009.
Email format and attachments
Redmine tries to use the plain text part of the email to fill thedescription of the issue.
If a HTML-only email is received, HTML tags are removed from itsbody.
Email attachments are automatically attached to the issue, unlesstheir size exceeds the maximumattachment size defined in the applicationsettings.
Truncate emails
The Administrator's settings may be used to automatically truncateemails, for example to eliminate quoted messages in forum replies.To do this, set the outgoing email header to somethinglike --Reply above thisline-- in the Email notifications settings.Then in the Incoming emails settings, enter the same line into thebox "Truncate emails after one of these lines." (It is alsopossible to allow regex to be truncated,e.g. http://www.redmine.org/issues/5864)
                                                                       


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-31443-1-1.html 上篇帖子: redmine安装部署文档 下篇帖子: 如何在 Mac 下用 Nginx + Passenger 部署 Rails 的运行环境。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表