Take a look at Trac! It's free, light-weight, web-based interface (of-course you can install it on a local server), has tons of plugins to customize it to your needs.
Few plugins that will make it work as you have mentioned
- TracAccountManager : This plugin allows users to register on your site before they can post bugs. (Also See: 'anonymous account' below)
- webadmin : Allows you to configure trac using the web-interface instead of the command line trac-admin command. (Built in as of Trac 0.11.)
Permissions
Apart from that you can customize permissions as per your requirement. For example: you can set only TICKET_VIEW, and TICKET_CREATE for users who register online.
Anonymous account/Guest account
Trac has a special account (user-name) named "anonymous*, people who are not logged in are assigned this username. If you do not want users to register to create Ticket, you may assign TICKET_VIEW and TICKET_CREATE permissions for "anonymous" account. (I prefer to only set XXXXX_VIEW permissions to this account.)
Bug report/Ticket fields
You can also modify/add/delete ticket(bug report) components (field) as per your requirements. Specify default values for fields, so that developers/users are saved from filling each and every field.
Email Notification
Setting up mail notifications is as easy as editing the trac.ini file under the conf folder under your Trac project folder. Just fill in your server IP/address, username, field. Customize other fields as per your taste.
Other features provided by Trac
- Integrated wiki. Yes! You have a full-blown wiki as part of trac. It's great for creating documentation.
- Customized reports/query: You can create custom query, visually (no need to type, although that's an option) and save them for later use. A query/report is nothing more than a search for bug/ticket list.
- Integration with version control systems: By default Trac supports Subversion. you can browse source online, view visual diffs, view commit logs, and a host of other cool stuff. (We are using GitPlugin to interface it with git)
All these tasks are very simple to do on Trac, (no matter how difficult I make them sound :) )
SideNote
There are myriads of Trac plugins, allowing you to change the complete UI layout/colors, adding charting capabilities and what not. Visit TracHacks website for a comprehensive list of 'hacks' (plugins) available for Trac.