When I was a kid, my teachers (several of them, in grade school) taught us that “may” meant permission, so when a clerk asked “May I help you?” They were being deferential—”Do I have your permission to help you?” Use of “may” in this circumstance is still considered to be polite and high class. “Can,” my teachers said, meant ability. So “Can you open this pickle jar? It’s too tight for me,” is appropriate (unless the speaker is being manipulative or something, though most manipulative would be to assume the person can open the jar by using “would,” but I won’t get into that). Anyway, this Retail comic does a nice job of describing the subtleties of these words.
All that said, The language seems to be changing. I wrote some math curriculum for IBM once, and the PhD SMEs we worked with insisted we use “can” even when “may ” was technically more correct. And I see “may” used a lot as a weak version of “might.” On that last usage, if you can use “might” instead of “may,” use “might.” Your writing will have more punch.