;; -*- emacs-lisp -*-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; $Id: gnus_sources.el,v 1.21 2006-11-06 21:02:42 rscholz Exp $
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Quellen (select methods & mail sources), von denen Gnus News und
;; Mail bezieht.
;;
;; Die offizielle Quelle dieser Datei ist
;;   <http://www.zonix.de/projects/emacs/config>
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Select Methods                (Info-goto-node "(Gnus)Select Methods")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; News                            (Info-goto-node "(Gnus)Getting News")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; Newsserver
(if (string-match "home" zonix-location)
    (setq gnus-select-method '(nntp "news")))

(if (string-match "verified" zonix-location)
    (setq gnus-select-method '(nntp "localhost")))

;; nur relevante Teile des active-Files lesen
(setq gnus-read-active-file 'some)

;; neue Gruppen von Server anfragen
(setq gnus-check-new-newsgroups 'ask-server)

;; neue Gruppen in Topics einsortieren
;(setq gnus-subscribe-newsgroup-method 'gnus-subscribe-topics)

;; hierarchisches Subscriben mit Nachfrage
;(setq gnus-subscribe-hierarchical-interactive t)

;; gekillte Gruppen nicht speichern
(setq gnus-save-killed-list nil)

;; gelöschte Gruppen automatisch entfernen
(setq gnus-check-bogus-newsgroups 'ask-server)

;; FAQs der Newsgroups
(setq gnus-group-faq-directory "/ftp@ftp.uni-paderborn.de:/pub/FAQ/")

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Mails suchen (und finden)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; ab No Gnus 0.01 im gnus/contrib-Verzeichnis
(require 'nnir)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Mail                            (Info-goto-node "(Gnus)Getting Mail")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


;; Mail-Backend nnml
(setq gnus-secondary-select-methods 
             '((nnml ""
                     (nnml-directory "~/Mail/")
                     (nnml-get-new-mail t))))

;; IMAP @home
(if (string-match "home" zonix-location)

    (progn

       (add-to-list 'gnus-secondary-select-methods
                    '(nntp "news.gmane.org"))
      
       (add-to-list 'gnus-secondary-select-methods
                   '(nnimap ""
;                           (nnimap-stream ssl)
;                           (nnimap-server-port 993)
                            (nnimap-stream network)
                            (nnimap-server-port 143)
                            (nnimap-expunge-on-close always)
                            (nnimap-list-pattern "INBOX*")

                            ;; ab No Gnus 0.01
                            (nnir-search-engine imap)
                            
;; see <http://my.gnus.org/Members/blacky_tn/HowTo%2C2002-05-28%2C1022622697760563859/view>
;;                          (nnimap-nov-is-evil t)
                            
                            (nnimap-address "mail")))

;;        (add-to-list 'gnus-secondary-select-methods
;;                  '(nnimap "mail.templeofhate.com"
;;                           (nnimap-stream ssl)))

       (add-to-list 'gnus-secondary-select-methods
                    '(nnimap "mail.tohserver.com"
                             (nnimap-stream ssl)))
       
       (add-to-list 'gnus-secondary-select-methods
                    '(nnmaildir ""
                                (directory "~/Maildir/")
                                (get-new-mail nil)))


;      (add-to-list 'gnus-secondary-select-methods
;                  '(nnimap "web.de"
;                           (nnimap-stream ssl)
;                           (nnimap-expunge-on-close always)
;                           (nnimap-address "imap.web.de")))
;

      ;; nndiary.el ist eine Kombination aus Todo-Liste mit
      ;; Erinnerungsfunktion und einem Tagebuch
      (require 'nndiary)
      (setq nndiary-week-starts-on-monday t)
      (setq nndiary-reminders '((0 . day) (30 . minute)))
      
      (add-to-list 'gnus-secondary-select-methods
                   '(nndiary ""
                             ;; nndiary
                             (nndiary-get-new-mail nil)))

      
                   ))

;; IMAP @verified
(if (string-match "verified" zonix-location)

    (progn

       (add-to-list 'gnus-secondary-select-methods
                    '(nnmaildir ""
                                (directory "~/Maildir/")
                                ;(get-new-mail t)
                                ))
       
;;         (add-to-list 'gnus-secondary-select-methods
;;                      '(nnimap "imap.verified.de"
;;                                   (nnimap-stream ssl)))

        (add-to-list 'gnus-secondary-select-methods
                        '(nnimap "localhost"
                                     (nnimap-stream network)
                                     (nnir-search-engine imap)
                                     (nnimap-server-port 10143)))
        
        (add-to-list 'gnus-secondary-select-methods
                   '(nnimap "hush.dyndns.org"
                            (nnimap-stream ssl)
;                           (nnimap-expunge-on-close always)
                            (nnimap-address "hush.dyndns.org")))
      
      ))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Mail Sources                    (Info-goto-node "(Gnus)Mail Sources")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(require 'mail-source)

;; Mail-Spool
(add-to-list 'mail-sources 
             '(file :path (concat "/var/spool/mail/" user-login-name)))

;; IMAP notify @ home
(if (string-match "home" zonix-location)

    (add-to-list 'mail-sources
                 '(file :prescript ":> /home/rscholz/Maildir/notify; fetchmail -f /home/rscholz/.fetchmailrc-notify localhost >/dev/null 2>&1"
                        :path "/home/rscholz/Maildir/notify")))

;; mbox notify @ verified
(if (string-match "verified" zonix-location)

    (add-to-list 'mail-sources
                 '(file :prescript ":> /home/rscholz/Maildir/notify; fetchmail -f /home/rscholz/.fetchmailrc-notify localhost >/dev/null 2>&1"
                        :path "/home/rscholz/Maildir/notify")))

;; Procmail
;(add-to-list 'mail-sources 
;            '(directory :path "~/Mail/spool/"
;                        :suffix ".spool"))

;; Slashdot mit Gnus lesen
;-(add-to-list 'gnus-secondary-select-methods '(nnslashdot ""))

;; Löschen von Backup-Dateien, No Gnus ist stabil.  Öhh.. wirklich?
(setq mail-source-delete-incoming t)

;; Mailsources nur einmal abfragen (schneller)
(setq nnmail-scan-directory-mail-source-once t)

;; Fehler beim Lesen ignorieren (ab Gnus 5.10)
;(setq mail-source-ignore-errors nil)

;; Kai Großjohann in <vafadt3qgj5.fsf@lucy.cs.uni-dortmund.de>
(defun ls6-pop-passwd-from-authinfo ()
  "Get POP password from ~/.authinfo file.
Example line: machine pop password verysecret"
  (require 'nntp)
  (let* ((x (gnus-parse-netrc nntp-authinfo-file))
         (item (gnus-netrc-machine x "pop"))
         (pw (gnus-netrc-get item "password")))
    pw))

;; Usage:
;; (add-to-list 'mail-sources
;;              `(pop :server "foo" :user "bar"
;;                    :password ,(ls6-pop-passwd-from-authinfo)))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Mail Sinks                    (Info-goto-node "(Gnus)Posting Server")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; Mails an einen SMTP-Server senden
;(setq smtpmail-default-smtp-server "mail.home")
;(require 'smtpmail)
;(setq message-send-mail-function 'smtpmail-send-it)
;(setq smtpmail-smtp-server "mail.home")
;(setq smtpmail-local-domain ".home")
;(setq smtpmail-debug-info t)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; References                (Info-goto-node "(Gnus)Finding the Parent")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; Parent eines Articles finden

(if (string-match "verified" zonix-location)

    (setq gnus-refer-article-method
          `(current
;           ,(gnus-server-to-method "nnfolder:archive") ; lokales Archiv
;           ,(gnus-server-to-method "nnml:")            ; normale Mails
            ,(gnus-server-to-method "nnmaildir:")       ; normale Mails
            (nntp "localhost")                          ; lokaler Newsserver
            (nntp "news.individual.de")                 ; News
            (nntp "news.gmane.org")                     ; Mailinglisten-Archiv
            (nntp "news.tohserver.com")                 ; uptime
            (nnweb "refer" (nnweb-type google)))))      ; groups.google.com
  
(if (string-match "home" zonix-location)

    (setq gnus-refer-article-method
          `(current
;           ,(gnus-server-to-method "nnimap:")            ; normale Mails
;           (nnimap "")
            (nntp "news")                               ; lokaler Newsserver
            (nntp "news.individual.de")                 ; News
            (nntp "news.gmane.org")                     ; Mailinglisten-Archiv
            (nntp "news.tohserver.com")                 ; uptime
            (nnweb "refer" (nnweb-type google)))))      ; groups.google.com


;; groups.google.com w3 als Mozilla vorspiegeln
(setq url-package-name "Mozilla"
      url-package-version "4")

;; maximal 1000 Artikel holen
(setq gnus-refer-thread-limit 1000)