{"id":1120,"date":"2016-11-15T15:06:55","date_gmt":"2016-11-15T14:06:55","guid":{"rendered":"https:\/\/blog.kolatzek.org\/wblog\/?p=1120"},"modified":"2016-11-15T15:06:55","modified_gmt":"2016-11-15T14:06:55","slug":"fetchmail-hat-ausgedient-es-lebe-pychmail","status":"publish","type":"post","link":"https:\/\/blog.kolatzek.org\/wblog\/1120\/fetchmail-hat-ausgedient-es-lebe-pychmail","title":{"rendered":"Fetchmail hat ausgedient. Es lebe PychMail!"},"content":{"rendered":"<p><a href=\"http:\/\/www.fetchmail.info\/\">Fetchmail<\/a> ist vielen Administratoren bekannt. Es holt E-Mails auf anderen Servern ab und speist sie in lokale Postf\u00e4cher ein. Auch an externe Postf\u00e4cher k\u00f6nnte er seine Sammlungen zustellen&#8230; W\u00e4re da nicht die Spam-Problematik.<!--more--><\/p>\n<p>Ich wei\u00df nicht, wie viele Admins mit diesem Problem zu k\u00e4mpfen hatten. Mehrfach umgeleitete Nachrichten, die am Ziel-Host angekommen in den Spam-Ordner geschoben werden, weil weder To, noch Cc zum Konto oder gar zur Dom\u00e4ne passen. Mir ist es passiert und es war \u00e4rgerlich genug, um fetchmail auf den Pr\u00fcfstand zu stellen. Seine Arbeitsweise beruht auf der lokalen Zustellung der eingesammelten Nachrichten. Doch was soll man tun, wenn der Server kein fetchmail oder shell-Zugang oder cronjobs anbietet? Von A abholen und \u00fcber B an C senden, darf einem MTA schon suspekt vorkommen. Schlie\u00dflich ist der Server B kein A und die Zieladresse ist auch nicht C.<\/p>\n<p>Ich wollte Nachrichten aus einem Postfach mit vielen Aliassen in eine Mailingliste einspeisen. Die Mailinglisten-Software hat dies zurecht beanstandet. Schlie\u00dflich ist das Feld &#8222;To&#8220; oder wenigstens &#8222;Cc&#8220; eine aussagenkr\u00e4ftige Gr\u00f6\u00dfe. Es musste also eine L\u00f6sung her, die aus einem<strong> IMAP-Postfach<\/strong> einen bestimmten Ordner abfragt und Mails umadressiert, so dass sie zur Mailingliste passen. Der Inhalt und das <em>From<\/em>-Feld sollen unangetastet bleiben, daf\u00fcr das Feld <strong>Sender<\/strong> aus <a href=\"https:\/\/www.w3.org\/Protocols\/rfc822\/#z26\" target=\"_blank\">\u00a74.4.2. der RFC 822<\/a> eingesetzt werden. Das macht mit der <strong>Authentifizierung<\/strong> am zust\u00e4ndigen MTA des Sender am meisten Sinn.<\/p>\n<p>Diese Aufgabe leistet ein von mir geschriebenes Programmchen &#8211; eigentlich ein Skript &#8211; <a href=\"https:\/\/github.com\/Kolatzek\/PychMail\"><strong>PychMail<\/strong><\/a>. Python ist m\u00e4chtig und extrem einfach. Schon mit 60 Zeilen kann man diese Aufgabe erledigen. Damit es gut verstanden und genutzt werden kann, habe ich entsprechend auf englisch dokumentiert. Die Konfiguration ist einfach. Sie ist ausgelagert in den Ordner <em>config<\/em> (der aus Sicherheitsgr\u00fcnden mit <strong>chmod 700<\/strong> vor der Neugier Fremder gesch\u00fctzt werden sollte) und kann dort unter verschiedenen Namen mehrfach abgelegt werden. Der Aufruf von PychMail mit dem Namen der <em>Konfigurationsdatei<\/em> als Argument kann h\u00e4ndisch oder per <em>Cron<\/em> geschehen. Er produziert eine Meldung f\u00fcr jede verarbeitete Mail auf <strong>stdout<\/strong>.<\/p>\n<p>Gerne baue ich das Programm aus, doch im Moment funktioniert es einwandfrei und POP war auch nie mein Favorit. ;-)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Fetchmail ist vielen Administratoren bekannt. Es holt E-Mails auf anderen Servern ab und speist sie in lokale Postf\u00e4cher ein. Auch an externe Postf\u00e4cher k\u00f6nnte er seine Sammlungen zustellen&#8230; W\u00e4re da nicht die Spam-Problematik.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_sitemap_exclude":false,"_sitemap_priority":"","_sitemap_frequency":"","ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"","ocean_second_sidebar":"","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"","ocean_custom_header_template":"","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"","ocean_menu_typo_font_family":"","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"","ocean_post_oembed":"","ocean_post_self_hosted_media":"","ocean_post_video_embed":"","ocean_link_format":"","ocean_link_format_target":"self","ocean_quote_format":"","ocean_quote_format_link":"post","ocean_gallery_link_images":"on","ocean_gallery_id":[],"footnotes":""},"categories":[8],"tags":[34,139,74],"class_list":["post-1120","post","type-post","status-publish","format-standard","hentry","category-software","tag-email","tag-mail","tag-opensource","entry"],"_links":{"self":[{"href":"https:\/\/blog.kolatzek.org\/wblog\/wp-json\/wp\/v2\/posts\/1120","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.kolatzek.org\/wblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.kolatzek.org\/wblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.kolatzek.org\/wblog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.kolatzek.org\/wblog\/wp-json\/wp\/v2\/comments?post=1120"}],"version-history":[{"count":2,"href":"https:\/\/blog.kolatzek.org\/wblog\/wp-json\/wp\/v2\/posts\/1120\/revisions"}],"predecessor-version":[{"id":1123,"href":"https:\/\/blog.kolatzek.org\/wblog\/wp-json\/wp\/v2\/posts\/1120\/revisions\/1123"}],"wp:attachment":[{"href":"https:\/\/blog.kolatzek.org\/wblog\/wp-json\/wp\/v2\/media?parent=1120"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.kolatzek.org\/wblog\/wp-json\/wp\/v2\/categories?post=1120"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.kolatzek.org\/wblog\/wp-json\/wp\/v2\/tags?post=1120"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}