When blending is enabled, this is what is written to the framebuffer:
framebuffer = func(sourceColor * sourceFactor, destinationColor * destinationFactor)
func = the function set by glBlendEquation(). This defaults to addition, in which case func() is a function that takes in two values and adds them together. GL_MAX = max() instead of addition.
sourceColor = the raw color you're writing (RGBA).
sourceFactor = the first argument to glBlendFunc().
destinationColor = the color already in the framebuffer.
destinationFactor = the second argument to glBlendFunc().
If you change the alpha value of the source color, the resulting RGB values are completely unaffected. To me it sounds like you want to multiply the source RGB values by the source alpha, which means you need to call glBlendFunc() with these arguments:
This results in the following blending equation:
framebuffer = max(sourceColor * sourceColor.alpha, destinationColor * 1)