Gnus basic setup for local mail, external mail and newsgroups

This is my .gnus.el

; set a news server
(setq gnus-select-method '(nntp "news.tin.it"))

;; define the "news reading area" to be splitted with 'group',
;; 'summary' and 'article' panels
(gnus-add-configuration
 '(article
   (horizontal 1.0
           (vertical 55 (group 1.0))
           (vertical 1.0
             (summary 0.40 point)
             (article 1.0)))))

(gnus-add-configuration
 '(summary
   (horizontal 1.0
           (vertical 55 (group 1.0))
           (vertical 1.0 (summary 1.0 point)))))

; set a file to store sent email to the group named "sent"
(setq gnus-message-archive-group "sent")

;; This is my posting style: a signature for all the accounts, an x-face header for news accounts
;; and different email addresses depending upon recipient (mail, general news or gmane)
(setq gnus-posting-styles '((".*"
                             (signature-file "~/.signature"))
                                (message-mail-p ;;only for mail
                                      (name "L'Altro Mondo")
                                      (address "info@laltromondo.dynalias.net"))
                                (message-news-p
                                      (name "roughnecks")
                                      ("X-Face" "=(+Ps>|J#c!`_aRz7y`QqE{QE/bx^Md\\^Y@TU}v!:2VSSW?b1WyOYuf};G2e\\5kJrh)$!21[y|qP]4a+WPa&gzcD|w6b){_9j!pXf")
                                      (address "roughnecks@invalid.tld"))
                             (".*gmane.*"
                                (name "roughnecks")
                                (address "other@email.tld"))))



; enable aspell to check written text
(add-hook 'message-mode-hook (lambda () (flyspell-mode 1)))

; ask before delivering a message (as I usually mess up with keybindings)
(setq message-confirm-send t)

; use gnus to read local mail too
(setq gnus-secondary-select-methods '((nnmbox "")))

; enable pgp support
(require 'pgg)

;; Automatically sign when sending mails or posts to gmane
(add-hook 'message-setup-hook
          (lambda ()
           (if (or (message-mail-p)
                      (string-match "gmane" gnus-newsgroup-name))
                      (mml-secure-message-sign-pgpmime))))


;; display a 'button' with infos about signed/encrypted emails, i.e.,
;; show me when a message has been signed or encrypted
(setq gnus-buttonized-mime-types '("multipart/encrypted" "multipart/signed"))


; verify/decrypt only if mml knows about the protocol used
(setq mm-verify-option 'known)
(setq mm-decrypt-option 'known)

;; Select which email is used to sign messages (based on recipient)
;; general email or gmane
(defun select-gpg-user-id ()
  "Select GPG user id based on the group name."
  (if (string-match "gmane" gnus-newsgroup-name)
      (setq pgg-default-user-id "other@email.tld")
    (setq pgg-default-user-id "info@laltromondo.dynalias.net"))
  (message "gpg-user-id set to %s" pgg-default-user-id))

(add-hook 'gnus-summary-mode-hook 'select-gpg-user-id)

;; Always use pgg to sign messages
(setq mml2015-use 'pgg)

;; show the permalinks in the headers (for gwene)

(setq gnus-visible-headers "From:\\|^Newsgroups:\\|^Subject:\\|^Date:\\|^Followup-To:\\|^Reply-To:\\|^Organization:\\|^Summary:\\|^Keywords:\\|^To:\\|^[BGF]?Cc:\\|^Posted-To:\\|^Mail-Copies-To:\\|^Mail-Followup-To:\\|^Apparently-To:\\|^Gnus-Warning:\\|^Resent-From:\\|^X-Sent:\\|^Archived-at:")

And here is my .emacs

;; wrap nicely the lines (otherwise words would be broken exactly at
;; the end of the line
(global-visual-line-mode t)

; self explanatory (use aspell, not ispell)
(setq ispell-program-name "aspell")

;; this is used to speed up things
(setq ispell-extra-args '("--sug-mode=ultra"))

; set my default dictionary to Italian
(setq flyspell-default-dictionary "italian")

;; set a new keybinding to autocorrect mispelled words, as M-TAB and
;; C-. are intercepted by the system
(global-set-key "\C-ca" 'flyspell-auto-correct-word)

Edit 1

In .gnus.el change:

(add-hook 'message-setup-hook

with:

(add-hook 'gnus-message-setup-hook

I found this tip here because i had the same problem, i.e. when you reply to a message (i was using "F" to have quoted parts included in the reply) the tag which is responsible of signing your message wasn't placed at the very first line of the body - it went after the quoted text instead, becoming a normal string which was eventually printed as part of the message body.