Get a little app to log your time. Use it for some weeks. You should get a metric for how much development work you really did. From now on, estimate in hours / days and multiply by this overhead. Communicate this to your boss, i.e. "I need 20 hours pure development, so that´s 2 weeks with overhead ..."
One thing that is not immediately apparent to non-developers is the cost of task-switching. That is the second thing you can use youyour log for. Every time you have to halt your development to deal with something else, account for 15 minutes of lost development time. Add that up and if it accounts to something meaningful, talk about that figure with your boss. If he questions this overhead, show him some resources on that.
You probably won´t get off the maintenance duty, but perhaps you can help the higher ups to understand the cost of that kind of assignment. Maybe there is a way to organize the tasks better (Maintenance on Mondays, development the rest of the week etc.) or at least to get an understanding why you struggle with timing tasks.